pineapple-modules/create.sh

112 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# _ _ _ _____
# | | | | | | | ____|
# | |__| | __ _| | _| |__
# | __ |/ _` | |/ /___ \
# | | | | (_| | < ___) |
# |_| |_|\__,_|_|\_\____/
MODULE_NAME="NOTSPECIFIED"
MODULE_TITLE="NOTSPECIFIED"
MODULE_AUTHOR="NOTSPECIFIED"
MODULE_DESC="NOTSPECIFIED"
print_banner() {
echo " __ ___ ______ _ _____ _ _ "
echo " \ \ / (_) ____(_) | __ (_) | | "
echo " \ \ /\ / / _| |__ _ | |__) | _ __ ___ __ _ _ __ _ __ | | ___ "
echo " \ \/ \/ / | | __| | | | ___/ | '_ \ / _ \/ _\` | '_ \| '_ \| |/ _ \ "
echo " \ /\ / | | | | | | | | | | | | __/ (_| | |_) | |_) | | __/ "
echo " \/ \/ |_|_| |_| |_| |_|_| |_|\___|\__,_| .__/| .__/|_|\___| Mark 7"
echo " Module Creation Helper | | | | "
echo " Version 1.1 |_| |_| "
echo " "
echo " "
}
get_info() {
read -p "[*] Module Name: " MODULE_NAME
read -p "[*] Module Title: " MODULE_TITLE
read -p "[*] Module Author: " MODULE_AUTHOR
read -p "[*] Module Short Description: " MODULE_DESC
sanitize_info
}
sanitize_info() {
# Remove All Spaces from Module Name
MODULE_NAME=${MODULE_NAME// /}
}
create_from_template() {
if [[ ! -d "Misc/module-template" ]]; then
echo "[!!] The template module seems to be missing. Please re-clone this repository and try again."
exit 1
fi
echo "[*] Creating New Module ($MODULE_NAME)."
cp -r Misc/module-template $MODULE_NAME
grep -rl examplemodule $MODULE_NAME/ | xargs sed -i "s/examplemodule/$MODULE_NAME/g"
grep -rl example-module $MODULE_NAME/ | xargs sed -i "s/example-module/$MODULE_NAME/g"
grep -rl example-service $MODULE_NAME/ | xargs sed -i "s/example-service/$MODULE_NAME/g"
grep -rl ExampleModuleComponent $MODULE_NAME/ | xargs sed -i "s/ExampleModuleComponent/${MODULE_NAME}Component/g"
grep -rl ExampleServiceService $MODULE_NAME/ | xargs sed -i "s/ExampleServiceService/${MODULE_NAME}Service/g"
grep -rl ExampleModuleModule $MODULE_NAME/ | xargs sed -i "s/ExampleModuleModule/${MODULE_NAME}Module/g"
grep -rl "the Example Module!" $MODULE_NAME/ | xargs sed -i "s/the Example Module!/${MODULE_NAME}/g"
grep -rl ": \"Example Module" $MODULE_NAME/ | xargs sed -i "s/: \"Example Module/: \"${MODULE_TITLE}/g"
grep -rl "An example module!" $MODULE_NAME/ | xargs sed -i "s/An example module!/${MODULE_DESC}/g"
grep -rl ": \"Hak5" $MODULE_NAME/ | xargs sed -i "s/: \"Hak5/: \"${MODULE_AUTHOR}/g"
mv $MODULE_NAME/projects/examplemodule $MODULE_NAME/projects/$MODULE_NAME
mv $MODULE_NAME/projects/$MODULE_NAME/src/lib/components/example-module.component.html $MODULE_NAME/projects/$MODULE_NAME/src/lib/components/$MODULE_NAME.component.html
mv $MODULE_NAME/projects/$MODULE_NAME/src/lib/components/example-module.component.css $MODULE_NAME/projects/$MODULE_NAME/src/lib/components/$MODULE_NAME.component.css
mv $MODULE_NAME/projects/$MODULE_NAME/src/lib/components/example-module.component.ts $MODULE_NAME/projects/$MODULE_NAME/src/lib/components/$MODULE_NAME.component.ts
mv $MODULE_NAME/projects/$MODULE_NAME/src/lib/services/example-service.service.ts $MODULE_NAME/projects/$MODULE_NAME/src/lib/services/$MODULE_NAME.service.ts
mv $MODULE_NAME/projects/$MODULE_NAME/src/lib/example-module.module.ts $MODULE_NAME/projects/$MODULE_NAME/src/lib/$MODULE_NAME.module.ts
}
ask_prepare_node() {
while true; do
read -p "[!] Would you like to prepare the Angular workspace? [Y/n] " yn
case $yn in
[Yy]* ) prepare_node; break;;
[Nn]* ) return;;
* ) prepare_node; break;;
esac
done
}
prepare_node() {
echo "[*] Preparing the Angular workspace."
cd $MODULE_NAME
if ! command -v npm &> /dev/null; then
echo "[!] NPM does not appear to be installed on this system. Failed to create workspace."
return
fi
npm install
echo "[*] Prepared the Angular workspace."
cd -
}
finish() {
echo "[*] A new module has been created! Exiting."
}
main() {
print_banner
get_info
create_from_template
ask_prepare_node
finish
}
main