Compare commits
2 commits
f2ca7a5e1c
...
8ad77860d1
| Author | SHA1 | Date | |
|---|---|---|---|
| 8ad77860d1 | |||
| eb64c39312 |
3 changed files with 170 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -16,6 +16,7 @@ logs/
|
|||
tmp/
|
||||
pid/
|
||||
dist/
|
||||
scripts/upload-package.sh
|
||||
|
||||
# Issue creation scripts (these create issues, don't version them)
|
||||
scripts/gitea-issues/
|
||||
|
|
|
|||
|
|
@ -13,3 +13,4 @@
|
|||
25a29c32,0c59b27,main,2025-09-03T09:02:41Z,michael,git,lua-api
|
||||
25a29c32,589dccc,main,2025-09-03T10:16:05Z,michael,git,lua-api
|
||||
25a29c32,53ef8ad,main,2025-09-03T10:23:47Z,michael,git,lua-api
|
||||
25a29c32,eb64c39,main,2025-09-03T18:25:18Z,michael,git,lua-api
|
||||
|
|
|
|||
168
scripts/build-package.sh
Executable file
168
scripts/build-package.sh
Executable file
|
|
@ -0,0 +1,168 @@
|
|||
#!/bin/bash
|
||||
# scripts/build-package.sh
|
||||
# Clean package creation for furt API Gateway
|
||||
# Creates distribution-ready packages excluding development files
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Colors für Output (nur ASCII)
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[OK]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Version bestimmen
|
||||
get_version() {
|
||||
local version=""
|
||||
|
||||
if [[ $# -gt 0 ]]; then
|
||||
version="$1"
|
||||
elif [[ -f "VERSION" ]]; then
|
||||
version=$(cat VERSION | tr -d '\n\r' | sed 's/^v//')
|
||||
elif git rev-parse --git-dir >/dev/null 2>&1; then
|
||||
version=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//')
|
||||
if [[ -z "$version" ]]; then
|
||||
version="0.1.0-$(git rev-parse --short HEAD)"
|
||||
fi
|
||||
else
|
||||
version="0.1.0-$(date +%Y%m%d)"
|
||||
fi
|
||||
|
||||
echo "$version"
|
||||
}
|
||||
|
||||
# Validiere Projekt-Verzeichnis
|
||||
validate_project() {
|
||||
if [[ ! -d "src" ]] || [[ ! -f "src/main.lua" ]]; then
|
||||
log_error "Nicht im furt-Projektverzeichnis oder src/main.lua fehlt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "config" ]]; then
|
||||
log_error "config/ Verzeichnis fehlt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "Projekt-Struktur validiert"
|
||||
}
|
||||
|
||||
# Erstelle sauberes Paket mit VCS-Detection
|
||||
create_package() {
|
||||
local version="$1"
|
||||
local package_name="furt-api-gateway-v${version}.tar.gz"
|
||||
|
||||
log_info "Erstelle Paket: $package_name"
|
||||
|
||||
# Erstelle dist/ Verzeichnis falls nicht vorhanden
|
||||
mkdir -p dist/
|
||||
|
||||
# VCS-Detection für saubere Archive (wie bei merkwerk)
|
||||
if git rev-parse --git-dir >/dev/null 2>&1; then
|
||||
log_info "Using git archive..."
|
||||
git archive --format=tar.gz --prefix=furt-api-gateway-v${version}/ HEAD > "dist/$package_name"
|
||||
elif hg root >/dev/null 2>&1; then
|
||||
log_info "Using hg archive..."
|
||||
hg archive -t tgz -p furt-api-gateway-v${version}/ "dist/$package_name"
|
||||
elif bzr info >/dev/null 2>&1; then
|
||||
log_info "Using bzr export..."
|
||||
bzr export --format=tgz "dist/$package_name" --root=furt-api-gateway-v${version}/
|
||||
elif fossil info >/dev/null 2>&1; then
|
||||
log_info "Using fossil tarball..."
|
||||
fossil tarball --name furt-api-gateway-v${version} "dist/$package_name" HEAD
|
||||
else
|
||||
log_info "No VCS detected, using secure tar exclusions..."
|
||||
tar -czf "dist/$package_name" \
|
||||
--exclude='.git*' --exclude='.hg*' --exclude='.bzr*' --exclude='_FOSSIL_*' \
|
||||
--exclude='dist' --exclude='*.tmp' --exclude='*~' \
|
||||
--exclude='.env*' --exclude='*secret*' --exclude='*key*' \
|
||||
--exclude='*.log' --exclude='*.pid' --exclude='.DS_Store' \
|
||||
--exclude='debug.log' --exclude='furt.pid' \
|
||||
--transform="s,^,furt-api-gateway-v${version}/," \
|
||||
.
|
||||
fi
|
||||
|
||||
# VERSION file in Archive aktualisieren falls nötig
|
||||
if [[ ! -f "VERSION" ]]; then
|
||||
log_warn "VERSION file fehlt - wird im Archiv ergänzt"
|
||||
# Temporär entpacken, VERSION hinzufügen, neu packen
|
||||
local temp_dir=$(mktemp -d)
|
||||
tar -xzf "dist/$package_name" -C "$temp_dir"
|
||||
echo "$version" > "$temp_dir/furt-api-gateway-v${version}/VERSION"
|
||||
tar -czf "dist/$package_name" -C "$temp_dir" "furt-api-gateway-v${version}"
|
||||
rm -rf "$temp_dir"
|
||||
log_info "VERSION file im Archiv ergänzt"
|
||||
fi
|
||||
|
||||
# Package-Info
|
||||
local size=$(du -h "dist/$package_name" | cut -f1)
|
||||
log_success "Paket erstellt: dist/$package_name ($size)"
|
||||
|
||||
# Content-Verification
|
||||
log_info "Paket-Inhalt:"
|
||||
tar -tzf "dist/$package_name" | head -20
|
||||
if [[ $(tar -tzf "dist/$package_name" | wc -l) -gt 20 ]]; then
|
||||
log_info " ... und $(( $(tar -tzf "dist/$package_name" | wc -l) - 20 )) weitere Dateien"
|
||||
fi
|
||||
}
|
||||
|
||||
# Hilfe anzeigen
|
||||
show_help() {
|
||||
echo "build-package.sh - Furt Package Builder"
|
||||
echo ""
|
||||
echo "Usage: $0 [VERSION]"
|
||||
echo ""
|
||||
echo "VERSION:"
|
||||
echo " Explicit version string (e.g., 1.0.0)"
|
||||
echo " If not provided, uses VERSION file or git tags"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Auto-detect version"
|
||||
echo " $0 1.0.0 # Explicit version"
|
||||
echo " $0 1.1.0-rc1 # Pre-release"
|
||||
echo ""
|
||||
echo "Output: dist/furt-api-gateway-vVERSION.tar.gz"
|
||||
}
|
||||
|
||||
# Main
|
||||
main() {
|
||||
if [[ $# -gt 0 ]] && [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log_info "Furt Package Builder"
|
||||
|
||||
validate_project
|
||||
|
||||
local version
|
||||
version=$(get_version "$@")
|
||||
log_info "Version: $version"
|
||||
|
||||
create_package "$version"
|
||||
|
||||
log_success "Package build abgeschlossen!"
|
||||
log_info ""
|
||||
log_info "Nächste Schritte:"
|
||||
log_info " 1. Upload: ./scripts/upload-package.sh $version"
|
||||
log_info " 2. Test: tar -tzf dist/furt-api-gateway-v$version.tar.gz"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue