shell/gen-makefile

65 lines
1.5 KiB
Plaintext
Raw Normal View History

#!/bin/bash
mv Makefile Makefile.bak
2022-08-19 13:26:09 +00:00
cat << EOF >> Makefile
# Autogenerated at $(date +'%d.%m.%Y %H:%M') using ${BASH_SOURCE[0]}
.DEFAULT_GOAL := help
#===============================================
# Scripts listed in ./packs
#===============================================
2022-08-19 13:26:09 +00:00
EOF
2022-07-04 11:34:00 +00:00
for file in ./packs/*; do
cat "$file" >> Makefile
2022-07-04 14:22:05 +00:00
echo >> Makefile
2022-07-04 11:34:00 +00:00
done;
cat << EOF >> Makefile
#===============================================
# Scripts listed in ./install
#===============================================
EOF
2022-07-04 11:34:00 +00:00
for file in ./install/*; do
name=${file##*/}
name=${name%.sh}
2022-07-04 11:08:37 +00:00
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>'
2022-08-25 14:33:02 +00:00
echo -e "# ${desc}\n${name}:\n\t@${file}\n" >> Makefile
done;
cat << "EOF" >> Makefile
self:
@./gen-makefile
2022-08-25 14:33:02 +00:00
help: Makefile
@echo "Ubuntu software installator"
@echo
@echo "Usage:"
2022-08-25 14:33:02 +00:00
@echo "\tmake help\t - Show this help"
@echo "\tmake self\t - Regenerate Makefile (alias of ./gen-makefile)"
@echo "\tmake GOAL\t - Install software"
@echo "\tmake ^GOAL\t - Upgrade software"
@echo "\tmake @GOAL\t - Uninstall software"
@echo
@echo "You can combine GOALs, e.g. 'make @docker docker' will reinstall docker."
@echo
@echo "Available GOALs:"
2022-08-25 14:33:02 +00:00
@sed -n '/^#/{N;s/# *\(.*\)\n\([^# .].*:\)/\t\2\1/p}' $< | column -ts ':'
+%:
@$(MAKE) $*
^%:
@./upgrade/$*
@%:
@./uninstall/$*
EOF
echo "New ./Makefile has been generated!"
echo "Old one has been saved as ./Makefile.bak"
echo
2022-08-25 14:33:02 +00:00
make