diff options
| -rwxr-xr-x | install-pixelated.sh | 39 | ||||
| -rwxr-xr-x | provisioning/modules/pixelated/files/activate_custom_node_modules.sh | 28 | ||||
| -rw-r--r-- | provisioning/modules/pixelated/manifests/source.pp | 17 | 
3 files changed, 79 insertions, 5 deletions
diff --git a/install-pixelated.sh b/install-pixelated.sh index 4679b787..ceff0353 100755 --- a/install-pixelated.sh +++ b/install-pixelated.sh @@ -27,12 +27,15 @@ fi  usage() { echo "Usage: $0 [-v <virtualenv path>]" 1>&2; exit 1; }  VIRTUALENV_PATH=".virtualenv" - -while getopts "v:" OPT; do +CUSTOM_NODE_MODULES_LOCATION="" +while getopts "n:v:" OPT; do      case "${OPT}" in          v)              VIRTUALENV_PATH=${OPTARG}              ;; +        n) # custom node_modules installation +            CUSTOM_NODE_MODULES_LOCATION=${OPTARG} +            ;;          *)              usage              ;; @@ -49,6 +52,31 @@ function check_installed() {          fi  } +function install_node_modules_at_custom_location() { +  local LOCATION="$1" +  local WEBUI_DIR=$(pwd) + +  if [ -e "$WEBUI_DIR/node_modules" ] ; then +    echo "It seems there is already a node_modules folder" 1>&2 +    return +  fi + +  if [ ! -e "$LOCATION" ] ; then +    mkdir "$LOCATION" +    pushd "$LOCATION" + +    ln -s "$WEBUI_DIR/package.json" package.json +    npm install + +    popd +  fi + +  if [ ! -h "node_modules" ] ; then +    rm -Rf "$LOCATION/node_modules" +    ln -s "$LOCATION/node_modules" node_modules +  fi +} +  for dependency in node npm ruby virtualenv git gpg compass; do          check_installed $dependency  done @@ -56,7 +84,12 @@ done  # install web-ui dependencies  cd web-ui  UIPATH=`pwd` -npm install + +if [ -z "$CUSTOM_NODE_MODULES_LOCATION" ] ; then +  npm install +else +  install_node_modules_at_custom_location "$CUSTOM_NODE_MODULES_LOCATION" +fi  node_modules/bower/bin/bower install --config.interactive=false --allow-root  LC_ALL=en_US.UTF-8 ./go build diff --git a/provisioning/modules/pixelated/files/activate_custom_node_modules.sh b/provisioning/modules/pixelated/files/activate_custom_node_modules.sh new file mode 100755 index 00000000..6508053d --- /dev/null +++ b/provisioning/modules/pixelated/files/activate_custom_node_modules.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# +# Copyright (c) 2014 ThoughtWorks, Inc. +# +# Pixelated is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pixelated is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Pixelated. If not, see <http://www.gnu.org/licenses/>. + + +CUSTOM_NODE_MODULES_LOCATION="$HOME/boxed_noded_modules" +VAGRANT_NODE_MODULES="/vagrant/web-ui/node_modules" + +export NODE_PATH="$CUSTOM_NODE_MODULES_LOCATION/node_modules" + +if [ ! -e $VAGRANT_NODE_MODULES ] ; then +    ln -s $CUSTOM_NODE_MODULES_LOCATION $VAGRANT_NODE_MODULES +fi + + diff --git a/provisioning/modules/pixelated/manifests/source.pp b/provisioning/modules/pixelated/manifests/source.pp index 0026ed3f..c84eecfe 100644 --- a/provisioning/modules/pixelated/manifests/source.pp +++ b/provisioning/modules/pixelated/manifests/source.pp @@ -9,7 +9,8 @@ class pixelated::source {      'libffi-dev',      'g++',      'ruby-dev', -    'libsqlite3-dev' ]: +    'libsqlite3-dev', +    'libfontconfig1']:      ensure => latest    } @@ -29,7 +30,7 @@ class pixelated::source {      exec { 'install-pixelated':        environment => 'USERNAME=vagrant', -      command     => "/vagrant/install-pixelated.sh -v \"${virtualenv_path}\"", +      command     => "/vagrant/install-pixelated.sh -v \"${virtualenv_path}\" -n /home/vagrant/boxed_node_modules",        cwd         => '/vagrant',        user        => 'vagrant',        timeout     => 0 @@ -41,6 +42,18 @@ class pixelated::source {        user    => 'vagrant',        require => Exec['install-pixelated']      } + +    file { '/home/vagrant/.activate_custom_node_modules.sh': +      owner => 'vagrant', +      mode  => '0600', +      source => 'puppet:///modules/pixelated/activate_custom_node_modules.sh', +    } +    exec { 'add_custom_node_modules_to_bashrc': +      command => "/bin/bash -c 'echo \"source /home/vagrant/.activate_custom_node_modules.sh\" >> /home/vagrant/.bashrc'", +      unless  => "/bin/grep \"source /home/vagrant/.activate_custom_node_modules.sh\" /home/vagrant/.bashrc", +      user    => 'vagrant', +      require => [Exec['install-pixelated'], File['/home/vagrant/.activate_custom_node_modules.sh']] +    }    }    Stage['main'] -> Stage['install_pixelated']  | 
