# Gitea CLI Commands # # User-facing CLI commands for Gitea integration # # Version: 1.0.0 use api_client.nu * use service.nu * use workspace_git.nu * use locking.nu * use extension_publish.nu * # Gitea service status export def "gitea status" [] -> nothing { let status = get-gitea-status print "Gitea Status:" print $" Mode: ($status.mode)" if $status.mode == "remote" { print $" URL: ($status.url)" print $" Accessible: ($status.accessible)" } else { print $" Deployment: ($status.deployment)" print $" Running: ($status.running)" print $" Port: ($status.port)" print $" URL: ($status.url)" if $status.deployment == "docker" { print $" Container: ($status.container_name)" } else { print $" Binary: ($status.binary_path)" } } # Check health let healthy = check-gitea-health print $" Health: (if $healthy { "✓ OK" } else { "❌ Unavailable" })" } # Start Gitea service export def "gitea start" [] -> nothing { start-gitea } # Stop Gitea service export def "gitea stop" [ --remove (-r) # Remove container (Docker only) ] -> nothing { if $remove { stop-gitea-docker --remove } else { stop-gitea } } # Restart Gitea service export def "gitea restart" [] -> nothing { restart-gitea } # Show Gitea logs export def "gitea logs" [ --lines (-n): int = 100 --follow (-f) ] -> nothing { get-gitea-logs --lines $lines --follow=$follow } # Install Gitea binary export def "gitea install" [ version?: string = "latest" --install-dir: string = "/usr/local/bin" ] -> nothing { install-gitea $version --install-dir $install_dir } # Repository commands # Create repository export def "gitea repo create" [ name: string --org (-o): string = "" --description (-d): string = "" --private (-p): bool = false ] -> nothing { let config = get-gitea-config let organization = if ($org | is-empty) { $config.repositories.organization } else { $org } let repo = create-repository $organization $name $description $private print $"✓ Repository created: ($repo.full_name)" print $" URL: ($repo.html_url)" } # List repositories export def "gitea repo list" [ --org (-o): string = "" ] -> nothing { let repos = if ($org | is-empty) { list-user-repositories } else { list-repositories $org } $repos | select name full_name private description html_url | table } # Delete repository export def "gitea repo delete" [ name: string --org (-o): string = "" --force (-f) ] -> nothing { let config = get-gitea-config let organization = if ($org | is-empty) { $config.repositories.organization } else { $org } delete-repository $organization $name --force=$force } # Extension commands # Publish extension export def "gitea extension publish" [ extension_path: string version: string --release-notes (-m): string = "" --draft (-d): bool = false --prerelease (-p): bool = false ] -> nothing { let metadata = publish-extension-to-gitea $extension_path $version \ --release-notes $release_notes \ --draft=$draft \ --prerelease=$prerelease print "" print "Extension published:" print $" Name: ($metadata.extension_name)" print $" Type: ($metadata.extension_type)" print $" Version: ($metadata.version)" print $" Release URL: ($metadata.release_url)" } # List published extensions export def "gitea extension list" [ --type (-t): string = "" ] -> nothing { let extensions = if ($type | is-empty) { list-gitea-extensions } else { list-gitea-extensions --extension-type $type } $extensions | select extension_name extension_type version published_at url | table } # Download extension export def "gitea extension download" [ name: string version: string --destination (-d): string = "./extensions" ] -> nothing { download-gitea-extension $name $version $destination } # Show extension info export def "gitea extension info" [ name: string version: string ] -> nothing { let metadata = get-gitea-extension-metadata $name $version print "Extension Information:" print $" Name: ($metadata.extension_name)" print $" Type: ($metadata.extension_type)" print $" Version: ($metadata.version)" print $" Tag: ($metadata.tag_name)" print $" Published: ($metadata.published_at)" print $" Draft: ($metadata.draft)" print $" Prerelease: ($metadata.prerelease)" print $" URL: ($metadata.url)" print "" print "Release Notes:" print $metadata.body } # Lock commands # Acquire workspace lock export def "gitea lock acquire" [ workspace: string type: string # read, write, deploy --operation (-o): string = "" --expiry (-e): string = "" ] -> nothing { let lock = acquire-workspace-lock $workspace $type $operation $expiry print $"✓ Lock acquired for workspace: ($workspace)" print $" Lock ID: ($lock.lock_id)" print $" Type: ($lock.lock_type)" print $" User: ($lock.user)" } # Release workspace lock export def "gitea lock release" [ workspace: string lock_id: int ] -> nothing { release-workspace-lock $workspace $lock_id } # List workspace locks export def "gitea lock list" [ workspace?: string ] -> nothing { let locks = if ($workspace | is-empty) { list-all-locks } else { list-workspace-locks $workspace } if ($locks | length) == 0 { print "No active locks" } else { $locks | select number workspace lock_type user created_at url | table } } # Show lock info export def "gitea lock info" [ workspace: string lock_id: int ] -> nothing { let lock = get-lock-info $workspace $lock_id print "Lock Information:" print $" Lock ID: ($lock.lock_id)" print $" Workspace: ($lock.workspace)" print $" Type: ($lock.lock_type)" print $" User: ($lock.user)" print $" State: ($lock.state)" print $" Created: ($lock.created_at)" print $" Updated: ($lock.updated_at)" print $" URL: ($lock.url)" print "" print "Details:" print $lock.body } # Force release lock export def "gitea lock force-release" [ workspace: string lock_id: int --reason (-r): string = "Forced unlock" ] -> nothing { force-release-lock $workspace $lock_id --reason $reason } # Cleanup expired locks export def "gitea lock cleanup" [] -> nothing { let expired = cleanup-expired-locks if ($expired | length) == 0 { print "No expired locks found" } else { print $"Cleaned up ($expired | length) expired locks" } } # User/Auth commands # Validate token export def "gitea auth validate" [] -> nothing { let valid = validate-token if $valid { print "✓ Token is valid" let user = get-current-user print $" User: ($user.login)" print $" Email: ($user.email)" } else { print "❌ Token is invalid" } } # Show current user export def "gitea user" [] -> nothing { let user = get-current-user print "Current User:" print $" Username: ($user.login)" print $" Email: ($user.email)" print $" Full Name: ($user.full_name)" print $" ID: ($user.id)" } # Organization commands # Create organization export def "gitea org create" [ name: string --description (-d): string = "" --visibility (-v): string = "private" ] -> nothing { let org = create-organization $name $description $visibility print $"✓ Organization created: ($org.username)" print $" URL: ($org.website)" } # List organizations export def "gitea org list" [] -> nothing { let orgs = list-organizations $orgs | select username description | table } # Gitea help export def "gitea help" [] -> nothing { print "Gitea Integration Commands" print "" print "Service:" print " gitea status - Show Gitea service status" print " gitea start - Start Gitea service" print " gitea stop - Stop Gitea service" print " gitea restart - Restart Gitea service" print " gitea logs - Show Gitea logs" print " gitea install [version] - Install Gitea binary" print "" print "Repositories:" print " gitea repo create - Create repository" print " gitea repo list - List repositories" print " gitea repo delete - Delete repository" print "" print "Extensions:" print " gitea extension publish - Publish extension" print " gitea extension list - List published extensions" print " gitea extension download - Download extension" print " gitea extension info - Show extension info" print "" print "Workspace Locking:" print " gitea lock acquire - Acquire lock" print " gitea lock release - Release lock" print " gitea lock list [workspace] - List active locks" print " gitea lock info - Show lock details" print " gitea lock force-release - Force release lock" print " gitea lock cleanup - Cleanup expired locks" print "" print "Authentication:" print " gitea auth validate - Validate auth token" print " gitea user - Show current user" print "" print "Organizations:" print " gitea org create - Create organization" print " gitea org list - List organizations" }