jetzig/init.bash
2024-01-21 12:34:35 +00:00

73 lines
1.4 KiB
Bash

#!/bin/bash
printf 'Enter project name (default: "jetzig-demo"): '
read -a project
if [ -z "${project}" ]
then
project="jetzig-demo"
fi
pwd="$(pwd)"
printf "Enter project parent directory (default: \"${pwd}\"): "
read -a dir
if [ -z "${dir}" ]
then
dir="${pwd}"
fi
set -eu
project_path="${dir}/${project}"
echo
echo "Initializing new project in: ${project_path}"
mkdir -p "${project_path}"
do_exit () {
echo "Error fetching '$1':"
echo "$2"
echo "Exiting."
exit 1
}
remote_base=https://raw.githubusercontent.com/jetzig-framework/jetzig/main/src/init
objects=(
'build.zig'
'build.zig.zon'
'src/main.zig'
'src/app/views/index.zig'
'src/app/views/index.zmpl'
)
for object in "${objects[@]}"
do
printf "Creating output: ${object} "
url="${remote_base}/${object}"
mkdir -p "$(dirname "${project_path}/${object}")"
set +e
output=$(curl -s --fail --output "${project_path}/${object}" "${url}" 2>&1)
set -e
if (($?))
then
do_exit "${url}" "${output}"
else
echo "✅"
fi
done
sed -i.bak -e "s,%%project_name%%,${project},g" 'src/build.zig' && rm build.zig.bak
sed -i.bak -e "s,%%project_name%%,${project},g" 'src/build.zig.zon' && rm build.zig.zon.bak
echo
echo "Finished creating new project in: ${project_path}"
echo
echo "Run your new project:"
echo
echo " cd '${project_path}'"
echo ' zig build run'
echo
echo "Welcome to Jetzig. ✈️🦎 "
echo