mirror of
https://github.com/hanzoai/deploy.git
synced 2026-10-07 08:44:50 +00:00
Every command is cd-*: cd, cd-server, cd-repo-server, cd-application-controller, cd-applicationset-controller, cd-cmp-server, cd-commit-server, cd-dex, cd-git-ask-pass, cd-k8s-auth, cd-notification. util/argo is util/cd; util/notification/argocd is util/notification/cd. Preserved deliberately: github.com/argoproj/argocd-example-apps is an EXTERNAL repo used as an e2e fixture, and notifications-engine + pkg/v2 are real dependencies. Renaming a URL we do not own would break the tests. Two bugs I made and caught, both from a careless sed: - s/argo/cd/g turned 'argocd' into 'cdcd' in two directory names - renaming the package declaration left every call site saying argo.X go build ./... exit 0. Co-authored-by: Hanzo Dev <[email protected]>
71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package commands
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"reflect"
|
|
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
const (
|
|
// DefaultSSOLocalPort is the localhost port to listen on for the temporary web server performing
|
|
// the OAuth2 login flow.
|
|
DefaultSSOLocalPort = 8085
|
|
)
|
|
|
|
// PrintResource prints a single resource in YAML or JSON format to stdout according to the output format
|
|
func PrintResource(resource any, output string) error {
|
|
switch output {
|
|
case "json":
|
|
jsonBytes, err := json.MarshalIndent(resource, "", " ")
|
|
if err != nil {
|
|
return fmt.Errorf("unable to marshal resource to json: %w", err)
|
|
}
|
|
fmt.Println(string(jsonBytes))
|
|
case "yaml":
|
|
yamlBytes, err := yaml.Marshal(resource)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to marshal resource to yaml: %w", err)
|
|
}
|
|
fmt.Print(string(yamlBytes))
|
|
default:
|
|
return fmt.Errorf("unknown output format: %s", output)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// PrintResourceList marshals & prints a list of resources to stdout according to the output format
|
|
func PrintResourceList(resources any, output string, single bool) error {
|
|
kt := reflect.ValueOf(resources)
|
|
// Sometimes, we want to marshal the first resource of a slice or array as single item
|
|
if kt.Kind() == reflect.Slice || kt.Kind() == reflect.Array {
|
|
if single && kt.Len() == 1 {
|
|
return PrintResource(kt.Index(0).Interface(), output)
|
|
}
|
|
|
|
// If we have a zero len list, prevent printing "null"
|
|
if kt.Len() == 0 {
|
|
return PrintResource([]string{}, output)
|
|
}
|
|
}
|
|
|
|
switch output {
|
|
case "json":
|
|
jsonBytes, err := json.MarshalIndent(resources, "", " ")
|
|
if err != nil {
|
|
return fmt.Errorf("unable to marshal resources to json: %w", err)
|
|
}
|
|
fmt.Println(string(jsonBytes))
|
|
case "yaml":
|
|
yamlBytes, err := yaml.Marshal(resources)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to marshal resources to yaml: %w", err)
|
|
}
|
|
fmt.Print(string(yamlBytes))
|
|
default:
|
|
return fmt.Errorf("unknown output format: %s", output)
|
|
}
|
|
return nil
|
|
}
|