- Update ToolboxStack/output/toolbox-template/Dockerfile with latest container settings - Update ToolboxStack/output/toolbox-template/PROMPT with enhanced instructions - Update ToolboxStack/output/toolbox-template/SEED with updated seed data - Update ToolboxStack/output/toolbox-template/aqua.yaml with refined tool management - Update ToolboxStack/output/toolbox-template/build.sh with improved build process - Update ToolboxStack/output/toolbox-template/docker-compose.yml with enhanced service definitions - Update ToolboxStack/output/toolbox-template/release.sh with enhanced release process - Update ToolboxStack/output/toolbox-template/run.sh with improved runtime configuration This enhances the toolbox template for creating new developer environments.
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| set -euo pipefail
 | |
| 
 | |
| usage() {
 | |
|     cat <<'EOU'
 | |
| Usage: ./release.sh [--dry-run] [--allow-dirty] <semver>
 | |
| 
 | |
| Examples:
 | |
|   ./release.sh 0.2.0
 | |
|   ./release.sh --dry-run 0.2.0
 | |
| 
 | |
| This script rebuilds the toolbox image, tags it as:
 | |
|   - tsysdevstack-toolboxstack-<name>:dev
 | |
|   - tsysdevstack-toolboxstack-<name>:release-current
 | |
|   - tsysdevstack-toolboxstack-<name>:v<semver>
 | |
| 
 | |
| When run without --dry-run it pushes all three tags.
 | |
| EOU
 | |
| }
 | |
| 
 | |
| DRY_RUN=false
 | |
| ALLOW_DIRTY=false
 | |
| VERSION=""
 | |
| 
 | |
| while (( $# > 0 )); do
 | |
|     case "$1" in
 | |
|         --dry-run)
 | |
|             DRY_RUN=true
 | |
|             shift
 | |
|             ;;
 | |
|         --allow-dirty)
 | |
|             ALLOW_DIRTY=true
 | |
|             shift
 | |
|             ;;
 | |
|         -h|--help)
 | |
|             usage
 | |
|             exit 0
 | |
|             ;;
 | |
|         -*)
 | |
|             echo "Unknown option: $1" >&2
 | |
|             usage
 | |
|             exit 1
 | |
|             ;;
 | |
|         *)
 | |
|             VERSION="$1"
 | |
|             shift
 | |
|             ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| if [[ -z "${VERSION}" ]]; then
 | |
|     echo "Error: semantic version is required." >&2
 | |
|     usage
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| if [[ "${VERSION}" =~ ^v?([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
 | |
|     SEMVER="v${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}"
 | |
| else
 | |
|     echo "Error: version must be semantic (e.g., 0.2.0 or v0.2.0)." >&2
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 | |
| REPO_ROOT="$(cd "${SCRIPT_DIR}" && git rev-parse --show-toplevel 2>/dev/null || true)"
 | |
| 
 | |
| if [[ -n "${REPO_ROOT}" && "${ALLOW_DIRTY}" != "true" ]]; then
 | |
|     if ! git -C "${REPO_ROOT}" diff --quiet --ignore-submodules --exit-code; then
 | |
|         echo "Error: git working tree has uncommitted changes. Please commit or stash before releasing." >&2
 | |
|         exit 1
 | |
|     fi
 | |
| elif [[ -z "${REPO_ROOT}" ]]; then
 | |
|     echo "Warning: unable to resolve git repository root; skipping clean tree check." >&2
 | |
| fi
 | |
| 
 | |
| # Get the toolbox name from the directory name (or you can pass it as an argument)
 | |
| TOOLBOX_NAME="${TOOLBOX_NAME_OVERRIDE:-$(basename "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")}"
 | |
| IMAGE_NAME="tsysdevstack-toolboxstack-${TOOLBOX_NAME#toolbox-}"
 | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 | |
| 
 | |
| USER_ID="${USER_ID_OVERRIDE:-$(id -u)}"
 | |
| GROUP_ID="${GROUP_ID_OVERRIDE:-$(id -g)}"
 | |
| USERNAME="${USERNAME_OVERRIDE:-toolbox}"
 | |
| TEA_VERSION="${TEA_VERSION_OVERRIDE:-0.11.1}"
 | |
| BUILDER_NAME="${BUILDER_NAME:-tsysdevstack-toolboxstack-builder}"
 | |
| CACHE_DIR="${SCRIPT_DIR}/.build-cache"
 | |
| TAG="${TAG_OVERRIDE:-dev}"
 | |
| RELEASE_TAG="${RELEASE_TAG_OVERRIDE:-release-current}"
 | |
| VERSION_TAG="${VERSION_TAG_OVERRIDE:-}"
 | |
| if [[ -n "$VERSION_TAG" ]]; then
 | |
|     VERSION_TAG="$SEMVER"
 | |
| fi
 | |
| PUSH="${PUSH_OVERRIDE:-false}"
 | |
| 
 | |
| echo "Preparing release for ${SEMVER}"
 | |
| echo "  dry-run: ${DRY_RUN}"
 | |
| echo "  allow-dirty: ${ALLOW_DIRTY}"
 | |
| 
 | |
| if [[ "${DRY_RUN}" == "true" ]]; then
 | |
|     echo "[dry-run] Would build ${IMAGE_NAME}:${TAG}"
 | |
|     TAG_OVERRIDE="${TAG}" PUSH_OVERRIDE=false "${SCRIPT_DIR}/build.sh"
 | |
|     echo "[dry-run] Skipped pushing tags."
 | |
| else
 | |
|     echo "Building ${IMAGE_NAME}:${TAG}"
 | |
|     TAG_OVERRIDE="${TAG}" PUSH_OVERRIDE=true RELEASE_TAG_OVERRIDE="${RELEASE_TAG}" VERSION_TAG_OVERRIDE="${SEMVER}" "${SCRIPT_DIR}/build.sh"
 | |
|     echo "Release ${SEMVER} pushed as:"
 | |
|     echo "  - ${IMAGE_NAME}:dev"
 | |
|     echo "  - ${IMAGE_NAME}:release-current"
 | |
|     echo "  - ${IMAGE_NAME}:${SEMVER}"
 | |
| fi |