90 lines
2.5 KiB
Bash
Executable File
90 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
MODULENAME=$(basename $PWD)
|
|
|
|
check_workspace() {
|
|
if [[ ! -d "node_modules" ]]; then
|
|
while true; do
|
|
read -p "[!!] The Angular workspace has not been prepared. Would you like to do it now? [Y\n] " yn
|
|
case $yn in
|
|
[Yy]* ) prepare_workspace; break;;
|
|
[Nn]* ) exit 1;;
|
|
* ) prepare_workspace; break;;
|
|
esac
|
|
done
|
|
fi
|
|
}
|
|
|
|
prepare_workspace() {
|
|
echo "[*] Preparing the Angular workspace."
|
|
|
|
if ! command -v npm &> /dev/null; then
|
|
echo "[!] NPM does not appear to be installed on this system. Failed to create workspace."
|
|
return
|
|
fi
|
|
|
|
if ! npm install &> /dev/null; then
|
|
echo "[!] Failed to prepare workspace. Run npm install to see why."
|
|
return
|
|
fi
|
|
|
|
echo "[*] Prepared the Angular workspace successfully."
|
|
}
|
|
|
|
build_module() {
|
|
ng build --prod > /dev/null 2>&1
|
|
RET=$?
|
|
|
|
if [[ $RET -ne 0 ]]; then
|
|
echo "[!] Angular Build Failed: Run 'ng build --prod' to figure out why."
|
|
exit 1
|
|
else
|
|
echo "[*] Angular Build Succeeded"
|
|
fi
|
|
|
|
# Step 2: Copy the required files to the build output
|
|
cp -r projects/$MODULENAME/src/module.svg dist/$MODULENAME/bundles/
|
|
cp -r projects/$MODULENAME/src/module.json dist/$MODULENAME/bundles/
|
|
cp -r projects/$MODULENAME/src/module.py dist/$MODULENAME/bundles/ > /dev/null 2>&1
|
|
cp -r projects/$MODULENAME/src/module.php dist/$MODULENAME/bundles/ > /dev/null 2>&1
|
|
cp -r projects/$MODULENAME/src/assets/ dist/$MODULENAME/bundles/ > /dev/null 2>&1
|
|
|
|
# Step 3: Clean up
|
|
rm -rf dist/$MODULENAME/bundles/*.map
|
|
rm -rf dist/$MODULENAME/bundles/*.min*
|
|
rm -rf bundletmp
|
|
mv dist/$MODULENAME/bundles/ bundletmp
|
|
rm -rf dist/$MODULENAME/*
|
|
mv bundletmp/* dist/$MODULENAME/
|
|
rm -rf bundletmp
|
|
}
|
|
|
|
package() {
|
|
VERS=$(cat dist/$MODULENAME/module.json | grep "version" | awk '{split($0, a, ": "); gsub("\"", "", a[2]); gsub(",", "", a[2]); print a[2]}')
|
|
rm -rf $MODULENAME-$VERS.tar.gz
|
|
echo "[*] Packaging $MODULENAME (Version $VERS)"
|
|
cd dist/
|
|
tar -pczf $MODULENAME-$VERS.tar.gz $MODULENAME
|
|
mv $MODULENAME-$VERS.tar.gz ../
|
|
cd ../
|
|
}
|
|
|
|
copy_to_device() {
|
|
echo "[*] Copying module to WiFi Pineapple via SCP"
|
|
scp -r dist/$MODULENAME root@172.16.42.1:/pineapple/modules
|
|
}
|
|
|
|
main() {
|
|
check_workspace
|
|
build_module
|
|
|
|
if [[ $1 == "package" ]]; then
|
|
package
|
|
elif [[ $1 == "copy" ]]; then
|
|
copy_to_device
|
|
fi
|
|
|
|
echo "[*] Success!"
|
|
}
|
|
|
|
main $1 |