feat: added install logic

This commit is contained in:
FernandoJVideira committed 2026-01-29 22:17:11 +00:00
1 parent 5e31fc2f23
commit 9d745785ed
9 files changed
+134 -18

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
package main
import (
"archive/zip"
"fmt"
"os"
"path/filepath"
"strings"
)
func main() {
if len(os.Args) != 3 {
fmt.Println("usage: create_zip <source_dir> <output_zip>")
os.Exit(1)
}
sourceDir := os.Args[1]
outputZip := os.Args[2]
outFile, err := os.Create(outputZip)
if err != nil {
panic(err)
}
defer outFile.Close()
w := zip.NewWriter(outFile)
defer w.Close()
err = filepath.Walk(sourceDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil // Skip directory entries entirely
}
// Skip hidden files/directories (like .DS_Store)
if strings.HasPrefix(filepath.Base(path), ".") {
return nil
}
// Get path relative to the source directory
relPath, err := filepath.Rel(sourceDir, path)
if err != nil {
return err
}
// Ensure forward slashes for zip spec compliance
relPath = filepath.ToSlash(relPath)
// Create file in zip
f, err := w.Create(relPath)
if err != nil {
return err
}
// Write content
fileContent, err := os.ReadFile(path)
if err != nil {
return err
}
_, err = f.Write(fileContent)
return err
})
if err != nil {
panic(err)
}
}
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
set -e
# Usage: ./tools/publish-package.sh <version> <gitea-token>
VERSION=$1
TOKEN=$2
MODULE="gitea.fernandovideira.com/fernandojvideira/keystone"
# Note: The zip must contain the full domain path as the root directory
ZIP_ROOT="${MODULE}@${VERSION}"
API_URL="https://gitea.fernandovideira.com/api/packages/FernandoJVideira/go/upload"
if [ -z "$VERSION" ] || [ -z "$TOKEN" ]; then
echo "Usage: $0 <version> <gitea-token>"
exit 1
fi
echo "🚀 preparing release $VERSION..."
# 1. Generate the assets locally
make prepare-embed
# 2. Create a temporary staging area
TMP_DIR=$(mktemp -d)
TARGET_DIR="$TMP_DIR/$ZIP_ROOT"
mkdir -p "$TARGET_DIR"
# 3. Export clean git source to staging
git archive --format=tar HEAD | tar -x -C "$TARGET_DIR"
# 4. Copy the generated (and git-ignored) assets into the staging area
# We assume assets/embedded exists after 'make prepare-embed'
mkdir -p "$TARGET_DIR/assets/embedded"
cp -r assets/embedded/* "$TARGET_DIR/assets/embedded/"
# 5. Zip it up (using a custom Go tool to avoid directory entries)
ZIP_FILE="keystone-$VERSION.zip"
# We run the tool from the current directory, pointing it to the temp dir
go run tools/create_zip.go "$TMP_DIR" "$ZIP_FILE"
# 6. Upload to Gitea
echo "📦 Uploading to Gitea Package Registry..."
curl --fail --silent --show-error \
--user "FernandoJVideira:$TOKEN" \
--upload-file "$ZIP_FILE" \
"$API_URL"
# Cleanup
rm -rf "$TMP_DIR" "$ZIP_FILE"
echo "✅ Published $VERSION successfully!"