mirror of
https://github.com/TangentFoxy/love-release.git
synced 2025-07-28 11:02:20 +00:00
A module should always begin with a test to `execute_module` to see if it should be executed. As modules are always sourced (even when embedded), a simple `return` will stop the subscript. Modules are executed in a subscript, so the global space will not be polluted, and will also be reset after the execution of the module. This commit also solves some bugs in Makefile and lua parser.
108 lines
3.1 KiB
Bash
108 lines
3.1 KiB
Bash
# Example
|
|
return
|
|
|
|
# This example script should show you how to write a module for love-release.
|
|
|
|
# What's the point anyway ?
|
|
# Well, you could do that if you wanted to support another platform,
|
|
# or maybe to set up your own build script if you'd want to use old or custom versions of love,
|
|
# or finally to add other directives at build time.
|
|
|
|
|
|
# Read this example and take a look at the other modules.
|
|
# To create a new module, you have to create a file in this directory,
|
|
# and to edit the main love-release script.
|
|
# If you wish to submit a new module, please also edit README.md and love-release.1
|
|
# You could add configuration options in config.ini too,
|
|
# but the name of the section must be the same as the name of the script.
|
|
|
|
|
|
# Love-release script
|
|
|
|
## 1. Register your module
|
|
# To register your platforms scripts, you have to choose a command name that will trigger your script.
|
|
# It must be followed by:
|
|
# - a semicolon ";" if it doesn't require an argument
|
|
# - a dot "." if it has an optional argument
|
|
# - a colon ":" if it requires an argument
|
|
# If you need options that might conflict by their names with already defined options, please prefix them.
|
|
# If you want automatic completion to be available, add them to completion.sh
|
|
SCRIPT_ARGS="q; wer: ty. uiop $SCRIPT_ARGS"
|
|
|
|
# If some options require a file or a directory as argument,
|
|
# and this file should be excluded by zip, add the option.
|
|
EXCLUDE_OPTIONS=("wer")
|
|
EXCLUDE_CONFIG=("INI__q__wer")
|
|
|
|
## 2. Add a short summary of your module
|
|
SHORT_HELP=" -q Create an Example application"
|
|
|
|
## 3. Source your script at the end of the file in the getoptex loop
|
|
while getoptex "$SCRIPT_ARGS" "$@"
|
|
do
|
|
if [ "$OPTOPT" = "q" ]; then
|
|
source "$PLATFORMS_DIR"/example.sh
|
|
fi
|
|
done
|
|
|
|
|
|
# Module script
|
|
|
|
## 0. Theses variables are available:
|
|
## $MAIN_CACHE_DIR - if you need to cache something independant from love version
|
|
## $CACHE_DIR - if you need to cache something dependant from love version
|
|
## $PROJECT_FILES - if empty, means *
|
|
## $EXCLUDE_FILES - add files to be excluded by zip.
|
|
## $PROJECT_NAME
|
|
## $PROJECT_DIR
|
|
## $RELEASE_DIR
|
|
## $LOVE_FILE - points to the love file
|
|
|
|
## 1. Init the module
|
|
### $1: Module name
|
|
init_module "Example"
|
|
|
|
## 2. Read the configuration
|
|
# Syntax is ${INI__section__variable}
|
|
if [ "$CONFIG" = true ]; then
|
|
if [ -n "${INI__q__wer}" ]; then
|
|
WER=${INI__q__wer}
|
|
fi
|
|
if [ -n "${INI__q__ty}" ]; then
|
|
TY=${INI_q_ty}
|
|
fi
|
|
if [ -n "${INI__q__uiop}" ]; then
|
|
UIOP=true
|
|
fi
|
|
fi
|
|
|
|
## 3. Parse the options
|
|
# $OPTOPT holds the option and $OPTARG holds the eventual argument passed to it.
|
|
while getoptex "$SCRIPT_ARGS" "$@"
|
|
do
|
|
if [ "$OPTOPT" = "wer" ]; then
|
|
WER=$OPTARG
|
|
elif [ "$OPTOPT" = "ty" ]; then
|
|
TY=$OPTARG
|
|
elif [ "$OPTOPT" = "uiop" ]; then
|
|
UIOP=true
|
|
fi
|
|
done
|
|
|
|
## 4. Create the love file
|
|
### $1: Compression level 0-9
|
|
create_love_file 9
|
|
|
|
|
|
## 5. Write your code
|
|
|
|
|
|
## 6. Unset every variable passed by configuration or command-line
|
|
unset WER TY UIOP
|
|
|
|
## 7. Exit the module
|
|
### $1: exit code. 0 - success, other - failure
|
|
### $2: error message
|
|
exit_module
|
|
|