11package search
22
33import (
4+
45 "github.com/IBM-Cloud/ibm-cloud-cli-sdk/plugin"
56 "github.com/spf13/cobra"
67
78 . "github.ibm.com/SoftLayer/softlayer-cli/plugin/i18n"
9+ "github.ibm.com/SoftLayer/softlayer-cli/plugin/managers"
810 "github.ibm.com/SoftLayer/softlayer-cli/plugin/metadata"
11+ "github.ibm.com/SoftLayer/softlayer-cli/plugin/utils"
912)
1013
14+ type SearchCommand struct {
15+ * metadata.SoftlayerCommand
16+ SearchManager managers.SearchManager
17+ Command * cobra.Command
18+ Query string
19+ }
20+
1121func SetupCobraCommands (sl * metadata.SoftlayerCommand ) * cobra.Command {
22+ thisCmd := & SearchCommand {
23+ SoftlayerCommand : sl ,
24+ SearchManager : managers .NewSearchManager (sl .Session ),
25+ }
1226 cobraCmd := & cobra.Command {
1327 Use : "search" ,
1428 Short : T ("Perform a query against the SoftLayer search database." ),
15- RunE : nil ,
16- }
29+ Long : T ( `Read More: https://sldn.softlayer.com/reference/services/SoftLayer_Search/search/
30+ Examples::
1731
32+ sl search --query 'test.com'
33+ sl search --query '_objectType:SoftLayer_Virtual_Guest test.com'
34+ ` ),
35+ Args : metadata .NoArgs ,
36+ RunE : func (cmd * cobra.Command , args []string ) error {
37+ return thisCmd .Run (args )
38+ },
39+ }
40+ cobraCmd .Flags ().StringVarP (& thisCmd .Query , "query" , "q" , "" , T ("The search query you want to use." ))
1841 cobraCmd .AddCommand (NewSearchTypesCommand (sl ).Command )
1942 return cobraCmd
2043}
@@ -26,3 +49,11 @@ func SearchNamespace() plugin.Namespace {
2649 Description : T ("Perform a query against the SoftLayer search database." ),
2750 }
2851}
52+
53+ func (cmd * SearchCommand ) Run (args []string ) error {
54+
55+ results , err := cmd .SearchManager .AdvancedSearch ("" , cmd .Query )
56+ if err != nil { return err }
57+
58+ return utils .PrintPrettyJSON (cmd .UI , results )
59+ }
0 commit comments