Branded UI
This commit is contained in:
176
_build.sh
Executable file
176
_build.sh
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Variables
|
||||
dlurl="https://github.com/HL7/fhir-ig-publisher/releases/latest/download/publisher.jar"
|
||||
publisher_jar="publisher.jar"
|
||||
input_cache_path="$(pwd)/input-cache/"
|
||||
skipPrompts=false
|
||||
upper_path="../"
|
||||
scriptdlroot="https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main"
|
||||
build_bat_url="${scriptdlroot}/_build.bat"
|
||||
build_sh_url="${scriptdlroot}/_build.sh"
|
||||
|
||||
function check_jar_location() {
|
||||
if [ -f "${input_cache_path}${publisher_jar}" ]; then
|
||||
jar_location="${input_cache_path}${publisher_jar}"
|
||||
echo "Found publisher.jar in input-cache"
|
||||
elif [ -f "${upper_path}${publisher_jar}" ]; then
|
||||
jar_location="${upper_path}${publisher_jar}"
|
||||
echo "Found publisher.jar in parent folder"
|
||||
else
|
||||
jar_location="not_found"
|
||||
echo "publisher.jar not found in input-cache or parent folder"
|
||||
fi
|
||||
}
|
||||
|
||||
function check_internet_connection() {
|
||||
if ping -c 1 tx.fhir.org &>/dev/null; then
|
||||
online=true
|
||||
echo "We're online and tx.fhir.org is available."
|
||||
latest_version=$(curl -s https://api.github.com/repos/HL7/fhir-ig-publisher/releases/latest | grep tag_name | cut -d'"' -f4)
|
||||
else
|
||||
online=false
|
||||
echo "We're offline or tx.fhir.org is unavailable."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function update_publisher() {
|
||||
echo "Publisher jar location: ${input_cache_path}${publisher_jar}"
|
||||
read -p "Download or update publisher.jar? (Y/N): " confirm
|
||||
if [[ "$confirm" =~ ^[Yy]$ ]]; then
|
||||
echo "Downloading latest publisher.jar (~200 MB)..."
|
||||
mkdir -p "$input_cache_path"
|
||||
curl -L "$dlurl" -o "${input_cache_path}${publisher_jar}"
|
||||
else
|
||||
echo "Skipped downloading publisher.jar"
|
||||
fi
|
||||
|
||||
update_scripts_prompt
|
||||
}
|
||||
|
||||
|
||||
function update_scripts_prompt() {
|
||||
read -p "Update scripts (_build.bat and _build.sh)? (Y/N): " update_confirm
|
||||
if [[ "$update_confirm" =~ ^[Yy]$ ]]; then
|
||||
echo "Updating scripts..."
|
||||
curl -L "$build_bat_url" -o "_build.new.bat" && mv "_build.new.bat" "_build.bat"
|
||||
curl -L "$build_sh_url" -o "_build.new.sh" && mv "_build.new.sh" "_build.sh"
|
||||
chmod +x _build.sh
|
||||
echo "Scripts updated."
|
||||
else
|
||||
echo "Skipped updating scripts."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function build_ig() {
|
||||
if [ "$jar_location" != "not_found" ]; then
|
||||
args=()
|
||||
if [ "$online" = "false" ]; then
|
||||
args+=("-tx" "n/a")
|
||||
fi
|
||||
java -Dfile.encoding=UTF-8 -jar "$jar_location" -ig . "${args[@]}" "$@"
|
||||
else
|
||||
echo "publisher.jar not found. Please run update."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function build_nosushi() {
|
||||
if [ "$jar_location" != "not_found" ]; then
|
||||
java -Dfile.encoding=UTF-8 -jar "$jar_location" -ig . -no-sushi "$@"
|
||||
else
|
||||
echo "publisher.jar not found. Please run update."
|
||||
fi
|
||||
}
|
||||
|
||||
function build_notx() {
|
||||
if [ "$jar_location" != "not_found" ]; then
|
||||
java -Dfile.encoding=UTF-8 -jar "$jar_location" -ig . -tx n/a "$@"
|
||||
else
|
||||
echo "publisher.jar not found. Please run update."
|
||||
fi
|
||||
}
|
||||
|
||||
function jekyll_build() {
|
||||
echo "Running Jekyll build..."
|
||||
jekyll build -s temp/pages -d output
|
||||
}
|
||||
|
||||
function cleanup() {
|
||||
echo "Cleaning up temp directories..."
|
||||
if [ -f "${input_cache_path}${publisher_jar}" ]; then
|
||||
mv "${input_cache_path}${publisher_jar}" ./
|
||||
rm -rf "${input_cache_path}"*
|
||||
mkdir -p "$input_cache_path"
|
||||
mv "$publisher_jar" "$input_cache_path"
|
||||
fi
|
||||
rm -rf ./output ./template ./temp
|
||||
echo "Cleanup complete."
|
||||
}
|
||||
|
||||
check_jar_location
|
||||
check_internet_connection
|
||||
|
||||
# Handle command-line argument or menu
|
||||
case "$1" in
|
||||
update) update_publisher ;;
|
||||
build) build_ig ;;
|
||||
nosushi) build_nosushi ;;
|
||||
notx) build_notx ;;
|
||||
jekyll) jekyll_build ;;
|
||||
clean) cleanup ;;
|
||||
exit) exit 0 ;;
|
||||
*)
|
||||
# Compute default choice
|
||||
default_choice=2 # Build by default
|
||||
|
||||
if [ "$jar_location" = "not_found" ]; then
|
||||
default_choice=1 # Download if jar is missing
|
||||
elif [ "$online" = "false" ]; then
|
||||
default_choice=4 # Offline build
|
||||
elif [ -n "$latest_version" ]; then
|
||||
current_version=$(java -jar "$jar_location" -v 2>/dev/null | tr -d '\r')
|
||||
if [ "$current_version" != "$latest_version" ]; then
|
||||
default_choice=1 # Offer update if newer version exists
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "---------------------------------------------"
|
||||
echo "Publisher: ${current_version:-unknown}; Latest: ${latest_version:-unknown}"
|
||||
echo "Publisher location: $jar_location"
|
||||
echo "Online: $online"
|
||||
echo "---------------------------------------------"
|
||||
echo
|
||||
echo "Please select an option:"
|
||||
echo "1) Download or update publisher"
|
||||
echo "2) Build IG"
|
||||
echo "3) Build IG without Sushi"
|
||||
echo "4) Build IG without TX server"
|
||||
echo "5) Jekyll build"
|
||||
echo "6) Cleanup temp directories"
|
||||
echo "0) Exit"
|
||||
echo
|
||||
|
||||
# Read with timeout, but default if nothing entered
|
||||
echo -n "Choose an option [default: $default_choice]: "
|
||||
read -t 5 choice || choice="$default_choice"
|
||||
choice="${choice:-$default_choice}"
|
||||
echo "You selected: $choice"
|
||||
|
||||
case "$choice" in
|
||||
1) update_publisher ;;
|
||||
2) build_ig ;;
|
||||
3) build_nosushi ;;
|
||||
4) build_notx ;;
|
||||
5) jekyll_build ;;
|
||||
6) cleanup ;;
|
||||
0) exit 0 ;;
|
||||
*) echo "Invalid option." ;;
|
||||
esac
|
||||
;;
|
||||
|
||||
esac
|
||||
Reference in New Issue
Block a user