From c1688d281dc2af0f4828cc63e5352e50491ad8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonin=20D=C3=A9cimo?= Date: Mon, 28 Sep 2015 09:55:20 +0200 Subject: [PATCH] Add main function. Update Makefile accordingly. --- Makefile | 38 +++++++-------- love-release.sh | 122 ++++++++++++++++++++++++------------------------ 2 files changed, 80 insertions(+), 80 deletions(-) diff --git a/Makefile b/Makefile index 4cc82d3..491a074 100644 --- a/Makefile +++ b/Makefile @@ -12,19 +12,18 @@ SED_INSTALL_DIR=$(shell echo "$(INSTALL_DIR)" | sed -e 's/[\/&]/\\&/g') love-release: deps clean mkdir -p '$(BUILD_DIR)' - longopt=$$(grep "^LONG_OPTIONS" love-release.sh | sed -Ee 's/LONG_OPTIONS="(.*)"/\1/'); \ + longopt=$$(grep -m1 "LONG_OPTIONS" love-release.sh | sed -E 's/.*LONG_OPTIONS="(.*)"/\1/'); \ for file in scripts/*.sh; do \ - s="$$(grep -E -m 1 "^OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/OPTIONS=['\"]?//" -e "s/['\"]?$$//")"; \ - short="$${s}$${short}"; \ - s="$$(echo "$$s" | sed -e "s/[:]*$$//")"; \ - l="$$s$$(echo "$$longopt" | sed -e "s/,/,$${s}/g")"; \ - ll="$$(grep -E -m 1 "^LONG_OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/LONG_OPTIONS=['\"]?//" -e "s/['\"]?$$//" -e "s/,/,$${s}/g")"; \ - if [[ -n $$ll ]]; then l="$${l},$${s}$${ll}"; fi; \ - long="$${l},$${long}"; \ - shelp="$$shelp\\n\\ -$$(grep "init_module" $$file | sed -Ee 's/init_module //' -e 's/" "/ /g' -e "s/\"//g" | awk -F "\t" '{print($$3," ",$$1)}')\\\\"; \ + s="$$(grep -E -m1 "^OPTIONS" "$$file" | sed -E "s/OPTIONS=(['\"]?)(.*)\1/\2/")"; \ + short="$${short}$${s}"; \ + s="$${s:0:1}"; \ + ll=$$(grep -E -m1 "^LONG_OPTIONS" "$$file" | sed -E "s/LONG_OPTIONS=(['\"]?)(.*)\1/\2/"); \ + long="$${long},$${s}$${longopt//,/,$$s}"; \ + if [[ -n $$ll ]]; then long="$${long},$${s}$${ll//,/,$$s}"; fi; \ + shelp="$$shelp\\n\\ -$$(grep "init_module" $$file | sed -Ee 's/init_module //' -e 's/" "/ /g' -e "s/\"//g" | awk -F "\t" '{print($$3," ",$$1)}')\\"; \ done; \ shelp="$$shelp\\n"; \ - sed -Ee "s/^OPTIONS=(['\"]?)/OPTIONS=\1$$short/" -e "s/^LONG_OPTIONS=(['\"]?)/LONG_OPTIONS=\1$$long/" \ + sed -Ee "s/[^_]OPTIONS=(['\"]?)/ OPTIONS=\1$$short/" -e "s/LONG_OPTIONS=(['\"]?)(.*)\1/LONG_OPTIONS=\1\2$$long\1/" \ -e 's/INSTALLED=false/INSTALLED=true/' \ -e 's/SCRIPTS_DIR="scripts"/SCRIPTS_DIR="$(SED_INSTALL_DIR)\/scripts"/' \ -e "$$(echo "$$(sed -n '/^EndOfSHelp/=' love-release.sh) i \\$$(printf "$$shelp")")" love-release.sh > '$(BUILD_DIR)/love-release'; \ @@ -43,22 +42,21 @@ install: embedded: clean mkdir -p '$(BUILD_DIR)' - longopt=$$(grep "^LONG_OPTIONS" love-release.sh | sed -Ee 's/LONG_OPTIONS="(.*)"/\1/'); \ + longopt=$$(grep -m1 "LONG_OPTIONS" love-release.sh | sed -E 's/.*LONG_OPTIONS="(.*)"/\1/'); \ for file in scripts/*.sh; do \ module="$$(basename -s '.sh' "$$file")"; \ content='(source <(cat <<\EndOfModule'$$'\n'"$$(cat $$file)"$$'\n''EndOfModule'$$'\n''))'$$'\n''default_module'$$'\n\n'; \ echo "$$content" >> "$(BUILD_DIR)/tmp"; \ - s="$$(grep -E -m 1 "^OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/OPTIONS=['\"]?//" -e "s/['\"]?$$//")"; \ - short="$${s}$${short}"; \ - s="$$(echo "$$s" | sed -e "s/[:]*$$//")"; \ - l="$$s$$(echo "$$longopt" | sed -e "s/,/,$${s}/g")"; \ - ll="$$(grep -E -m 1 "^LONG_OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/LONG_OPTIONS=['\"]?//" -e "s/['\"]?$$//" -e "s/,/,$${s}/g")"; \ - if [[ -n $$ll ]]; then l="$${l},$${s}$${ll}"; fi; \ - long="$${l},$${long}"; \ - shelp="$$shelp\\n\\ -$$(grep "init_module" $$file | sed -Ee 's/init_module //' -e 's/" "/ /g' -e "s/\"//g" | awk -F "\t" '{print($$3," ",$$1)}')\\\\"; \ + s="$$(grep -E -m1 "^OPTIONS" "$$file" | sed -E "s/OPTIONS=(['\"]?)(.*)\1/\2/")"; \ + short="$${short}$${s}"; \ + s="$${s:0:1}"; \ + ll=$$(grep -E -m1 "^LONG_OPTIONS" "$$file" | sed -E "s/LONG_OPTIONS=(['\"]?)(.*)\1/\2/"); \ + long="$${long},$${s}$${longopt//,/,$$s}"; \ + if [[ -n $$ll ]]; then long="$${long},$${s}$${ll//,/,$$s}"; fi; \ + shelp="$$shelp\\n\\ -$$(grep "init_module" $$file | sed -Ee 's/init_module //' -e 's/" "/ /g' -e "s/\"//g" | awk -F "\t" '{print($$3," ",$$1)}')\\"; \ done; \ shelp="$$shelp\\n"; \ - sed -Ee "s/^OPTIONS=(['\"]?)/OPTIONS=\1$$short/" -e "s/^LONG_OPTIONS=(['\"]?)/LONG_OPTIONS=\1$$long/" \ + sed -Ee "s/[^_]OPTIONS=(['\"]?)/ OPTIONS=\1$$short/" -e "s/LONG_OPTIONS=(['\"]?)(.*)\1/LONG_OPTIONS=\1\2$$long\1/" \ -e 's/EMBEDDED=false/EMBEDDED=true/' \ -e '/include_scripts_here$$/r $(BUILD_DIR)/tmp' \ -e "$$(echo "$$(sed -n '/^EndOfSHelp/=' love-release.sh) i \\$$(printf "$$shelp")")" love-release.sh > '$(BUILD_DIR)/love-release.sh'; diff --git a/love-release.sh b/love-release.sh index 75118ec..bc387a5 100755 --- a/love-release.sh +++ b/love-release.sh @@ -388,74 +388,76 @@ exit_module () { esac } - - # Main +main () { + check_deps -check_deps + # Get latest LÖVE version number + gen_version $LOVE_DEF_VERSION + LOVE_WEB_VERSION=$(curl -s https://love2d.org/releases.xml | grep -m 2 "" | tail -n 1 | grep -Eo "[0-9]+.[0-9]+.[0-9]+") + gen_version $LOVE_WEB_VERSION -# Get latest LÖVE version number -gen_version $LOVE_DEF_VERSION -LOVE_WEB_VERSION=$(curl -s https://love2d.org/releases.xml | grep -m 2 "<title>" | tail -n 1 | grep -Eo "[0-9]+.[0-9]+.[0-9]+") -gen_version $LOVE_WEB_VERSION + INSTALLED=false + EMBEDDED=false -INSTALLED=false -EMBEDDED=false + DEFAULT_MODULE=true -DEFAULT_MODULE=true + TITLE="$(basename $(pwd))" + PROJECT_DIR="$PWD" + RELEASE_DIR=releases + CACHE_DIR=~/.cache/love-release + FILES=() + EXCLUDE=() -TITLE="$(basename $(pwd))" -PROJECT_DIR="$PWD" -RELEASE_DIR=releases -CACHE_DIR=~/.cache/love-release -FILES=() -EXCLUDE=() - -OPTIONS="La:d:e:hi:l:p:r:t:u:v:x:" -LONG_OPTIONS="author:,clean,description:,email:,exclude:,help,icon:,love:,pkg:,release:,title:,url:,version:" -ARGS=$(getopt -o "$OPTIONS" -l "$LONG_OPTIONS" -n 'love-release' -- "$@") -if (( $? != 0 )); then short_help; exit_module "options"; fi -eval set -- "$ARGS" -read_options -while [[ $1 != '--' ]]; do shift; done; shift -for arg do - FILES+=( "$arg" ) -done -if (( ${#FILES} == 0 )); then FILES+=( "." ); fi -eval set -- "$ARGS" - -if [[ $INSTALLED == false && $EMBEDDED == false ]]; then - exit_module "undef" "love-release has not been installed, and is not embedded into one script." -fi - -if [[ ! -f "main.lua" ]]; then - >&2 echo "No main.lua file was found." - exit_module 1 -fi - -if [[ $EMBEDDED == true ]]; then - : # include_scripts_here -elif [[ $INSTALLED == true ]]; then - SCRIPTS_DIR="scripts" - for file in "$SCRIPTS_DIR"/*.sh; do - (source "$file") - default_module + OPTIONS="La:d:e:hi:l:p:r:t:u:v:x:" + LONG_OPTIONS="author:,clean,description:,email:,exclude:,help,icon:,love:,pkg:,release:,title:,url:,version:" + ARGS=$(getopt -o "$OPTIONS" -l "$LONG_OPTIONS" -n 'love-release' -- "$@") + if (( $? != 0 )); then short_help; exit_module "options"; fi + eval set -- "$ARGS" + read_options + while [[ $1 != '--' ]]; do shift; done; shift + for arg do + FILES+=( "$arg" ) done -fi + if (( ${#FILES} == 0 )); then FILES+=( "." ); fi + eval set -- "$ARGS" + + if [[ $INSTALLED == false && $EMBEDDED == false ]]; then + exit_module "undef" "love-release has not been installed, and is not embedded into one script." + fi + + if [[ ! -f "main.lua" ]]; then + >&2 echo "No main.lua file was found." + exit_module 1 + fi + + if [[ $EMBEDDED == true ]]; then + : # include_scripts_here + elif [[ $INSTALLED == true ]]; then + SCRIPTS_DIR="scripts" + for file in "$SCRIPTS_DIR"/*.sh; do + (source "$file") + default_module + done + fi -( - init_module "LÖVE" "love" "L" - create_love_file 9 - exit_module -) -if [[ $? -ne 0 && $DEFAULT_MODULE == true ]]; then -( - init_module "LÖVE" "default" - create_love_file 9 - exit_module -) -fi + ( + init_module "LÖVE" "love" "L" + create_love_file 9 + exit_module + ) + if [[ $? -ne 0 && $DEFAULT_MODULE == true ]]; then + ( + init_module "LÖVE" "default" + create_love_file 9 + exit_module + ) + fi -exit 0 + return 0 +} + + +main "$@"