Add main function. Update Makefile accordingly.

This commit is contained in:
Antonin Décimo
2015-09-28 09:55:20 +02:00
parent 8acc70afd4
commit c1688d281d
2 changed files with 80 additions and 80 deletions

View File

@@ -12,19 +12,18 @@ SED_INSTALL_DIR=$(shell echo "$(INSTALL_DIR)" | sed -e 's/[\/&]/\\&/g')
love-release: deps clean love-release: deps clean
mkdir -p '$(BUILD_DIR)' 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 \ for file in scripts/*.sh; do \
s="$$(grep -E -m 1 "^OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/OPTIONS=['\"]?//" -e "s/['\"]?$$//")"; \ s="$$(grep -E -m1 "^OPTIONS" "$$file" | sed -E "s/OPTIONS=(['\"]?)(.*)\1/\2/")"; \
short="$${s}$${short}"; \ short="$${short}$${s}"; \
s="$$(echo "$$s" | sed -e "s/[:]*$$//")"; \ s="$${s:0:1}"; \
l="$$s$$(echo "$$longopt" | sed -e "s/,/,$${s}/g")"; \ ll=$$(grep -E -m1 "^LONG_OPTIONS" "$$file" | sed -E "s/LONG_OPTIONS=(['\"]?)(.*)\1/\2/"); \
ll="$$(grep -E -m 1 "^LONG_OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/LONG_OPTIONS=['\"]?//" -e "s/['\"]?$$//" -e "s/,/,$${s}/g")"; \ long="$${long},$${s}$${longopt//,/,$$s}"; \
if [[ -n $$ll ]]; then l="$${l},$${s}$${ll}"; fi; \ if [[ -n $$ll ]]; then long="$${long},$${s}$${ll//,/,$$s}"; 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)}')\\"; \
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; \ done; \
shelp="$$shelp\\n"; \ 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/INSTALLED=false/INSTALLED=true/' \
-e 's/SCRIPTS_DIR="scripts"/SCRIPTS_DIR="$(SED_INSTALL_DIR)\/scripts"/' \ -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'; \ -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 embedded: clean
mkdir -p '$(BUILD_DIR)' 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 \ for file in scripts/*.sh; do \
module="$$(basename -s '.sh' "$$file")"; \ module="$$(basename -s '.sh' "$$file")"; \
content='(source <(cat <<\EndOfModule'$$'\n'"$$(cat $$file)"$$'\n''EndOfModule'$$'\n''))'$$'\n''default_module'$$'\n\n'; \ content='(source <(cat <<\EndOfModule'$$'\n'"$$(cat $$file)"$$'\n''EndOfModule'$$'\n''))'$$'\n''default_module'$$'\n\n'; \
echo "$$content" >> "$(BUILD_DIR)/tmp"; \ echo "$$content" >> "$(BUILD_DIR)/tmp"; \
s="$$(grep -E -m 1 "^OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/OPTIONS=['\"]?//" -e "s/['\"]?$$//")"; \ s="$$(grep -E -m1 "^OPTIONS" "$$file" | sed -E "s/OPTIONS=(['\"]?)(.*)\1/\2/")"; \
short="$${s}$${short}"; \ short="$${short}$${s}"; \
s="$$(echo "$$s" | sed -e "s/[:]*$$//")"; \ s="$${s:0:1}"; \
l="$$s$$(echo "$$longopt" | sed -e "s/,/,$${s}/g")"; \ ll=$$(grep -E -m1 "^LONG_OPTIONS" "$$file" | sed -E "s/LONG_OPTIONS=(['\"]?)(.*)\1/\2/"); \
ll="$$(grep -E -m 1 "^LONG_OPTIONS=['\"]?.*['\"]?" "$$file" | sed -Ee "s/LONG_OPTIONS=['\"]?//" -e "s/['\"]?$$//" -e "s/,/,$${s}/g")"; \ long="$${long},$${s}$${longopt//,/,$$s}"; \
if [[ -n $$ll ]]; then l="$${l},$${s}$${ll}"; fi; \ if [[ -n $$ll ]]; then long="$${long},$${s}$${ll//,/,$$s}"; 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)}')\\"; \
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; \ done; \
shelp="$$shelp\\n"; \ 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 's/EMBEDDED=false/EMBEDDED=true/' \
-e '/include_scripts_here$$/r $(BUILD_DIR)/tmp' \ -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'; -e "$$(echo "$$(sed -n '/^EndOfSHelp/=' love-release.sh) i \\$$(printf "$$shelp")")" love-release.sh > '$(BUILD_DIR)/love-release.sh';

View File

@@ -388,74 +388,76 @@ exit_module () {
esac esac
} }
# Main # 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 "<title>" | tail -n 1 | grep -Eo "[0-9]+.[0-9]+.[0-9]+")
gen_version $LOVE_WEB_VERSION
# Get latest LÖVE version number INSTALLED=false
gen_version $LOVE_DEF_VERSION EMBEDDED=false
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 DEFAULT_MODULE=true
EMBEDDED=false
DEFAULT_MODULE=true TITLE="$(basename $(pwd))"
PROJECT_DIR="$PWD"
RELEASE_DIR=releases
CACHE_DIR=~/.cache/love-release
FILES=()
EXCLUDE=()
TITLE="$(basename $(pwd))" OPTIONS="La:d:e:hi:l:p:r:t:u:v:x:"
PROJECT_DIR="$PWD" LONG_OPTIONS="author:,clean,description:,email:,exclude:,help,icon:,love:,pkg:,release:,title:,url:,version:"
RELEASE_DIR=releases ARGS=$(getopt -o "$OPTIONS" -l "$LONG_OPTIONS" -n 'love-release' -- "$@")
CACHE_DIR=~/.cache/love-release if (( $? != 0 )); then short_help; exit_module "options"; fi
FILES=() eval set -- "$ARGS"
EXCLUDE=() read_options
while [[ $1 != '--' ]]; do shift; done; shift
OPTIONS="La:d:e:hi:l:p:r:t:u:v:x:" for arg do
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" ) FILES+=( "$arg" )
done done
if (( ${#FILES} == 0 )); then FILES+=( "." ); fi if (( ${#FILES} == 0 )); then FILES+=( "." ); fi
eval set -- "$ARGS" eval set -- "$ARGS"
if [[ $INSTALLED == false && $EMBEDDED == false ]]; then if [[ $INSTALLED == false && $EMBEDDED == false ]]; then
exit_module "undef" "love-release has not been installed, and is not embedded into one script." exit_module "undef" "love-release has not been installed, and is not embedded into one script."
fi fi
if [[ ! -f "main.lua" ]]; then if [[ ! -f "main.lua" ]]; then
>&2 echo "No main.lua file was found." >&2 echo "No main.lua file was found."
exit_module 1 exit_module 1
fi fi
if [[ $EMBEDDED == true ]]; then if [[ $EMBEDDED == true ]]; then
: # include_scripts_here : # include_scripts_here
elif [[ $INSTALLED == true ]]; then elif [[ $INSTALLED == true ]]; then
SCRIPTS_DIR="scripts" SCRIPTS_DIR="scripts"
for file in "$SCRIPTS_DIR"/*.sh; do for file in "$SCRIPTS_DIR"/*.sh; do
(source "$file") (source "$file")
default_module default_module
done done
fi fi
( (
init_module "LÖVE" "love" "L" init_module "LÖVE" "love" "L"
create_love_file 9 create_love_file 9
exit_module exit_module
) )
if [[ $? -ne 0 && $DEFAULT_MODULE == true ]]; then if [[ $? -ne 0 && $DEFAULT_MODULE == true ]]; then
( (
init_module "LÖVE" "default" init_module "LÖVE" "default"
create_love_file 9 create_love_file 9
exit_module exit_module
) )
fi fi
exit 0 return 0
}
main "$@"