diff --git a/cli/cmd/download.go b/cli/cmd/download.go new file mode 100644 index 00000000..0f84cd05 --- /dev/null +++ b/cli/cmd/download.go @@ -0,0 +1,70 @@ +/* + * Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * http://www.apache.org/licenses/LICENSE-2.0 + * or in the "license" file accompanying this file. This file 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 cmd + +import ( + entity "esad/internal/entity/ad" + "fmt" + "os" + "path/filepath" + + "github.com/spf13/cobra" +) + +const ( + commandDownload = "download" +) + +//downloadCmd downloads detectors configuration on current working directory. +var downloadCmd = &cobra.Command{ + Use: commandDownload + " [flags] [list of detectors]", + Short: "downloads detectors configurations based on id or name pattern", + Long: `downloads detectors configurations based on id or name pattern, use "" to make sure the name is not matched with pwd lists'`, + Run: func(cmd *cobra.Command, args []string) { + //If no args, display usage + if len(args) < 1 { + if err := cmd.Usage(); err != nil { + fmt.Println(err) + } + return + } + printDetectors(WriteInFile, cmd, args) + }, +} + +func WriteInFile(d *entity.DetectorOutput) { + cwd, err := os.Getwd() + if err != nil { + fmt.Println(err) + return + } + filePath := filepath.Join(cwd, d.Name) + f, err := os.Create(filePath) + defer func() { + f.Close() + }() + if err != nil { + fmt.Println(err) + return + } + err = FPrint(f, d) + if err != nil { + fmt.Println(err) + } +} + +func init() { + esadCmd.AddCommand(downloadCmd) + downloadCmd.Flags().BoolP("name", "", true, "Input is name or pattern") + downloadCmd.Flags().BoolP("id", "", false, "Input is id") +}