summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-01-28 12:10:08 +0100
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-01-28 12:11:57 +0100
commit2ff2612cfd50811f975a320a66402f0b6976e54d (patch)
tree049fe569a3ec5a0f143a8f938706b8ade80bf1df
parent95204fb02aa9ea4e030b972685407e35a0b02f65 (diff)
Issue #252: Node modules are now installed in the box.
- They are symlinked into /vagrant/web-ui/node_modules
-rwxr-xr-xinstall-pixelated.sh39
-rwxr-xr-xprovisioning/modules/pixelated/files/activate_custom_node_modules.sh28
-rw-r--r--provisioning/modules/pixelated/manifests/source.pp17
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']