185 lines
6.8 KiB
Bash
Executable file
185 lines
6.8 KiB
Bash
Executable file
#!/bin/bash
|
|
# This is free software for the public good of a permacomputer hosted at
|
|
# permacomputer.com, an always-on computer by the people, for the people.
|
|
# One which is durable, easy to repair, & distributed like tap water
|
|
# for machine learning intelligence.
|
|
#
|
|
# The permacomputer is community-owned infrastructure optimized around
|
|
# four values:
|
|
#
|
|
# TRUTH First principles, math & science, open source code freely distributed
|
|
# FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
|
|
# HARMONY Minimal waste, self-renewing systems with diverse thriving connections
|
|
# LOVE Be yourself without hurting others, cooperation through natural law
|
|
#
|
|
# This software contributes to that vision by enabling code execution across 42+ programming languages through a unified interface, accessible to all.
|
|
# Code is seeds to sprout on any abandoned technology.
|
|
|
|
# Set version across VERSION file and all client source files
|
|
# Usage: scripts/set-version.sh 4.2.0
|
|
# Or: make set-version VERSION=4.2.0
|
|
|
|
set -e
|
|
|
|
VERSION="${1:-}"
|
|
|
|
if [ -z "$VERSION" ]; then
|
|
echo "Usage: $0 <version>"
|
|
echo "Example: $0 4.2.0"
|
|
exit 1
|
|
fi
|
|
|
|
# Validate version format (X.Y.Z)
|
|
if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
|
|
echo "Error: Version must be in format X.Y.Z (e.g., 4.2.0)"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Setting version to $VERSION..."
|
|
|
|
# Track files updated
|
|
UPDATED=0
|
|
|
|
# 1. VERSION file
|
|
echo "$VERSION" > VERSION
|
|
echo " ✓ VERSION"
|
|
UPDATED=$((UPDATED + 1))
|
|
|
|
# 2. C SDK - unsandbox_version() return value
|
|
if [ -f "clients/c/src/un.c" ]; then
|
|
sed -i "s/return \"[0-9]\+\.[0-9]\+\.[0-9]\+\";/return \"$VERSION\";/" clients/c/src/un.c
|
|
echo " ✓ clients/c/src/un.c"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 3. Python sync __init__.py
|
|
if [ -f "clients/python/sync/src/__init__.py" ]; then
|
|
sed -i "s/__version__ = \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/__version__ = \"$VERSION\"/" clients/python/sync/src/__init__.py
|
|
echo " ✓ clients/python/sync/src/__init__.py"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 4. Python sync setup.py
|
|
if [ -f "clients/python/sync/setup.py" ]; then
|
|
sed -i "s/version=\"[0-9]\+\.[0-9]\+\.[0-9]\+\"/version=\"$VERSION\"/" clients/python/sync/setup.py
|
|
echo " ✓ clients/python/sync/setup.py"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 5. Python async setup.py
|
|
if [ -f "clients/python/async/setup.py" ]; then
|
|
sed -i "s/version=\"[0-9]\+\.[0-9]\+\.[0-9]\+\"/version=\"$VERSION\"/" clients/python/async/setup.py
|
|
echo " ✓ clients/python/async/setup.py"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 6. Lua SDK
|
|
if [ -f "clients/lua/sync/src/un.lua" ]; then
|
|
sed -i "s/Un\.VERSION = \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/Un.VERSION = \"$VERSION\"/" clients/lua/sync/src/un.lua
|
|
echo " ✓ clients/lua/sync/src/un.lua"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 7. Perl SDK
|
|
if [ -f "clients/perl/sync/src/un.pl" ]; then
|
|
sed -i "s/our \$VERSION = \"[0-9]\+\.[0-9]\+\.[0-9]\+\";/our \$VERSION = \"$VERSION\";/" clients/perl/sync/src/un.pl
|
|
echo " ✓ clients/perl/sync/src/un.pl"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 8. Groovy SDK (javadoc @version tag)
|
|
if [ -f "clients/groovy/sync/src/un.groovy" ]; then
|
|
sed -i "s/@version [0-9]\+\.[0-9]\+\.[0-9]\+/@version $VERSION/" clients/groovy/sync/src/un.groovy
|
|
echo " ✓ clients/groovy/sync/src/un.groovy"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 9. JavaScript package.json (if exists)
|
|
if [ -f "clients/javascript/sync/package.json" ]; then
|
|
sed -i "s/\"version\": \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\": \"$VERSION\"/" clients/javascript/sync/package.json
|
|
echo " ✓ clients/javascript/sync/package.json"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
if [ -f "clients/javascript/async/package.json" ]; then
|
|
sed -i "s/\"version\": \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\": \"$VERSION\"/" clients/javascript/async/package.json
|
|
echo " ✓ clients/javascript/async/package.json"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 10. TypeScript package.json (if exists)
|
|
if [ -f "clients/typescript/sync/package.json" ]; then
|
|
sed -i "s/\"version\": \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\": \"$VERSION\"/" clients/typescript/sync/package.json
|
|
echo " ✓ clients/typescript/sync/package.json"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 11. Rust Cargo.toml (if exists)
|
|
if [ -f "clients/rust/sync/Cargo.toml" ]; then
|
|
sed -i "s/^version = \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/version = \"$VERSION\"/" clients/rust/sync/Cargo.toml
|
|
echo " ✓ clients/rust/sync/Cargo.toml"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
if [ -f "clients/rust/async/Cargo.toml" ]; then
|
|
sed -i "s/^version = \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/version = \"$VERSION\"/" clients/rust/async/Cargo.toml
|
|
echo " ✓ clients/rust/async/Cargo.toml"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
|
|
# 12. Go module (if has version constant)
|
|
for gofile in clients/go/sync/src/un.go clients/go/async/src/un_async.go; do
|
|
if [ -f "$gofile" ]; then
|
|
if grep -q 'Version.*=.*"[0-9]\+\.[0-9]\+\.[0-9]\+"' "$gofile"; then
|
|
sed -i "s/Version.*=.*\"[0-9]\+\.[0-9]\+\.[0-9]\+\"/Version = \"$VERSION\"/" "$gofile"
|
|
echo " ✓ $gofile"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# 13. Ruby gemspec or version constant
|
|
if [ -f "clients/ruby/sync/src/un.rb" ]; then
|
|
if grep -q 'VERSION.*=.*"[0-9]\+\.[0-9]\+\.[0-9]\+"' "clients/ruby/sync/src/un.rb"; then
|
|
sed -i "s/VERSION.*=.*\"[0-9]\+\.[0-9]\+\.[0-9]\+\"/VERSION = \"$VERSION\"/" clients/ruby/sync/src/un.rb
|
|
echo " ✓ clients/ruby/sync/src/un.rb"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
fi
|
|
|
|
# 14. Java/Kotlin version in source (if exists)
|
|
for javafile in clients/java/sync/src/Un.java clients/kotlin/sync/src/un.kt; do
|
|
if [ -f "$javafile" ]; then
|
|
if grep -q 'VERSION.*=.*"[0-9]\+\.[0-9]\+\.[0-9]\+"' "$javafile"; then
|
|
sed -i "s/VERSION.*=.*\"[0-9]\+\.[0-9]\+\.[0-9]\+\"/VERSION = \"$VERSION\"/" "$javafile"
|
|
echo " ✓ $javafile"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# 15. .NET 10 (dotnet) - const string VERSION = "X.Y.Z";
|
|
for dotnetfile in clients/dotnet/sync/src/Un.cs clients/dotnet/async/src/Un.cs; do
|
|
if [ -f "$dotnetfile" ]; then
|
|
sed -i "s/const string VERSION = \"[0-9]\+\.[0-9]\+\.[0-9]\+\";/const string VERSION = \"$VERSION\";/" "$dotnetfile"
|
|
echo " ✓ $dotnetfile"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
done
|
|
|
|
# 16. C# Mono - VERSION constant (if exists)
|
|
for csharpfile in clients/csharp/sync/src/Un.cs clients/csharp/async/src/Un.cs; do
|
|
if [ -f "$csharpfile" ]; then
|
|
if grep -q 'VERSION.*=.*"[0-9]\+\.[0-9]\+\.[0-9]\+"' "$csharpfile"; then
|
|
sed -i "s/VERSION.*=.*\"[0-9]\+\.[0-9]\+\.[0-9]\+\"/VERSION = \"$VERSION\"/" "$csharpfile"
|
|
echo " ✓ $csharpfile"
|
|
UPDATED=$((UPDATED + 1))
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "Done! Updated $UPDATED files to version $VERSION"
|
|
echo ""
|
|
echo "Verify with:"
|
|
echo " grep -rn '$VERSION' VERSION clients/*/sync/src/* clients/*/async/src/* 2>/dev/null | grep -v node_modules | head -20"
|