mirror of
https://gitea.com/gitea/tea.git
synced 2025-10-20 14:34:05 +02:00

## Summary This PR adds comprehensive Actions secrets and variables management functionality to the tea CLI, enabling users to manage their repository's CI/CD configuration directly from the command line. ## Features Added ### Actions Secrets Management - **List secrets**: `tea actions secrets list` - Display all repository action secrets - **Create secrets**: `tea actions secrets create <name>` - Create new secrets with interactive prompts - **Delete secrets**: `tea actions secrets delete <name>` - Remove existing secrets ### Actions Variables Management - **List variables**: `tea actions variables list` - Display all repository action variables - **Set variables**: `tea actions variables set <name> <value>` - Create or update variables - **Delete variables**: `tea actions variables delete <name>` - Remove existing variables ## Implementation Details - **Interactive prompts**: Secure input handling for sensitive secret values - **Input validation**: Proper validation for secret/variable names and values - **Table formatting**: Consistent output formatting with existing tea commands - **Error handling**: Comprehensive error handling and user feedback - **Test coverage**: Full test suite for all functionality ## Usage Examples ```bash # Secrets management tea actions secrets list tea actions secrets create API_KEY # Will prompt securely for value tea actions secrets delete OLD_SECRET # Variables management tea actions variables list tea actions variables set API_URL https://api.example.com tea actions variables delete UNUSED_VAR ``` ## Related Issue Resolves #797 ## Testing - All new functionality includes comprehensive unit tests - Integration with existing tea CLI patterns and conventions - Validated against Gitea Actions API Reviewed-on: https://gitea.com/gitea/tea/pulls/796 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Ross Golder <ross@golder.org> Co-committed-by: Ross Golder <ross@golder.org>
76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
// Copyright 2024 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package print
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
)
|
|
|
|
// ActionSecretsList prints a list of action secrets
|
|
func ActionSecretsList(secrets []*gitea.Secret, output string) {
|
|
t := table{
|
|
headers: []string{
|
|
"Name",
|
|
"Created",
|
|
},
|
|
}
|
|
|
|
for _, secret := range secrets {
|
|
t.addRow(
|
|
secret.Name,
|
|
FormatTime(secret.Created, output != ""),
|
|
)
|
|
}
|
|
|
|
if len(secrets) == 0 {
|
|
fmt.Printf("No secrets found\n")
|
|
return
|
|
}
|
|
|
|
t.sort(0, true)
|
|
t.print(output)
|
|
}
|
|
|
|
// ActionVariableDetails prints details of a specific action variable
|
|
func ActionVariableDetails(variable *gitea.RepoActionVariable) {
|
|
fmt.Printf("Name: %s\n", variable.Name)
|
|
fmt.Printf("Value: %s\n", variable.Value)
|
|
fmt.Printf("Repository ID: %d\n", variable.RepoID)
|
|
fmt.Printf("Owner ID: %d\n", variable.OwnerID)
|
|
}
|
|
|
|
// ActionVariablesList prints a list of action variables
|
|
func ActionVariablesList(variables []*gitea.RepoActionVariable, output string) {
|
|
t := table{
|
|
headers: []string{
|
|
"Name",
|
|
"Value",
|
|
"Repository ID",
|
|
},
|
|
}
|
|
|
|
for _, variable := range variables {
|
|
// Truncate long values for table display
|
|
value := variable.Value
|
|
if len(value) > 50 {
|
|
value = value[:47] + "..."
|
|
}
|
|
|
|
t.addRow(
|
|
variable.Name,
|
|
value,
|
|
fmt.Sprintf("%d", variable.RepoID),
|
|
)
|
|
}
|
|
|
|
if len(variables) == 0 {
|
|
fmt.Printf("No variables found\n")
|
|
return
|
|
}
|
|
|
|
t.sort(0, true)
|
|
t.print(output)
|
|
}
|