implemented the --labels option and assemble script now runs the assembled Installomator.sh with remaining arguments

This commit is contained in:
Armin Briegel
2021-04-22 16:37:11 +02:00
parent fbc6b61add
commit 0e093dd3b5
2 changed files with 52 additions and 3 deletions

View File

@@ -13,8 +13,8 @@ assemble.sh
This will put together the fragments and labels from the default location (`fragments` and `fragments/labels`) and write it to `build/Installomator.sh` This will put together the fragments and labels from the default location (`fragments` and `fragments/labels`) and write it to `build/Installomator.sh`
``` ```
assemble.sh -- <label> assemble.sh <label>
assemnle.sh -- <label> <VAR=value>... assemnle.sh <label> <VAR=value>...
``` ```
This will put together the fragments and labels from the default location, create the script in `build/Installomator.sh` and immediately run it with the given arguments. (Note: the script will run in debug mode, unless you specifically override this with `DEBUG=0`.) This will put together the fragments and labels from the default location, create the script in `build/Installomator.sh` and immediately run it with the given arguments. (Note: the script will run in debug mode, unless you specifically override this with `DEBUG=0`.)

View File

@@ -1,5 +1,35 @@
#!/bin/zsh #!/bin/zsh
# parse arguments
zparseopts -D -E -a opts s -script p -pkg n -notarize h -help -labels+:=label_args l+:=label_args
if (( ${opts[(I)(-h|--help)]} )); then
echo "usage: assemble.sh [--script|--pkg|--notarize] [-labels path/to/labels ...] [arguments...]"
echo
echo "builds and runs the installomator script from the fragements."
echo "additional arguments are passed into the Installomator script for testing."
exit
fi
if (( ${opts[(I)(-s|--script)]} )); then
buildScript=1
fi
if (( ${opts[(I)(-p|--pkg)]} )); then
buildScript=1
buildPkg=1
fi
if (( ${opts[(I)(-n|--notarize)]} )); then
buildScript=1
buildPkg=1
notarizePkg=1
fi
label_flags=( -l --labels )
# array substraction
label_paths=${label_args:|label_flags}
#setup some folders #setup some folders
script_dir=$(dirname ${0:A}) script_dir=$(dirname ${0:A})
@@ -9,6 +39,9 @@ destination_file="$build_dir/Installomator.sh"
fragments_dir="$repo_dir/fragments" fragments_dir="$repo_dir/fragments"
labels_dir="$fragments_dir/labels" labels_dir="$fragments_dir/labels"
# add default labels_dir to label_paths
label_paths+=$labels_dir
fragment_files=( header.txt version.txt functions.txt arguments.txt main.txt ) fragment_files=( header.txt version.txt functions.txt arguments.txt main.txt )
# check if fragment files exist (and are readable) # check if fragment files exist (and are readable)
@@ -44,7 +77,13 @@ cat "$fragments_dir/functions.txt" >> $destination_file
cat "$fragments_dir/arguments.txt" >> $destination_file cat "$fragments_dir/arguments.txt" >> $destination_file
# all the labels # all the labels
cat "$labels_dir"/*.txt >> $destination_file for lpath in $label_paths; do
if [[ -d $lpath ]]; then
cat "$lpath"/*.txt >> $destination_file
else
echo "$lpath not a directory, skipping..."
fi
done
# add the footer # add the footer
cat "$fragments_dir/main.txt" >> $destination_file cat "$fragments_dir/main.txt" >> $destination_file
@@ -52,3 +91,13 @@ cat "$fragments_dir/main.txt" >> $destination_file
# set the executable bit # set the executable bit
chmod +x $destination_file chmod +x $destination_file
# run script with remaining arguments
$destination_file "$@"
# TODO: build copy the script to root of repo when flag is set
# TODO: build a pkg when flag is set
# TODO: notarize when flag is set