Add phase tree command in cmd module

*This is the smaller patchset from earlier work:
 https://review.opendev.org/#/c/750449/

* This is the second part of huge PS
* First: https://review.opendev.org/#/c/762386/

Change-Id: I8e7a13445f73b46a8b83f79711551a6fd5f5ce1f
Relates-To: #296
This commit is contained in:
bijayasharma 2020-11-11 14:06:59 -05:00 committed by Bijaya Sharma
parent 4c0cbecf6d
commit 2615afa87b
10 changed files with 156 additions and 3 deletions

View File

@ -38,6 +38,7 @@ func NewPhaseCommand(cfgFactory config.Factory) *cobra.Command {
phaseRootCmd.AddCommand(NewRenderCommand(cfgFactory))
phaseRootCmd.AddCommand(NewPlanCommand(cfgFactory))
phaseRootCmd.AddCommand(NewRunCommand(cfgFactory))
phaseRootCmd.AddCommand(NewTreeCommand(cfgFactory))
return phaseRootCmd
}

View File

@ -9,6 +9,7 @@ Available Commands:
plan List phases
render Render phase documents from model
run Run phase
tree Tree view of kustomize entrypoints of phase
Flags:
-h, --help help for phase

View File

@ -0,0 +1,16 @@
Summarized tree view of the kustomize entrypoints of a specific phase
Usage:
tree PHASE_NAME [flags]
Examples:
# yaml explorer of a phase with relative path
airshipctl phase tree /manifests/site/test-site/ephemeral/initinfra
#yaml explorer of a phase with phase name
airshipctl phase tree initinfra-ephemeral
Flags:
-h, --help help for tree

58
cmd/phase/tree.go Normal file
View File

@ -0,0 +1,58 @@
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package phase
import (
"github.com/spf13/cobra"
"opendev.org/airship/airshipctl/pkg/config"
"opendev.org/airship/airshipctl/pkg/phase"
"opendev.org/airship/airshipctl/pkg/phase/ifc"
)
const (
treeLong = `
Summarized tree view of the kustomize entrypoints of a specific phase`
treeExample = `
# yaml explorer of a phase with relative path
airshipctl phase tree /manifests/site/test-site/ephemeral/initinfra
#yaml explorer of a phase with phase name
airshipctl phase tree initinfra-ephemeral
`
)
// NewTreeCommand creates a command to get summarized tree view of the kustomize entrypoints of a phase
func NewTreeCommand(cfgFactory config.Factory) *cobra.Command {
treeCmd := &cobra.Command{
Use: "tree PHASE_NAME",
Short: "Tree view of kustomize entrypoints of phase",
Long: treeLong[1:],
Args: cobra.ExactArgs(1),
Example: treeExample,
RunE: func(cmd *cobra.Command, args []string) error {
writer := cmd.OutOrStdout()
p := &phase.TreeCommand{
Factory: cfgFactory,
PhaseID: ifc.ID{},
Writer: writer,
}
p.Argument = args[0]
return p.RunE()
},
}
return treeCmd
}

35
cmd/phase/tree_test.go Normal file
View File

@ -0,0 +1,35 @@
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package phase_test
import (
"testing"
"opendev.org/airship/airshipctl/cmd/phase"
"opendev.org/airship/airshipctl/testutil"
)
func TestNewTreeCommand(t *testing.T) {
tests := []*testutil.CmdTest{
{
Name: "tree-cmd-with-help",
CmdLine: "--help",
Cmd: phase.NewTreeCommand(nil),
},
}
for _, testcase := range tests {
testutil.RunTest(t, testcase)
}
}

View File

@ -27,4 +27,5 @@ such as getting list and applying specific one.
* [airshipctl phase plan](airshipctl_phase_plan.md) - List phases
* [airshipctl phase render](airshipctl_phase_render.md) - Render phase documents from model
* [airshipctl phase run](airshipctl_phase_run.md) - Run phase
* [airshipctl phase tree](airshipctl_phase_tree.md) - Tree view of kustomize entrypoints of phase

View File

@ -0,0 +1,41 @@
## airshipctl phase tree
Tree view of kustomize entrypoints of phase
### Synopsis
Summarized tree view of the kustomize entrypoints of a specific phase
```
airshipctl phase tree PHASE_NAME [flags]
```
### Examples
```
# yaml explorer of a phase with relative path
airshipctl phase tree /manifests/site/test-site/ephemeral/initinfra
#yaml explorer of a phase with phase name
airshipctl phase tree initinfra-ephemeral
```
### Options
```
-h, --help help for tree
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
```
### SEE ALSO
* [airshipctl phase](airshipctl_phase.md) - Manage phases

View File

@ -2,5 +2,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../target/catalogues
patches:
patchesStrategicMerge:
- networking.yaml

View File

@ -5,6 +5,6 @@ resources:
- ../../../../type/gating/shared/catalogues
- hosts.yaml
patches:
patchesStrategicMerge:
- versions-airshipctl.yaml
- networking.yaml

View File

@ -2,6 +2,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../../function/airshipctl-base-catalogues
patches:
patchesStrategicMerge:
- networking.yaml