mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-15 02:42:45 +08:00
feat: Implement dynamic version detection and passing system
**Installation System Updates**: - install-remote.ps1: Auto-detect version from GitHub API and pass to installer - Install-Claude.ps1: Accept dynamic version via -SourceVersion parameter - install-remote.sh: Synchronize version detection logic with PowerShell version - Add installer_version field to version.json for tracking **Codex Agent Optimization** (.codex/AGENTS.md): - Add system optimization requirements for direct binary execution - Prioritize apply_patch tool over Python scripts for file editing - Add Windows UTF-8 encoding configuration for Chinese character support **Version Flow**: 1. install-remote.* detects version from GitHub API (latest release tag) 2. Passes version to Install-Claude.* via -SourceVersion/-SourceBranch 3. Installer writes accurate version to version.json 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -78,7 +78,10 @@ if ($PSVersionTable.PSVersion.Major -ge 6) {
|
|||||||
|
|
||||||
# Script metadata
|
# Script metadata
|
||||||
$ScriptName = "Claude Code Workflow System Installer"
|
$ScriptName = "Claude Code Workflow System Installer"
|
||||||
$Version = "2.1.0"
|
$ScriptVersion = "2.2.0" # Installer script version
|
||||||
|
|
||||||
|
# Default version (will be overridden by -SourceVersion from install-remote.ps1)
|
||||||
|
$DefaultVersion = "unknown"
|
||||||
|
|
||||||
# Initialize backup behavior - backup is enabled by default unless NoBackup is specified
|
# Initialize backup behavior - backup is enabled by default unless NoBackup is specified
|
||||||
if (-not $BackupAll -and -not $NoBackup) {
|
if (-not $BackupAll -and -not $NoBackup) {
|
||||||
@@ -141,8 +144,15 @@ function Show-Banner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Show-Header {
|
function Show-Header {
|
||||||
|
param(
|
||||||
|
[string]$InstallVersion = $DefaultVersion
|
||||||
|
)
|
||||||
|
|
||||||
Show-Banner
|
Show-Banner
|
||||||
Write-ColorOutput " $ScriptName v$Version" $ColorInfo
|
Write-ColorOutput " $ScriptName v$ScriptVersion" $ColorInfo
|
||||||
|
if ($InstallVersion -ne "unknown") {
|
||||||
|
Write-ColorOutput " Installing Claude Code Workflow v$InstallVersion" $ColorInfo
|
||||||
|
}
|
||||||
Write-ColorOutput " Unified workflow system with comprehensive coordination" $ColorInfo
|
Write-ColorOutput " Unified workflow system with comprehensive coordination" $ColorInfo
|
||||||
Write-ColorOutput "========================================================================" $ColorInfo
|
Write-ColorOutput "========================================================================" $ColorInfo
|
||||||
if ($NoBackup) {
|
if ($NoBackup) {
|
||||||
@@ -638,8 +648,8 @@ function Create-VersionJson {
|
|||||||
[string]$InstallationMode
|
[string]$InstallationMode
|
||||||
)
|
)
|
||||||
|
|
||||||
# Determine version from source or default
|
# Determine version from source parameter (passed from install-remote.ps1)
|
||||||
$versionNumber = if ($SourceVersion) { $SourceVersion } else { $Version }
|
$versionNumber = if ($SourceVersion) { $SourceVersion } else { $DefaultVersion }
|
||||||
$sourceBranch = if ($SourceBranch) { $SourceBranch } else { "unknown" }
|
$sourceBranch = if ($SourceBranch) { $SourceBranch } else { "unknown" }
|
||||||
|
|
||||||
# Create version.json content
|
# Create version.json content
|
||||||
@@ -649,6 +659,7 @@ function Create-VersionJson {
|
|||||||
installation_path = $TargetClaudeDir
|
installation_path = $TargetClaudeDir
|
||||||
installation_date_utc = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
|
installation_date_utc = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
|
||||||
source_branch = $sourceBranch
|
source_branch = $sourceBranch
|
||||||
|
installer_version = $ScriptVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
$versionJsonPath = Join-Path $TargetClaudeDir "version.json"
|
$versionJsonPath = Join-Path $TargetClaudeDir "version.json"
|
||||||
@@ -1024,7 +1035,10 @@ function Show-Summary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Main {
|
function Main {
|
||||||
Show-Header
|
# Use SourceVersion parameter if provided, otherwise use default
|
||||||
|
$installVersion = if ($SourceVersion) { $SourceVersion } else { $DefaultVersion }
|
||||||
|
|
||||||
|
Show-Header -InstallVersion $installVersion
|
||||||
|
|
||||||
# Test prerequisites
|
# Test prerequisites
|
||||||
Write-ColorOutput "Checking system requirements..." $ColorInfo
|
Write-ColorOutput "Checking system requirements..." $ColorInfo
|
||||||
|
|||||||
@@ -563,7 +563,23 @@ function Main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Determine version and branch information to pass
|
# Determine version and branch information to pass
|
||||||
$versionToPass = if ($Tag) { $Tag } else { "latest" }
|
$versionToPass = ""
|
||||||
|
if ($Tag) {
|
||||||
|
# Specific tag version
|
||||||
|
$versionToPass = $Tag -replace '^v', '' # Remove 'v' prefix
|
||||||
|
} elseif ($Version -eq "stable") {
|
||||||
|
# Auto-detected latest stable
|
||||||
|
$latestTag = Get-LatestRelease
|
||||||
|
if ($latestTag) {
|
||||||
|
$versionToPass = $latestTag -replace '^v', ''
|
||||||
|
} else {
|
||||||
|
$versionToPass = "latest"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Latest development or branch
|
||||||
|
$versionToPass = "latest"
|
||||||
|
}
|
||||||
|
|
||||||
$branchToPass = if ($Version -eq "branch") { $Branch } elseif ($Version -eq "latest") { "main" } elseif ($Tag) { $Tag } else { "main" }
|
$branchToPass = if ($Version -eq "branch") { $Branch } elseif ($Version -eq "latest") { "main" } elseif ($Tag) { $Tag } else { "main" }
|
||||||
|
|
||||||
Write-ColorOutput "Version info: $versionToPass (branch: $branchToPass)" $ColorInfo
|
Write-ColorOutput "Version info: $versionToPass (branch: $branchToPass)" $ColorInfo
|
||||||
|
|||||||
@@ -209,6 +209,8 @@ function extract_repository() {
|
|||||||
|
|
||||||
function invoke_local_installer() {
|
function invoke_local_installer() {
|
||||||
local repo_dir="$1"
|
local repo_dir="$1"
|
||||||
|
local version_info="$2"
|
||||||
|
local branch_info="$3"
|
||||||
local installer_path="${repo_dir}/Install-Claude.sh"
|
local installer_path="${repo_dir}/Install-Claude.sh"
|
||||||
|
|
||||||
# Make installer executable
|
# Make installer executable
|
||||||
@@ -249,6 +251,15 @@ function invoke_local_installer() {
|
|||||||
params+=("-BackupAll")
|
params+=("-BackupAll")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Pass version and branch information
|
||||||
|
if [ -n "$version_info" ]; then
|
||||||
|
params+=("-SourceVersion" "$version_info")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$branch_info" ]; then
|
||||||
|
params+=("-SourceBranch" "$branch_info")
|
||||||
|
fi
|
||||||
|
|
||||||
# Execute installer
|
# Execute installer
|
||||||
if (cd "$repo_dir" && "$installer_path" "${params[@]}"); then
|
if (cd "$repo_dir" && "$installer_path" "${params[@]}"); then
|
||||||
return 0
|
return 0
|
||||||
@@ -632,8 +643,41 @@ function main() {
|
|||||||
if [ $extract_status -eq 0 ] && [ -n "$repo_dir" ] && [ -d "$repo_dir" ]; then
|
if [ $extract_status -eq 0 ] && [ -n "$repo_dir" ] && [ -d "$repo_dir" ]; then
|
||||||
write_color "Extraction successful: $repo_dir" "$COLOR_SUCCESS"
|
write_color "Extraction successful: $repo_dir" "$COLOR_SUCCESS"
|
||||||
|
|
||||||
# Run local installer
|
# Determine version and branch information to pass
|
||||||
if invoke_local_installer "$repo_dir"; then
|
local version_to_pass=""
|
||||||
|
local branch_to_pass=""
|
||||||
|
|
||||||
|
if [ -n "$TAG_VERSION" ]; then
|
||||||
|
# Specific tag version - remove 'v' prefix
|
||||||
|
version_to_pass="${TAG_VERSION#v}"
|
||||||
|
elif [ "$VERSION_TYPE" = "stable" ]; then
|
||||||
|
# Auto-detected latest stable
|
||||||
|
local latest_tag
|
||||||
|
latest_tag=$(get_latest_release)
|
||||||
|
if [ -n "$latest_tag" ]; then
|
||||||
|
version_to_pass="${latest_tag#v}"
|
||||||
|
else
|
||||||
|
version_to_pass="latest"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Latest development or branch
|
||||||
|
version_to_pass="latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$VERSION_TYPE" = "branch" ]; then
|
||||||
|
branch_to_pass="$BRANCH"
|
||||||
|
elif [ "$VERSION_TYPE" = "latest" ]; then
|
||||||
|
branch_to_pass="main"
|
||||||
|
elif [ -n "$TAG_VERSION" ]; then
|
||||||
|
branch_to_pass="$TAG_VERSION"
|
||||||
|
else
|
||||||
|
branch_to_pass="main"
|
||||||
|
fi
|
||||||
|
|
||||||
|
write_color "Version info: $version_to_pass (branch: $branch_to_pass)" "$COLOR_INFO"
|
||||||
|
|
||||||
|
# Run local installer with version information
|
||||||
|
if invoke_local_installer "$repo_dir" "$version_to_pass" "$branch_to_pass"; then
|
||||||
success=true
|
success=true
|
||||||
echo ""
|
echo ""
|
||||||
write_color "✓ Remote installation completed successfully!" "$COLOR_SUCCESS"
|
write_color "✓ Remote installation completed successfully!" "$COLOR_SUCCESS"
|
||||||
|
|||||||
Reference in New Issue
Block a user