Merge branch 'master' of github.com:ZeusWPI/OBUS into master

This commit is contained in:
Hannes Klinckaert 2020-09-09 14:44:21 +02:00
commit 4db6ca04c1

View file

@ -1,66 +1,70 @@
#!/bin/bash #!/bin/sh
# "Bash strict mode", see http://redsymbol.net/articles/unofficial-bash-strict-mode/ print() { printf '%s' "$1"; }
set -euo pipefail println() { printf '%s\n' "$1"; }
IFS=$'\n\t'
# Go to the current working directory so things work if people are in a different one and e.g. use ../src/new_module.sh # Go to the current working directory so things work if people are in a different one and e.g. use ../src/new_module.sh
cd "$(dirname "$0")" cd -- "`dirname "$0"`"
# Make sure the template dir exists so we don't let people enter details unnecessarily # Make sure the template dir exists so we don't let people enter details unnecessarily
if [ ! -d ./template_module ]; then if [ ! -d ./template_module ]; then
echo "template_module doesn't exist" >&2 println "template_module doesn't exist" >&2
exit 1 exit 1
fi fi
# Ask for module name # Ask for module name
read -p "Name of module (e.g. Oil gauge): " module_name print "Name of module (e.g. Oil gauge): "
if [[ $module_name == *%* ]]; then read module_name
echo "Module name must not contain %" >&2
exit 1
fi
# Determine a "clean" module name: lowercase, no spaces # Determine a "clean" module name for paths: lowercase, no spaces
module="$(tr [A-Z] [a-z] <<< "$module_name")" module="`print "$module_name" | tr [A-Z] [a-z] | sed "s/ /_/g;s/'//g"`"
module="${module// /_}"
module="${module//\'/}"
# Make sure `modules` directory exists and target directory doesn't # Make sure `modules` directory exists and target directory doesn't
mkdir -p modules mkdir -p modules
module_dir="modules/$module" module_dir="modules/$module"
if [[ -e "$module_dir" ]]; then if [ -e "$module_dir" ]; then
echo "$module_dir already exists" >&2 println "$module_dir already exists" >&2
exit 1 exit 1
fi fi
# Ask for author name # Ask for author name
read -p "How would you like to be credited? Your name: " author print "How would you like to be credited? Your name: "
if [[ $author == *%* ]]; then read author
echo "Author name must not contain %" >&2
exit 1
fi
# Copy the template directory # Copy the template directory
cp -r template_module "$module_dir" cp -r -- template_module "$module_dir"
cd "$module_dir" cd -- "$module_dir"
# Disallow % in fields that will be used in %-delimited ed substitution
assert_no_percent() {
case "$1" in
*"%"*) println "$2 must not contain %" >&2; exit 1 ;;
esac
}
assert_no_percent "$author" "Author name"
assert_no_percent "$module_name" "Module name"
assert_no_percent "$module" "Module path name"
# Fill in the blanks in the template # Fill in the blanks in the template
if [ "$(uname)" == "Darwin" ]; then # `sed -i` is not portable so we create something like it ourselves
sed -i '' -e " reced() {
s/{YEAR}/$(date +%Y)/ for file in "$1"/*; do
s%{AUTHOR}%$author% if [ -f "$file" ]; then
s%{MODULE_NAME}%$module_name% ed "$file" <<HERE
s%{MODULE}%$module% %s/{YEAR}/$(date +%Y)/
" $(find . -type f) %s%{AUTHOR}%$author%
else %s%{MODULE_NAME}%$module_name%
sed -i " %s%{MODULE}%$module%
s/{YEAR}/$(date +%Y)/ wq
s%{AUTHOR}%$author% HERE
s%{MODULE_NAME}%$module_name% elif [ -d "$file" ]; then
s%{MODULE}%$module% reced "$file"
" $(find -type f) fi
fi done
# Arduino IDE requires .ino sketches to have the same name as their directory }
mv main.ino "$module.ino" reced .
echo "The basic structure for your module is now ready in $module_dir" # Arduino IDE requires .ino sketches to have the same name as their directory
mv -- main.ino "$module.ino"
println "The basic structure for your module is now ready in $module_dir"