2024-07-11 20:56:25 +02:00
#
# author: Mamadou Babaei <mamadou@senseglove.com>
#
# (The MIT License)
#
2026-02-04 16:07:33 +01:00
# Copyright (c) 2020 - 2026 SenseGlove
2024-07-11 20:56:25 +02:00
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
################################################################################
# Generic Settings
################################################################################
SG_PROJECT_NAME := The SenseGlove Unreal Engine Handbook
2024-08-16 17:54:21 +02:00
SG_PROJECT_GIT_REPOSITORY := https://dev.azure.com/SenseGlove/SenseGlove-Unreal/_git/SenseGlove-Unreal
2024-07-30 10:15:42 +02:00
SG_HANDBOOK_ESCAPED_NAME := $( shell echo $( SG_PROJECT_NAME) | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' )
2024-07-29 13:45:58 +02:00
SG_HANDBOOK_DIR := $( CURDIR)
SG_HANDBOOK_SRC_DIR := $( SG_HANDBOOK_DIR) /src
SG_HANDBOOK_TOML_FILE := $( realpath $( SG_HANDBOOK_DIR) /book.toml)
SG_HANDBOOK_CONFIG_HOME_DIR := SenseGlove/ue-handbook
SG_HANDBOOK_DEPLOY_CONFIG_FILENAME := deploy.conf
SG_HANDBOOK_DEPLOY_TEMP_DIR_NAME := unreal-docs-senseglove-com-deploy-XXXXXXXXXX
2024-07-31 11:50:02 +02:00
SG_HANDBOOK_FAVICON_FILE := $( SG_HANDBOOK_SRC_DIR) /favicon.svg
2024-07-29 13:45:58 +02:00
2024-08-16 17:54:21 +02:00
SG_DOT_GIT_DIR := $( realpath $( SG_HANDBOOK_DIR) /../.git)
2024-08-18 01:30:45 +02:00
SG_DOT_GIT_SHALLOW_FILE := $( SG_DOT_GIT_DIR) /shallow
2024-08-16 17:54:21 +02:00
2024-07-11 20:56:25 +02:00
SG_PLUGIN_DIR := $( realpath $( SG_HANDBOOK_DIR) /..)
SG_PLUGIN_RESOURCES_DIR := $( SG_PLUGIN_DIR) /Resources
SG_PLUGIN_FILE := $( SG_PLUGIN_DIR) /SenseGlove.uplugin
2024-07-29 13:45:58 +02:00
2024-07-29 15:31:36 +02:00
SG_DOCUMENTATION_URL := https://unreal.docs.senseglove.com
SG_DOCUMENTATION_DIR := $( SG_PLUGIN_DIR) /Documentation
SG_DOCUMENTATION_HTML_DIR_NAME := html
SG_DOCUMENTATION_HTML_DIR := $( SG_DOCUMENTATION_DIR) /$( SG_DOCUMENTATION_HTML_DIR_NAME)
SG_DOCUMENTATION_PDF_DIR := $( SG_DOCUMENTATION_DIR) /pdf-outline
SG_DOCUMENTATION_PDF_FILE := $( SG_DOCUMENTATION_PDF_DIR) /output.pdf
2025-01-17 13:38:19 +01:00
SG_DOCUMENTATION_EPUB_DIR := $( SG_DOCUMENTATION_DIR) /epub
SG_DOCUMENTATION_EPUB_FILE := $( SG_DOCUMENTATION_EPUB_DIR) /$( SG_PROJECT_NAME) .epub
2024-07-30 10:15:42 +02:00
SG_DOCUMENTATION_PACK_DIR_NAME := pack
SG_DOCUMENTATION_PACK_DIR := $( SG_DOCUMENTATION_DIR) /$( SG_DOCUMENTATION_PACK_DIR_NAME)
SG_HANDBOOK_PACKED_HTML_DIR := $( SG_DOCUMENTATION_PACK_DIR) /$( SG_HANDBOOK_ESCAPED_NAME)
SG_HANDBOOK_PACKED_HTML_FILE := $( SG_DOCUMENTATION_PACK_DIR) /$( SG_HANDBOOK_ESCAPED_NAME) .zip
SG_HANDBOOK_PACKED_PDF_FILE := $( SG_DOCUMENTATION_PACK_DIR) /$( SG_HANDBOOK_ESCAPED_NAME) .pdf
2025-01-17 13:38:19 +01:00
SG_HANDBOOK_PACKED_EPUB_FILE := $( SG_DOCUMENTATION_PACK_DIR) /$( SG_HANDBOOK_ESCAPED_NAME) .epub
2024-07-11 20:56:25 +02:00
2024-10-18 12:42:47 +02:00
SG_BROWSER_BINARY_PATH_LINUX := /opt/brave.com/brave/brave
2024-07-20 22:35:07 +02:00
SG_BROWSER_BINARY_PATH_WINDOWS := C:\P rogram Files\B raveSoftware\B rave-Browser\A pplication\b rave.exe
2024-07-29 16:12:41 +02:00
SG_RSYNC_BIN_PATH_WINDOWS := C:\P rogram Files\c wrsync\b in
SG_RSYNC_BINARY_PATH_WINDOWS := $( SG_RSYNC_BIN_PATH_WINDOWS) \r sync.exe
SG_RSYNC_SSH_BINARY_PATH_WINDOWS := $( SG_RSYNC_BIN_PATH_WINDOWS) \s sh.exe
2024-07-29 15:31:36 +02:00
2024-07-11 20:56:25 +02:00
################################################################################
# Platform Detection
################################################################################
SG_BUILD_ARCH_AMD64 := amd64
SG_BUILD_PLATFORM_LINUX := linux
SG_BUILD_PLATFORM_WINDOWS := windows
ifeq ( $( OS ) ,Windows_NT)
SG_BUILD_PLATFORM := $( SG_BUILD_PLATFORM_WINDOWS)
# Running a 32-bit (x86) Command Prompt sets PROCESSOR_ARCHITECTURE to x86,
# and instead defines PROCESSOR_ARCHITEW6432 for 64-bit Windows detection.
ifeq ( $( PROCESSOR_ARCHITEW 6432) ,AMD64)
SG_BUILD_ARCH := $( SG_BUILD_ARCH_AMD64)
else # ($(PROCESSOR_ARCHITEW6432),AMD64)
ifeq ( $( PROCESSOR_ARCHITECTURE ) ,AMD64)
SG_BUILD_ARCH := $( SG_BUILD_ARCH_AMD64)
endif # ($(PROCESSOR_ARCHITECTURE),AMD64)
endif # ($(PROCESSOR_ARCHITEW6432),AMD64)
else # ($(OS),Windows_NT)
SG_PLATFORM_UNAME := $( shell uname -s)
ifeq ( $( SG_PLATFORM_UNAME ) ,Linux)
2024-07-20 22:21:32 +02:00
SG_BUILD_PLATFORM := $( SG_BUILD_PLATFORM_LINUX)
2024-07-11 20:56:25 +02:00
SG_PLATFORM_UNAME_ARCH := $( shell uname -m)
endif # ($(SG_PLATFORM_UNAME),Linux)
ifeq ( $( SG_PLATFORM_UNAME_ARCH ) ,x86_64)
SG_BUILD_ARCH := $( SG_BUILD_ARCH_AMD64)
endif # ($(SG_PLATFORM_UNAME_ARCH),x86_64)
endif # ($(OS),Windows_NT)
################################################################################
# Target Settings - mdbook
################################################################################
SG_MDBOOK_HOST := "localhost"
SG_MDBOOK_PORT := "8000"
SG_MDBOOK_SRC_DIR := " ${ SG_HANDBOOK_DIR } /src"
SG_MDBOOK_DEST_DIR := " ${ SG_DOCUMENTATION_DIR } "
SG_MDBOOK_WATCHER := "poll"
SG_PLUGIN_CHANGELOG_FILE := $( SG_PLUGIN_DIR) /CHANGELOG.md
SG_PLUGIN_DIRECTORY_STRUCTURE_FILE := $( SG_PLUGIN_DIR) /DIRECTORY_STRUCTURE.md
SG_PLUGIN_LICENSE_FILE := $( SG_PLUGIN_DIR) /LICENSE.md
SG_PLUGIN_LICENSE_THIRD_PARTY_FILE := $( SG_PLUGIN_DIR) /LICENSE_THIRD_PARTY.md
SG_PLUGIN_PLANNED_FEATURES_COMPLETION_STATUS_FILE := $( SG_PLUGIN_DIR) /PLANNED_FEATURES_COMPLETION_STATUS.md
SG_PLUGIN_PLATFORM_SUPPORT_MATRIX_FILE := $( SG_PLUGIN_DIR) /PLATFORM_SUPPORT_MATRIX.md
2026-02-05 08:15:27 +01:00
################################################################################
# Rust/Cargo Settings
################################################################################
RUST_TOOLCHAIN_VERSION := 1.93.0
2024-07-11 20:56:25 +02:00
################################################################################
# Version and Build Information
################################################################################
2024-08-16 17:54:21 +02:00
SG_GIT_TREE_STATE_CLEAN := clean
2024-07-11 20:56:25 +02:00
SG_GIT_TREE_STATE_DIRTY := dirty
2024-08-16 17:54:21 +02:00
SG_GIT_NO := no
SG_GIT_YES := yes
SG_RELEASE_BRANCH_PATTERN := ^[ 0-9] +\. [ 0-9] +$$
2024-07-11 20:56:25 +02:00
SG_GIT_BRANCH := $( shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
SG_GIT_TAG := $( shell git describe --tags --abbrev= 0 2>/dev/null)
SG_GIT_COMMIT := $( shell git rev-parse --short HEAD 2>/dev/null)
SG_GIT_COMMIT_NUMS_SINCE_TAG := $( shell git rev-list --count HEAD ^` git describe --tags --abbrev= 0 2>/dev/null` 2>/dev/null)
2024-08-16 17:54:21 +02:00
SG_GIT_TREE_STATE := $( shell test -n "`git status --porcelain 2>/dev/null`" && echo " $( SG_GIT_TREE_STATE_DIRTY) " || echo " $( SG_GIT_TREE_STATE_CLEAN) " )
SG_GIT_IS_SHALLOW_CLONE := $( shell [ -d $( SG_DOT_GIT_DIR) ] && [ -f $( SG_DOT_GIT_SHALLOW_FILE) ] && echo " $( SG_GIT_YES) " || echo " $( SG_GIT_NO) " )
SG_GIT_LATEST_REMOTE_TAG := $( shell git -c versionsort.suffix= - ls-remote --exit-code --refs --sort= version:refname --tags $( SG_PROJECT_GIT_REPOSITORY) '*.*.*' | tail -n 1 | sed 's/.*refs\/tags\///' 2>/dev/null)
2024-07-11 20:56:25 +02:00
2024-08-16 15:12:12 +02:00
SG_PLUGIN_VERSION := $( shell grep -o '"VersionName": "[^"]*"' ${ SG_PLUGIN_FILE } | awk -F'"' '{print "v" $$4}' )
2024-07-11 20:56:25 +02:00
ifeq ( $( strip $( SG_GIT_COMMIT_NUMS_SINCE_TAG )) ,)
SG_GIT_COMMIT_NUMS_SINCE_TAG := 0
endif # ($(strip $(SG_GIT_COMMIT_NUMS_SINCE_TAG)),)
ifneq ( $( strip $( SG_GIT_TAG )) ,)
SG_GIT_VERSION := $( SG_GIT_TAG)
endif # ($(strip $(SG_GIT_TAG)),)
2024-08-16 17:54:21 +02:00
ifeq ( $( strip $( SG_GIT_VERSION )) ,)
ifeq ( $( strip $( SG_GIT_IS_SHALLOW_CLONE )) , $( SG_GIT_YES ) )
ifneq ( $( strip $( SG_GIT_LATEST_REMOTE_TAG )) ,)
SG_GIT_VERSION := $( SG_GIT_LATEST_REMOTE_TAG)
endif # ($(strip $(SG_GIT_LATEST_REMOTE_TAG)),)
endif # ($(strip $(SG_GIT_IS_SHALLOW_CLONE)),$(SG_GIT_YES))
endif # ($(strip $(SG_GIT_VERSION)),)
SG_GIT_VERSION_MAJOR := $( shell echo $( SG_GIT_VERSION) | cut -d '.' -f 1 | tr -d -c 0-9)
2024-07-11 20:56:25 +02:00
ifeq ( $( SG_GIT_VERSION_MAJOR ) ,)
SG_GIT_VERSION_MAJOR := 0
endif # ($(SG_GIT_VERSION_MAJOR),)
2024-08-16 17:54:21 +02:00
SG_GIT_VERSION_MINOR := $( shell echo $( SG_GIT_VERSION) | cut -d '.' -f 2 | tr -d -c 0-9)
2024-07-11 20:56:25 +02:00
ifeq ( $( SG_GIT_VERSION_MINOR ) ,)
SG_GIT_VERSION_MINOR := 0
endif # ($(SG_GIT_VERSION_MINOR),)
2024-08-16 17:54:21 +02:00
SG_GIT_VERSION_PATCH := $( shell echo $( SG_GIT_VERSION) | cut -d '.' -f 3 | tr -d -c 0-9)
2024-07-11 20:56:25 +02:00
ifeq ( $( SG_GIT_VERSION_PATCH ) ,)
SG_GIT_VERSION_PATCH := 0
endif # ($(SG_GIT_VERSION_PATCH),)
SG_PLUGIN_VERSION_MAJOR := $( shell echo $( SG_PLUGIN_VERSION) | cut -d '.' -f 1 | tr -d -c 0-9)
ifeq ( $( SG_PLUGIN_VERSION_MAJOR ) ,)
SG_PLUGIN_VERSION_MAJOR := 0
endif
SG_PLUGIN_VERSION_MINOR := $( shell echo $( SG_PLUGIN_VERSION) | cut -d '.' -f 2 | tr -d -c 0-9)
ifeq ( $( SG_PLUGIN_VERSION_MINOR ) ,)
SG_PLUGIN_VERSION_MINOR := 0
endif # ($(SG_PLUGIN_VERSION_MINOR),)
SG_PLUGIN_VERSION_PATCH := $( shell echo $( SG_PLUGIN_VERSION) | cut -d '.' -f 3 | tr -d -c 0-9)
ifeq ( $( SG_PLUGIN_VERSION_PATCH ) ,)
SG_PLUGIN_VERSION_PATCH := 0
endif # ($(SG_PLUGIN_VERSION_PATCH),)
SG_BUILD_HOST := $( shell hostname)
SG_BUILD_TIME := $( shell date '+%a %b %d, %Y %H:%M %Z %z' )
ifeq ( $( strip $( SG_GIT_BRANCH )) ,dev)
2024-08-18 00:25:23 +02:00
ifeq ( $( strip $( SG_GIT_TAG )) ,)
2024-07-11 20:56:25 +02:00
SG_HANDBOOK_REVISION := next
2024-08-18 00:25:23 +02:00
endif # ($(strip $(SG_GIT_TAG)),)
2024-07-11 20:56:25 +02:00
endif # ($(strip $(SG_GIT_BRANCH)),dev)
2024-07-18 13:54:42 +02:00
SG_IS_GIT_BRANCH_HEAD_OR_MASTER := $( or $( filter HEAD,$( strip $( SG_GIT_BRANCH))) ,$( filter master,$( strip $( SG_GIT_BRANCH))))
2024-07-11 20:56:25 +02:00
2024-08-16 15:12:12 +02:00
ifneq ( $( SG_IS_GIT_BRANCH_HEAD_OR_MASTER ) ,)
2024-07-11 20:56:25 +02:00
ifeq ( $( strip $( SG_GIT_COMMIT_NUMS_SINCE_TAG )) ,0)
2024-08-16 17:54:21 +02:00
ifeq ( $( strip $( SG_GIT_TREE_STATE )) , $( SG_GIT_TREE_STATE_CLEAN ) )
2024-07-11 20:56:25 +02:00
ifeq ( $( strip $( SG_GIT_VERSION )) , $( strip $( SG_PLUGIN_VERSION )) )
2024-08-16 15:12:12 +02:00
SG_HANDBOOK_REVISION := $( SG_PLUGIN_VERSION_MAJOR) .$( SG_PLUGIN_VERSION_MINOR)
2024-07-11 20:56:25 +02:00
endif # ($(strip $(SG_GIT_VERSION)),$(strip $(SG_PLUGIN_VERSION)))
2024-08-16 17:54:21 +02:00
endif # ($(strip $(SG_GIT_TREE_STATE)),$(SG_GIT_TREE_STATE_CLEAN))
2024-07-11 20:56:25 +02:00
endif # ($(strip $(SG_GIT_COMMIT_NUMS_SINCE_TAG)),0)
2024-08-16 15:12:12 +02:00
endif # ($(SG_IS_GIT_BRANCH_HEAD_OR_MASTER),)
2024-07-11 20:56:25 +02:00
2024-08-16 17:54:21 +02:00
ifeq ( $( strip $( SG_GIT_IS_SHALLOW_CLONE )) , $( SG_GIT_YES ) )
SG_IS_GIT_BRANCH_RELEASE := $( shell echo $( SG_GIT_BRANCH) | grep -E '$(SG_RELEASE_BRANCH_PATTERN)' || echo "" )
ifneq ( $( SG_IS_GIT_BRANCH_RELEASE ) ,)
ifeq ( $( strip $( SG_GIT_VERSION )) , $( strip $( SG_PLUGIN_VERSION )) )
SG_HANDBOOK_REVISION := $( SG_PLUGIN_VERSION_MAJOR) .$( SG_PLUGIN_VERSION_MINOR)
endif # ($(strip $(SG_GIT_VERSION)),$(strip $(SG_PLUGIN_VERSION)))
endif # ($(SG_IS_GIT_BRANCH_RELEASE),)
endif # ($(strip $(SG_GIT_IS_SHALLOW_CLONE)),$(SG_GIT_YES))
2024-07-11 20:56:25 +02:00
ifeq ( $( strip $( SG_HANDBOOK_REVISION )) ,)
SG_HANDBOOK_REVISION := mismatched
endif # ($(strip $(SG_HANDBOOK_REVISION)),)
2024-07-29 14:37:01 +02:00
ifneq ( $( strip $( SG_HANDBOOK_REVISION )) ,mismatched)
2024-08-16 15:12:12 +02:00
SG_MDBOOK_HTML_SITE_URL := $( SG_HANDBOOK_REVISION)
2024-07-29 14:37:01 +02:00
SG_HANDBOOK_REVISION_URL := $( SG_DOCUMENTATION_URL) /$( SG_HANDBOOK_REVISION)
2024-07-30 10:15:42 +02:00
SG_HANDBOOK_RELEASE_NAME := $( shell echo $( SG_PROJECT_NAME) -$( SG_HANDBOOK_REVISION) | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' )
SG_HANDBOOK_PDF_URL := $( SG_HANDBOOK_REVISION_URL) /$( SG_HANDBOOK_RELEASE_NAME) .pdf
2025-01-17 13:38:19 +01:00
SG_HANDBOOK_EPUB_URL := $( SG_HANDBOOK_REVISION_URL) /$( SG_HANDBOOK_RELEASE_NAME) .epub
2024-08-16 15:12:12 +02:00
endif # ($(strip $(SG_HANDBOOK_REVISION)),mismatched)
2024-07-29 14:37:01 +02:00
2024-07-20 22:35:07 +02:00
################################################################################
2024-07-29 13:45:58 +02:00
# mdbook-pdf Configuration
2024-07-20 22:35:07 +02:00
################################################################################
2025-02-14 14:50:13 +01:00
ifneq ( $( strip $( SG_HANDBOOK_REVISION )) ,mismatched)
SG_MDBOOK_HTML_SITE_URL := /$( SG_HANDBOOK_REVISION) /
endif # ($(strip $(SG_HANDBOOK_REVISION)),mismatched)
2024-07-20 22:35:07 +02:00
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
SG_MDBOOK_PDF_BROWSER_BINARY_PATH := $( SG_BROWSER_BINARY_PATH_LINUX)
else ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_WINDOWS ) )
SG_MDBOOK_PDF_BROWSER_BINARY_PATH := $( SG_BROWSER_BINARY_PATH_WINDOWS)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
$( error The target operating system is not supported !)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2024-07-22 10:32:28 +02:00
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
2024-07-29 08:21:20 +02:00
SG_LINUX_PYTHON_VENV_DIR := $( shell mktemp -d) /sg-ue-handbook-venv
SG_LINUX_PYTHON_VENV_BIN_DIR := $( SG_LINUX_PYTHON_VENV_DIR) /bin
export PATH := $( SG_LINUX_PYTHON_VENV_BIN_DIR) :$( PATH)
export PWD := $( SG_LINUX_PYTHON_VENV_BIN_DIR)
export VIRTUAL_ENV := $( SG_LINUX_PYTHON_VENV_DIR)
2024-07-22 10:32:28 +02:00
else ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_WINDOWS ) )
2024-07-29 08:21:20 +02:00
SG_DIST_DIR := $( SG_HANDBOOK_DIR) /dist
2024-07-22 10:32:28 +02:00
SG_WINPYTHON_DIR := $( SG_DIST_DIR) /winpython
2025-06-02 09:06:44 +02:00
SG_WINPYTHON_BIN_DIR := $( SG_WINPYTHON_DIR) //python-3.12.4.amd64
2024-07-21 19:30:36 +02:00
SG_WINPYTHON_BIN_SCRIPTS_DIR := $( SG_WINPYTHON_BIN_DIR) /Scripts
2024-07-22 10:32:28 +02:00
SG_WINPYTHON_SCRIPTS_DIR := $( SG_WINPYTHON_DIR) /scripts
2024-07-29 16:12:41 +02:00
export PATH := $( SG_WINPYTHON_SCRIPTS_DIR) ; $( PATH)
export PATH := $( SG_WINPYTHON_BIN_SCRIPTS_DIR) ; $( PATH)
export PATH := $( SG_WINPYTHON_BIN_DIR) ; $( PATH)
export PATH := $( SG_RSYNC_BIN_PATH_WINDOWS) ; $( PATH)
2024-07-29 13:45:58 +02:00
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
$( error The target operating system is not supported !)
2024-07-22 10:32:28 +02:00
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2024-07-21 19:30:36 +02:00
2024-07-29 13:45:58 +02:00
################################################################################
# Deployment Configuration
################################################################################
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
SG_HANDBOOK_DEPLOY_CONFIG_FILE := $( shell echo ~/.config/$( SG_HANDBOOK_CONFIG_HOME_DIR) /$( SG_HANDBOOK_DEPLOY_CONFIG_FILENAME))
else ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_WINDOWS ) )
SG_HANDBOOK_DEPLOY_CONFIG_FILE := $( shell cygpath -u $( LOCALAPPDATA) /$( SG_HANDBOOK_CONFIG_HOME_DIR) /$( SG_HANDBOOK_DEPLOY_CONFIG_FILENAME))
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
$( error The target operating system is not supported !)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
################################################################################
# Deployment Temporary Directory Setup
################################################################################
$( info Setting up a deployment temporary directory '$( SG_HANDBOOK_DEPLOY_TEMP_DIR_NAME ) ')
SG_HANDBOOK_DEPLOY_TEMP_DIR := $( shell mktemp -d -t $( SG_HANDBOOK_DEPLOY_TEMP_DIR_NAME))
$( info Temporary directory has been set up at '$( SG_HANDBOOK_DEPLOY_TEMP_DIR ) ')
2024-07-30 10:15:42 +02:00
SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE := $( SG_HANDBOOK_DEPLOY_TEMP_DIR) /$( SG_HANDBOOK_RELEASE_NAME) .pdf
2025-01-17 13:38:19 +01:00
SG_HANDBOOK_DEPLOY_GENERATED_EPUB_FILE := $( SG_HANDBOOK_DEPLOY_TEMP_DIR) /$( SG_HANDBOOK_RELEASE_NAME) .epub
2024-07-29 14:37:01 +02:00
2024-07-29 13:45:58 +02:00
SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE := $( SG_HANDBOOK_DEPLOY_TEMP_DIR) /revisions.txt
2024-07-29 14:37:01 +02:00
SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE := $( SG_HANDBOOK_DEPLOY_TEMP_DIR) /index.html
2024-07-29 13:45:58 +02:00
################################################################################
# Env Configuration Functions
################################################################################
define load_env
$(eval ENV_FILE : = $( 1) )
@echo "Loading configuration file ' $( ENV_FILE) '..."
$( eval include $( ENV_FILE))
$( eval export )
endef
2024-07-11 20:56:25 +02:00
################################################################################
# Make Targets - All
################################################################################
.PHONY : all
all : help
################################################################################
# Make Targets - Misc
################################################################################
.PHONY : help
help :
@echo ""
@echo "Available make targets:"
@echo ""
@echo " - make build"
@echo " - make clean"
@echo " - make deploy"
@echo " - make help"
@echo " - make info"
2024-08-16 12:48:43 +02:00
@echo " - make pack"
2024-07-11 20:56:25 +02:00
@echo " - make serve"
@echo ""
.PHONY : info
info :
@echo ""
2024-07-29 08:40:04 +02:00
@echo " $( SG_PROJECT_NAME) build information:"
2024-07-11 20:56:25 +02:00
@echo ""
@echo " - Handbook Revision : $( SG_HANDBOOK_REVISION) "
2024-07-29 14:37:01 +02:00
@echo " - Handbook Revision URL : $( SG_HANDBOOK_REVISION_URL) "
@echo " - Handbook PDF URL : $( SG_HANDBOOK_PDF_URL) "
2025-01-17 13:38:19 +01:00
@echo " - Handbook ePub URL : $( SG_HANDBOOK_EPUB_URL) "
2024-07-11 20:56:25 +02:00
@echo " - Git Branch : $( SG_GIT_BRANCH) "
@echo " - Git Tag : $( SG_GIT_TAG) "
@echo " - Git Commit : $( SG_GIT_COMMIT) "
@echo " - Git Commits Since Tag : $( SG_GIT_COMMIT_NUMS_SINCE_TAG) "
@echo " - Git Tree State : $( SG_GIT_TREE_STATE) "
2024-08-16 17:54:21 +02:00
@echo " - Git Is Shallow Clone : $( SG_GIT_IS_SHALLOW_CLONE) "
@echo " - Git Latest Remote Tag : $( SG_GIT_LATEST_REMOTE_TAG) "
2024-07-11 20:56:25 +02:00
@echo " - Git Version : $( SG_GIT_VERSION) "
@echo " - Git Version Major : $( SG_GIT_VERSION_MAJOR) "
@echo " - Git Version Minor : $( SG_GIT_VERSION_MINOR) "
@echo " - Git Version Patch : $( SG_GIT_VERSION_PATCH) "
@echo " - Plugin Version : $( SG_PLUGIN_VERSION) "
@echo " - Plugin Version Major : $( SG_PLUGIN_VERSION_MAJOR) "
@echo " - Plugin Version Minor : $( SG_PLUGIN_VERSION_MINOR) "
@echo " - Plugin Version Patch : $( SG_PLUGIN_VERSION_PATCH) "
@echo " - Build Host : $( SG_BUILD_HOST) "
@echo " - Build Time : $( SG_BUILD_TIME) "
@echo ""
.PHONY : clean
clean :
@echo "Cleaning up $( SG_PROJECT_NAME) ..."
@rm -rf " $( SG_MDBOOK_DEST_DIR) "
@echo " $( SG_PROJECT_NAME) has been cleaned up successfully!"
.PHONY : install -build -deps
install-build-deps :
@echo "Installing build dependencies if they have not already been installed..."
2026-02-05 08:15:27 +01:00
@rustup install $( RUST_TOOLCHAIN_VERSION)
@rustup override set $( RUST_TOOLCHAIN_VERSION)
2026-02-04 17:03:44 +01:00
@cargo install mdbook --version "0.5.2" --locked
2024-08-14 19:04:46 +02:00
@cargo install xq --vers "^0.4" --locked
2026-02-04 17:03:44 +01:00
@cargo install mdbook-pdf --vers "0.1.13" --locked
2024-07-29 08:21:20 +02:00
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
@echo "Installing mdbook-pdf-outline..."
2024-07-29 13:45:58 +02:00
@python -m venv $( VIRTUAL_ENV ) \
&& . $( SG_LINUX_PYTHON_VENV_BIN_DIR ) /activate \
&& pip install mdbook-pdf-outline 2>/dev/null
2024-07-29 08:21:20 +02:00
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2026-02-04 17:03:44 +01:00
@cargo install --git https://github.com/Michael-F-Bryan/mdbook-epub --rev 21a1c8134134201a2d555313447c96e56e2a8996 --locked
2024-07-11 20:56:25 +02:00
################################################################################
# Make Targets - mdBook
################################################################################
.PHONY : prepare
prepare :
@echo "Preparing the handbook $( SG_HANDBOOK_DIR) ..."
prepare : prepare -src
prepare : prepare -dest
.PHONY : prepare -dest
prepare-dest :
@echo "Preparing the handbook target dir $( SG_MDBOOK_DEST_DIR) ..."
.PHONY : prepare -src
prepare-src :
@echo "Preparing the handbook source dir $( SG_MDBOOK_SRC_DIR) ..."
2024-07-14 12:13:28 +02:00
.PHONY : verify -handbook -revision
verify-handbook-revision :
2024-07-11 20:56:25 +02:00
ifeq ( $( SG_HANDBOOK_REVISION ) , next)
@echo "Building an unstable handbook for the next release..."
else # ($(SG_HANDBOOK_REVISION), next)
ifeq ( $( SG_HANDBOOK_REVISION ) , mismatched)
@echo ""
@echo "Failed to verify the handbook build due to some discrepancies. Please verify the following : "
@echo ""
@echo "If you're building a release handbook:"
@echo " - You are either on a release tag, e.g. v2.1.0, or on the master branch."
@echo " - No commit has been made since the targeted tag."
@echo " - The Git tree state is clean."
@echo " - The Git version and plugin version match each other."
@echo ""
@echo "If you're building an unstable handbook for the next release:"
@echo " - You're building from the dev branch."
@echo " - The Git version value evaluates to empty."
@echo ""
2024-08-16 17:54:21 +02:00
@echo "If you're packaging the handbook:"
@echo " - You're on a release branch."
@echo " - You're shallow cloning."
@echo " - The remorte Git repository contains releae tags."
@echo ""
2024-07-11 20:56:25 +02:00
@exit 1
else # ($(SG_HANDBOOK_REVISION), mismatched)
@echo "Building a release handbook: $( SG_HANDBOOK_REVISION) ..."
endif # ($(SG_HANDBOOK_REVISION), mismatched)
endif # ($(SG_HANDBOOK_REVISION), next)
.PHONY : serve
serve : info
serve : install -build -deps
serve : prepare
2024-07-29 08:40:04 +02:00
serve : _mdbook_serve
.PHONY : build
build : info
build : install -build -deps
build : prepare
build : verify -handbook -revision
build : _mdbook_build
2024-07-30 10:15:42 +02:00
.PHONY : pack
pack : info
pack : install -build -deps
pack : prepare
pack : verify -handbook -revision
pack : _mdbook_build
pack : _pack
2024-07-29 08:40:04 +02:00
.PHONY : deploy
deploy : info
deploy : install -build -deps
deploy : clean
deploy : prepare
deploy : verify -handbook -revision
deploy : _mdbook_build
2024-07-29 13:45:58 +02:00
deploy : _deploy
2024-07-29 08:40:04 +02:00
.PHONY : _mdbook_serve
_mdbook_serve :
2024-07-11 20:56:25 +02:00
@echo "Serving $( SG_HANDBOOK_DIR) ..."
@env SG_PROJECT_NAME = '$(SG_PROJECT_NAME)' \
SG_HANDBOOK_REVISION = '$(SG_HANDBOOK_REVISION)' \
2024-07-29 14:37:01 +02:00
SG_HANDBOOK_REVISION_URL = '$(SG_HANDBOOK_REVISION_URL)' \
SG_HANDBOOK_PDF_URL = '$(SG_HANDBOOK_PDF_URL)' \
2025-01-17 13:38:19 +01:00
SG_HANDBOOK_EPUB_URL = '$(SG_HANDBOOK_EPUB_URL)' \
2024-07-11 20:56:25 +02:00
SG_GIT_BRANCH = '$(SG_GIT_BRANCH)' \
SG_GIT_TAG = '$(SG_GIT_TAG)' \
SG_GIT_COMMIT = '$(SG_GIT_COMMIT)' \
SG_GIT_COMMIT_NUMS_SINCE_TAG = '$(SG_GIT_COMMIT_NUMS_SINCE_TAG)' \
SG_GIT_TREE_STATE = '$(SG_GIT_TREE_STATE)' \
2024-08-16 17:54:21 +02:00
SG_GIT_IS_SHALLOW_CLONE = '$(SG_GIT_IS_SHALLOW_CLONE)' \
SG_GIT_LATEST_REMOTE_TAG = '$(SG_GIT_LATEST_REMOTE_TAG)' \
2024-07-11 20:56:25 +02:00
SG_GIT_VERSION = '$(SG_GIT_VERSION)' \
SG_GIT_VERSION_MAJOR = '$(SG_GIT_VERSION_MAJOR)' \
SG_GIT_VERSION_MINOR = '$(SG_GIT_VERSION_MINOR)' \
SG_GIT_VERSION_PATCH = '$(SG_GIT_VERSION_PATCH)' \
SG_PLUGIN_VERSION = '$(SG_PLUGIN_VERSION)' \
SG_PLUGIN_VERSION_MAJOR = '$(SG_PLUGIN_VERSION_MAJOR)' \
SG_PLUGIN_VERSION_MINOR = '$(SG_PLUGIN_VERSION_MINOR)' \
SG_PLUGIN_VERSION_PATCH = '$(SG_PLUGIN_VERSION_PATCH)' \
SG_BUILD_HOST = '$(SG_BUILD_HOST)' \
SG_BUILD_TIME = '$(SG_BUILD_TIME)' \
2024-08-16 15:12:12 +02:00
MDBOOK_output__html__site_url = '$(SG_MDBOOK_HTML_SITE_URL)' \
2024-07-20 22:35:07 +02:00
MDBOOK_output__pdf__browser_binary_path = '$(SG_MDBOOK_PDF_BROWSER_BINARY_PATH)' \
2024-07-11 20:56:25 +02:00
mdbook serve \
-n $( SG_MDBOOK_HOST) \
-p $( SG_MDBOOK_PORT) \
--watcher $( SG_MDBOOK_WATCHER) \
--dest-dir $( SG_MDBOOK_DEST_DIR)
2024-07-29 08:40:04 +02:00
.PHONY : _mdbook_build
_mdbook_build :
@echo "Building $( SG_HANDBOOK_DIR) ..."
@env SG_PROJECT_NAME = '$(SG_PROJECT_NAME)' \
SG_HANDBOOK_REVISION = '$(SG_HANDBOOK_REVISION)' \
2024-07-29 14:37:01 +02:00
SG_HANDBOOK_REVISION_URL = '$(SG_HANDBOOK_REVISION_URL)' \
SG_HANDBOOK_PDF_URL = '$(SG_HANDBOOK_PDF_URL)' \
2025-01-17 13:38:19 +01:00
SG_HANDBOOK_EPUB_URL = '$(SG_HANDBOOK_EPUB_URL)' \
2024-07-29 08:40:04 +02:00
SG_GIT_BRANCH = '$(SG_GIT_BRANCH)' \
SG_GIT_TAG = '$(SG_GIT_TAG)' \
SG_GIT_COMMIT = '$(SG_GIT_COMMIT)' \
SG_GIT_COMMIT_NUMS_SINCE_TAG = '$(SG_GIT_COMMIT_NUMS_SINCE_TAG)' \
2025-02-14 14:42:00 +01:00
SG_GIT_TREE_STATE = '$(SG_GIT_TREE_STATE)' \
2024-08-16 17:54:21 +02:00
SG_GIT_IS_SHALLOW_CLONE = '$(SG_GIT_IS_SHALLOW_CLONE)' \
SG_GIT_LATEST_REMOTE_TAG = '$(SG_GIT_LATEST_REMOTE_TAG)' \
2024-07-29 08:40:04 +02:00
SG_GIT_VERSION = '$(SG_GIT_VERSION)' \
SG_GIT_VERSION_MAJOR = '$(SG_GIT_VERSION_MAJOR)' \
SG_GIT_VERSION_MINOR = '$(SG_GIT_VERSION_MINOR)' \
SG_GIT_VERSION_PATCH = '$(SG_GIT_VERSION_PATCH)' \
SG_PLUGIN_VERSION = '$(SG_PLUGIN_VERSION)' \
SG_PLUGIN_VERSION_MAJOR = '$(SG_PLUGIN_VERSION_MAJOR)' \
SG_PLUGIN_VERSION_MINOR = '$(SG_PLUGIN_VERSION_MINOR)' \
SG_PLUGIN_VERSION_PATCH = '$(SG_PLUGIN_VERSION_PATCH)' \
SG_BUILD_HOST = '$(SG_BUILD_HOST)' \
SG_BUILD_TIME = '$(SG_BUILD_TIME)' \
2024-08-16 15:12:12 +02:00
MDBOOK_output__html__site_url = '$(SG_MDBOOK_HTML_SITE_URL)' \
2024-07-29 08:40:04 +02:00
MDBOOK_output__pdf__browser_binary_path = '$(SG_MDBOOK_PDF_BROWSER_BINARY_PATH)' \
mdbook build \
--dest-dir $( SG_MDBOOK_DEST_DIR)
2024-07-29 13:45:58 +02:00
2024-07-30 10:15:42 +02:00
.PHONY : _pack
_pack :
@echo "Packing ' $( SG_HANDBOOK_DIR) '..."
@echo "Cleaning up the pack directory ' $( SG_DOCUMENTATION_PACK_DIR) '..."
@rm -rf " $( SG_DOCUMENTATION_PACK_DIR) "
@echo "Creating the pack directory ' $( SG_DOCUMENTATION_PACK_DIR) '..."
@mkdir -p " $( SG_DOCUMENTATION_PACK_DIR) "
@echo "Moving ' $( SG_DOCUMENTATION_HTML_DIR) ' to ' $( SG_HANDBOOK_PACKED_HTML_DIR) '..."
2024-07-30 17:43:43 +02:00
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
2025-01-17 13:33:32 +01:00
@mv "$(SG_DOCUMENTATION_HTML_DIR)" "$(SG_HANDBOOK_PACKED_HTML_DIR)"
2024-07-30 17:43:43 +02:00
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@powershell -Command "Move-Item ' $( SG_DOCUMENTATION_HTML_DIR) ' ' $( SG_HANDBOOK_PACKED_HTML_DIR) '"
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2024-07-30 10:15:42 +02:00
@echo "Compressing ' $( SG_HANDBOOK_PACKED_HTML_DIR) ' to ' $( SG_HANDBOOK_PACKED_HTML_FILE) '..."
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
2025-01-17 13:33:32 +01:00
@cd "$(SG_DOCUMENTATION_PACK_DIR)" \
2024-07-30 10:15:42 +02:00
&& zip $( SG_HANDBOOK_PACKED_HTML_FILE ) -r $( SG_HANDBOOK_ESCAPED_NAME )
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2025-01-17 13:33:32 +01:00
@cd " $( SG_DOCUMENTATION_PACK_DIR) " \
2024-07-30 10:15:42 +02:00
&& powershell Compress-Archive $( SG_HANDBOOK_ESCAPED_NAME) $( SG_HANDBOOK_PACKED_HTML_FILE)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2024-07-30 17:43:43 +02:00
@echo "Moving ' $( SG_DOCUMENTATION_PDF_FILE) ' to ' $( SG_HANDBOOK_PACKED_PDF_FILE) '..."
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
2025-01-17 13:33:32 +01:00
@mv "$(SG_DOCUMENTATION_PDF_FILE)" "$(SG_HANDBOOK_PACKED_PDF_FILE)"
2024-07-30 17:43:43 +02:00
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@powershell -Command "Move-Item ' $( SG_DOCUMENTATION_PDF_FILE) ' ' $( SG_HANDBOOK_PACKED_PDF_FILE) '"
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2025-01-17 13:38:19 +01:00
@echo "Moving ' $( SG_DOCUMENTATION_EPUB_FILE) ' to ' $( SG_HANDBOOK_PACKED_EPUB_FILE) '..."
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
@mv "$(SG_DOCUMENTATION_EPUB_FILE)" "$(SG_HANDBOOK_PACKED_EPUB_FILE)"
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@powershell -Command "Move-Item ' $( SG_DOCUMENTATION_EPUB_FILE) ' ' $( SG_HANDBOOK_PACKED_EPUB_FILE) '"
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2024-07-30 10:15:42 +02:00
2024-07-29 13:45:58 +02:00
.PHONY : _deploy
_deploy :
@echo "Deploying ' $( SG_HANDBOOK_DIR) '..."
@echo "Loading the Handbook deployment configuration file..."
@$( call load_env, $( SG_HANDBOOK_DEPLOY_CONFIG_FILE))
@echo "Deploying ' $( SG_HANDBOOK_DIR) ' to ' $( SG_HANDBOOK_SSH_USER) @ $( SG_HANDBOOK_SSH_HOST) : $( SG_HANDBOOK_SSH_REMOTE_DIR) / $( SG_HANDBOOK_REVISION) '..."
2024-07-29 16:12:41 +02:00
ifeq ( $( SG_BUILD_PLATFORM ) , $( SG_BUILD_PLATFORM_LINUX ) )
@rsync \
-avze "ssh -p $(SG_HANDBOOK_SSH_PORT)" \
--perms \
--chmod = u+rwx,g+rx,o+rx,g-w,o-wx \
--delete $( SG_DOCUMENTATION_HTML_DIR) / \
$( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) :$( SG_HANDBOOK_SSH_REMOTE_DIR) /$( SG_HANDBOOK_REVISION)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2025-01-17 13:33:32 +01:00
@cd " $( SG_DOCUMENTATION_DIR) " \
2024-07-29 16:12:41 +02:00
&& " $( SG_RSYNC_BINARY_PATH_WINDOWS) " \
-avze "\" $( SG_RSYNC_SSH_BINARY_PATH_WINDOWS) \" -p $( SG_HANDBOOK_SSH_PORT) " \
2024-07-29 15:31:36 +02:00
--perms \
2024-07-29 16:12:41 +02:00
--chmod= u+rwx,g+rx,o+rx,g-w,o-wx \
2024-07-29 15:31:36 +02:00
--delete $( SG_DOCUMENTATION_HTML_DIR_NAME) / \
$( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) :$( SG_HANDBOOK_SSH_REMOTE_DIR) /$( SG_HANDBOOK_REVISION)
2024-07-29 16:12:41 +02:00
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
2024-07-29 14:37:01 +02:00
@echo "Copying ' $( SG_DOCUMENTATION_PDF_FILE) ' to ' $( SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE) '..."
2025-01-17 13:33:32 +01:00
@cp -v " $( SG_DOCUMENTATION_PDF_FILE) " " $( SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE) "
2024-07-29 14:37:01 +02:00
@echo "Uploading ' $( SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE) ' to ' $( SG_HANDBOOK_SSH_USER) @ $( SG_HANDBOOK_SSH_HOST) : $( SG_HANDBOOK_SSH_REMOTE_DIR) / $( SG_HANDBOOK_REVISION) '..."
@scp \
-P $( SG_HANDBOOK_SSH_PORT) \
2025-01-17 13:40:00 +01:00
" $( SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE) " \
2024-07-29 14:37:01 +02:00
$( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) :$( SG_HANDBOOK_SSH_REMOTE_DIR) /$( SG_HANDBOOK_REVISION)
2025-01-17 13:38:19 +01:00
@echo "Copying ' $( SG_DOCUMENTATION_EPUB_FILE) ' to ' $( SG_HANDBOOK_DEPLOY_GENERATED_EPUB_FILE) '..."
@cp -v " $( SG_DOCUMENTATION_EPUB_FILE) " " $( SG_HANDBOOK_DEPLOY_GENERATED_EPUB_FILE) "
@echo "Uploading ' $( SG_HANDBOOK_DEPLOY_GENERATED_EPUB_FILE) ' to ' $( SG_HANDBOOK_SSH_USER) @ $( SG_HANDBOOK_SSH_HOST) : $( SG_HANDBOOK_SSH_REMOTE_DIR) / $( SG_HANDBOOK_REVISION) '..."
@scp \
-P $( SG_HANDBOOK_SSH_PORT) \
2025-01-17 13:40:00 +01:00
" $( SG_HANDBOOK_DEPLOY_GENERATED_EPUB_FILE) " \
2025-01-17 13:38:19 +01:00
$( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) :$( SG_HANDBOOK_SSH_REMOTE_DIR) /$( SG_HANDBOOK_REVISION)
2024-07-29 13:45:58 +02:00
@echo "Retrieving the list of deployed handbook revisions from ' $( SG_HANDBOOK_SSH_USER) @ $( SG_HANDBOOK_SSH_HOST) : $( SG_HANDBOOK_SSH_PORT) / $( SG_HANDBOOK_SSH_REMOTE_DIR) '..."
@ssh \
-p $( SG_HANDBOOK_SSH_PORT) $( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) \
"mkdir -p $( SG_HANDBOOK_SSH_REMOTE_DIR) "
@ssh \
-p $( SG_HANDBOOK_SSH_PORT) $( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) \
"find $( SG_HANDBOOK_SSH_REMOTE_DIR) -maxdepth 1 -type d ! -path $( SG_HANDBOOK_SSH_REMOTE_DIR) -exec basename {} \; | sort -r" \
> $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE)
@{ \
grep -i 'next' $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) ; \
grep -vi 'next' $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) \
| sort -r; \
2025-01-17 13:33:32 +01:00
} > " $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) .tmp"
@mv " $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) .tmp" " $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) "
2024-07-29 13:45:58 +02:00
@echo "Revisions list saved to ' $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) '!"
@echo "Current revisions:"
2025-01-17 13:33:32 +01:00
@sed 's/^/ - /' " $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) "
2024-07-29 14:37:01 +02:00
@echo "Generating ' $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) '..."
2025-01-17 13:33:32 +01:00
@echo "<html>" > " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<head>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<title>Welcome to $( SG_PROJECT_NAME) </title>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<link rel='icon' href='favicon.svg'>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<link rel='shortcut icon' href='favicon.svg'>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<style>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "body {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "font-family: Arial, sans-serif;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "background-color: #003070;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "color: #fff;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "margin: 0;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "padding: 0;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".container {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "padding: 2.0em;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".logo-container {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "text-align: center;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".logo-container img {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "max-width: 100%;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "height: auto;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".title-container {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "text-align: center;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".revisions-container {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "display: table;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "width: 300px;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "margin: 0 auto;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "padding: 20px;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".row {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "display: table-row;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".cell {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "display: table-cell;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "background-color: #004890;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "border-radius: 5px;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "margin: 10px;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "padding: 20px;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "text-align: center;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "transition: transform 0.2s;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".cell:hover {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "transform: scale(1.05);" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo ".cell a {" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "display: block;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "height: 100%;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "width: 100%;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "text-decoration: none;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "color: #fff;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "font-weight: bold;" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "}" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</style>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</head>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<body>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<div class='container'>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
2024-07-31 12:40:27 +02:00
@echo "<div class='logo-container'>" >> $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
2025-01-17 13:33:32 +01:00
@echo "<img src=" favicon.svg" alt='SenseGlove' />" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</div>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<div class='title-container'>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<h1>Welcome to the SenseGlove Unreal Engine Handbook</h1>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<h3>Please choose a revision to continue!</h3>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<h5>* Please note that the next revision is the documentation for the unstable next release of the plugin and subject to change!</h5>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</div>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "<div class='revisions-container'>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
2024-07-29 13:45:58 +02:00
@while read dir; \
do \
echo "<div class='row'><div class='cell'><a href=\" $$ dir\"> $$ dir</a></div></div>" ; \
2025-01-17 13:33:32 +01:00
done < $( SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</div>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</div>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</body>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
@echo "</html>" >> " $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) "
2024-07-31 11:50:02 +02:00
@echo "Uploading ' $( SG_HANDBOOK_FAVICON_FILE) ' to ' $( SG_HANDBOOK_SSH_USER) @ $( SG_HANDBOOK_SSH_HOST) : $( SG_HANDBOOK_SSH_REMOTE_DIR) '"
@scp \
-P $( SG_HANDBOOK_SSH_PORT) \
2025-01-17 13:40:00 +01:00
" $( SG_HANDBOOK_FAVICON_FILE) " \
2024-07-31 11:50:02 +02:00
$( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) :$( SG_HANDBOOK_SSH_REMOTE_DIR)
2024-07-29 14:37:01 +02:00
@echo "Uploading ' $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) ' to ' $( SG_HANDBOOK_SSH_USER) @ $( SG_HANDBOOK_SSH_HOST) : $( SG_HANDBOOK_SSH_REMOTE_DIR) '"
2024-07-29 13:45:58 +02:00
@scp \
-P $( SG_HANDBOOK_SSH_PORT) \
2025-01-17 13:40:00 +01:00
" $( SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) " \
2025-01-17 11:08:45 +01:00
$( SG_HANDBOOK_SSH_USER) @$( SG_HANDBOOK_SSH_HOST) :$( SG_HANDBOOK_SSH_REMOTE_DIR)