165 lines
No EOL
5.3 KiB
Bash
165 lines
No EOL
5.3 KiB
Bash
#!/bin/bash
|
|
|
|
Command() {
|
|
# Check for developer mode through the database library.
|
|
if ! dbValidate "blueprint.developerEnabled"; then PRINT FATAL "Developer mode is not enabled.";exit 2; fi
|
|
|
|
# To prevent accidental wiping of your dev directory, you are unable to initialize another extension
|
|
# until you wipe the contents of the .blueprint/dev directory.
|
|
if [[ -n $(find .blueprint/dev -maxdepth 1 -type f -not -name ".gitkeep" -print -quit) ]]; then
|
|
PRINT FATAL "Development directory contains files. To protect you against accidental data loss, you are unable to initialize another extension unless you clear the '.blueprint/dev' folder."
|
|
exit 2
|
|
fi
|
|
|
|
ask_template() {
|
|
PRINT INPUT "Choose an extension template:"
|
|
echo -e "$(curl 'https://raw.githubusercontent.com/BlueprintFramework/templates/main/repository' 2>> "$BLUEPRINT__DEBUG")"
|
|
read -r ASKTEMPLATE
|
|
REDO_TEMPLATE=false
|
|
|
|
# Template should not be empty
|
|
if [[ ${ASKTEMPLATE} == "" ]]; then
|
|
PRINT WARNING "Template should not be empty."
|
|
REDO_TEMPLATE=true
|
|
fi
|
|
# Unknown template.
|
|
if [[ $(echo -e "$(curl "https://raw.githubusercontent.com/BlueprintFramework/templates/main/${ASKTEMPLATE}/TemplateConfiguration.yml" 2>> "$BLUEPRINT__DEBUG")") == "404: Not Found" ]]; then
|
|
PRINT WARNING "Unknown template, please choose a valid option."
|
|
REDO_TEMPLATE=true
|
|
fi
|
|
|
|
# Ask again if response does not pass validation.
|
|
if [[ ${REDO_TEMPLATE} == true ]]; then ASKTEMPLATE=""; ask_template; fi
|
|
}
|
|
|
|
ask_name() {
|
|
INPUT_DEFAULT="SpaceInvaders"
|
|
PRINT INPUT "Name [$INPUT_DEFAULT]:"
|
|
read -r ASKNAME
|
|
REDO_NAME=false
|
|
|
|
# Name should not be empty
|
|
if [[ ${ASKNAME} == "" ]]; then
|
|
ASKNAME="$INPUT_DEFAULT"
|
|
fi
|
|
|
|
# Ask again if response does not pass validation.
|
|
if [[ ${REDO_NAME} == true ]]; then ASKNAME=""; ask_name; fi
|
|
}
|
|
|
|
ask_identifier() {
|
|
INPUT_DEFAULT="spaceinvaders"
|
|
PRINT INPUT "Identifier [$INPUT_DEFAULT]:"
|
|
read -r ASKIDENTIFIER
|
|
REDO_IDENTIFIER=false
|
|
|
|
# Identifier should not be empty
|
|
if [[ ${ASKIDENTIFIER} == "" ]]; then
|
|
ASKIDENTIFIER="$INPUT_DEFAULT"
|
|
fi
|
|
# Identifier should be a-z.
|
|
if ! [[ ${ASKIDENTIFIER} =~ [a-z] ]]; then
|
|
PRINT WARNING "Identifier should only contain a-z characters."
|
|
REDO_IDENTIFIER=true
|
|
fi
|
|
|
|
# Ask again if response does not pass validation.
|
|
if [[ ${REDO_IDENTIFIER} == true ]]; then ASKIDENTIFIER=""; ask_identifier; fi
|
|
}
|
|
|
|
ask_description() {
|
|
INPUT_DEFAULT="Shoot down space aliens!"
|
|
PRINT INPUT "Description [$INPUT_DEFAULT]:"
|
|
read -r ASKDESCRIPTION
|
|
REDO_DESCRIPTION=false
|
|
|
|
# Description should not be empty
|
|
if [[ ${ASKDESCRIPTION} == "" ]]; then
|
|
ASKDESCRIPTION="$INPUT_DEFAULT"
|
|
fi
|
|
|
|
# Ask again if response does not pass validation.
|
|
if [[ ${REDO_DESCRIPTION} == true ]]; then ASKDESCRIPTION=""; ask_description; fi
|
|
}
|
|
|
|
ask_version() {
|
|
INPUT_DEFAULT="1.0"
|
|
PRINT INPUT "Version [$INPUT_DEFAULT]:"
|
|
read -r ASKVERSION
|
|
REDO_VERSION=false
|
|
|
|
# Version should not be empty
|
|
if [[ ${ASKVERSION} == "" ]]; then
|
|
ASKVERSION="$INPUT_DEFAULT"
|
|
fi
|
|
|
|
# Ask again if response does not pass validation.
|
|
if [[ ${REDO_VERSION} == true ]]; then ASKVERSION=""; ask_version; fi
|
|
}
|
|
|
|
ask_author() {
|
|
INPUT_DEFAULT="byte"
|
|
PRINT INPUT "Author [$INPUT_DEFAULT]:"
|
|
read -r ASKAUTHOR
|
|
REDO_AUTHOR=false
|
|
|
|
# Author should not be empty
|
|
if [[ ${ASKAUTHOR} == "" ]]; then
|
|
ASKAUTHOR="$INPUT_DEFAULT"
|
|
fi
|
|
|
|
# Ask again if response does not pass validation.
|
|
if [[ ${REDO_AUTHOR} == true ]]; then ASKAUTHOR=""; ask_author; fi
|
|
}
|
|
|
|
ask_template
|
|
ask_name
|
|
ask_identifier
|
|
ask_description
|
|
ask_version
|
|
ask_author
|
|
|
|
tnum=${ASKTEMPLATE}
|
|
PRINT INFO "Fetching templates.."
|
|
if [[ $(php artisan bp:latest) != "$VERSION" ]]; then PRINT WARNING "Active Blueprint version is not latest, you might run into compatibility issues."; fi
|
|
cd .blueprint/tmp || cdhalt
|
|
git clone "https://github.com/BlueprintFramework/templates.git"
|
|
cd "${FOLDER}"/.blueprint || cdhalt
|
|
cp -R tmp/templates/* extensions/blueprint/private/build/templates/
|
|
rm -R tmp/templates
|
|
cd "${FOLDER}" || cdhalt
|
|
|
|
eval "$(parse_yaml "$__BuildDir"/templates/"${tnum}"/TemplateConfiguration.yml t_)"
|
|
|
|
PRINT INFO "Building template.."
|
|
mkdir -p .blueprint/tmp/init
|
|
cp -R "$__BuildDir"/templates/"${tnum}"/contents/* .blueprint/tmp/init/
|
|
|
|
sed -i \
|
|
-e "s~␀name␀~${ASKNAME}~g" \
|
|
-e "s~␀identifier␀~${ASKIDENTIFIER}~g" \
|
|
-e "s~␀description␀~${ASKDESCRIPTION}~g" \
|
|
-e "s~␀ver␀~${ASKVERSION}~g" \
|
|
-e "s~␀author␀~${ASKAUTHOR}~g" \
|
|
-e "s~␀version␀~${VERSION}~g" \
|
|
-e "s~\[name\]~${ASKNAME}~g" \
|
|
-e "s~\[identifier\]~${ASKIDENTIFIER}~g" \
|
|
-e "s~\[description\]~${ASKDESCRIPTION}~g" \
|
|
-e "s~\[ver\]~${ASKVERSION}~g" \
|
|
-e "s~\[author\]~${ASKAUTHOR}~g" \
|
|
-e "s~\[version\]~${VERSION}~g" \
|
|
".blueprint/tmp/init/conf.yml"
|
|
|
|
# Return files to folder.
|
|
cp -R .blueprint/tmp/init/* .blueprint/dev/
|
|
|
|
# Remove tmp files.
|
|
PRINT INFO "Cleaning up build files.."
|
|
rm -R \
|
|
".blueprint/tmp" \
|
|
"$__BuildDir/templates/"*
|
|
mkdir -p .blueprint/tmp
|
|
|
|
PRINT SUCCESS "Extension files initialized and imported to '.blueprint/dev'."
|
|
sendTelemetry "INITIALIZE_DEVELOPMENT_EXTENSION" >> "$BLUEPRINT__DEBUG"
|
|
} |