|
@@ -106,12 +106,11 @@ func ListItems(itemTypes []string, args []string, showType bool, showHeader bool
|
|
|
var hubStatusByItemType = make(map[string][]cwhub.ItemHubStatus)
|
|
|
|
|
|
for _, itemType := range itemTypes {
|
|
|
+ itemName := ""
|
|
|
if len(args) == 1 {
|
|
|
- // This means that user requested a specific item by name
|
|
|
- hubStatusByItemType[itemType] = cwhub.GetHubStatusForItemType(itemType, args[0], all)
|
|
|
- } else {
|
|
|
- hubStatusByItemType[itemType] = cwhub.GetHubStatusForItemType(itemType, "", all)
|
|
|
+ itemName = args[0]
|
|
|
}
|
|
|
+ hubStatusByItemType[itemType] = cwhub.GetHubStatusForItemType(itemType, itemName, all)
|
|
|
}
|
|
|
|
|
|
if csConfig.Cscli.Output == "human" {
|
|
@@ -137,16 +136,13 @@ func ListItems(itemTypes []string, args []string, showType bool, showHeader bool
|
|
|
} else if csConfig.Cscli.Output == "raw" {
|
|
|
csvwriter := csv.NewWriter(os.Stdout)
|
|
|
if showHeader {
|
|
|
+ header := []string{"name", "status", "version", "description"}
|
|
|
if showType {
|
|
|
- err := csvwriter.Write([]string{"name", "status", "version", "description", "type"})
|
|
|
- if err != nil {
|
|
|
- log.Fatalf("failed to write header: %s", err)
|
|
|
- }
|
|
|
- } else {
|
|
|
- err := csvwriter.Write([]string{"name", "status", "version", "description"})
|
|
|
- if err != nil {
|
|
|
- log.Fatalf("failed to write header: %s", err)
|
|
|
- }
|
|
|
+ header = append(header, "type")
|
|
|
+ }
|
|
|
+ err := csvwriter.Write(header)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("failed to write header: %s", err)
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -685,57 +681,56 @@ func BackupHub(dirPath string) error {
|
|
|
"type": itemType,
|
|
|
})
|
|
|
itemMap := cwhub.GetItemMap(itemType)
|
|
|
- if itemMap != nil {
|
|
|
- itemDirectory = fmt.Sprintf("%s/%s/", dirPath, itemType)
|
|
|
- if err := os.MkdirAll(itemDirectory, os.ModePerm); err != nil {
|
|
|
- return fmt.Errorf("error while creating %s : %s", itemDirectory, err)
|
|
|
+ if itemMap == nil {
|
|
|
+ clog.Infof("No %s to backup.", itemType)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ itemDirectory = fmt.Sprintf("%s/%s/", dirPath, itemType)
|
|
|
+ if err := os.MkdirAll(itemDirectory, os.ModePerm); err != nil {
|
|
|
+ return fmt.Errorf("error while creating %s : %s", itemDirectory, err)
|
|
|
+ }
|
|
|
+ upstreamParsers = []string{}
|
|
|
+ for k, v := range itemMap {
|
|
|
+ clog = clog.WithFields(log.Fields{
|
|
|
+ "file": v.Name,
|
|
|
+ })
|
|
|
+ if !v.Installed { //only backup installed ones
|
|
|
+ clog.Debugf("[%s] : not installed", k)
|
|
|
+ continue
|
|
|
}
|
|
|
- upstreamParsers = []string{}
|
|
|
- for k, v := range itemMap {
|
|
|
- clog = clog.WithFields(log.Fields{
|
|
|
- "file": v.Name,
|
|
|
- })
|
|
|
- if !v.Installed { //only backup installed ones
|
|
|
- clog.Debugf("[%s] : not installed", k)
|
|
|
- continue
|
|
|
- }
|
|
|
|
|
|
- //for the local/tainted ones, we backup the full file
|
|
|
- if v.Tainted || v.Local || !v.UpToDate {
|
|
|
- //we need to backup stages for parsers
|
|
|
- if itemType == cwhub.PARSERS || itemType == cwhub.PARSERS_OVFLW {
|
|
|
- fstagedir := fmt.Sprintf("%s%s", itemDirectory, v.Stage)
|
|
|
- if err := os.MkdirAll(fstagedir, os.ModePerm); err != nil {
|
|
|
- return fmt.Errorf("error while creating stage dir %s : %s", fstagedir, err)
|
|
|
- }
|
|
|
- }
|
|
|
- clog.Debugf("[%s] : backuping file (tainted:%t local:%t up-to-date:%t)", k, v.Tainted, v.Local, v.UpToDate)
|
|
|
- tfile := fmt.Sprintf("%s%s/%s", itemDirectory, v.Stage, v.FileName)
|
|
|
- if err = types.CopyFile(v.LocalPath, tfile); err != nil {
|
|
|
- return fmt.Errorf("failed copy %s %s to %s : %s", itemType, v.LocalPath, tfile, err)
|
|
|
+ //for the local/tainted ones, we backup the full file
|
|
|
+ if v.Tainted || v.Local || !v.UpToDate {
|
|
|
+ //we need to backup stages for parsers
|
|
|
+ if itemType == cwhub.PARSERS || itemType == cwhub.PARSERS_OVFLW {
|
|
|
+ fstagedir := fmt.Sprintf("%s%s", itemDirectory, v.Stage)
|
|
|
+ if err := os.MkdirAll(fstagedir, os.ModePerm); err != nil {
|
|
|
+ return fmt.Errorf("error while creating stage dir %s : %s", fstagedir, err)
|
|
|
}
|
|
|
- clog.Infof("local/tainted saved %s to %s", v.LocalPath, tfile)
|
|
|
- continue
|
|
|
}
|
|
|
- clog.Debugf("[%s] : from hub, just backup name (up-to-date:%t)", k, v.UpToDate)
|
|
|
- clog.Infof("saving, version:%s, up-to-date:%t", v.Version, v.UpToDate)
|
|
|
- upstreamParsers = append(upstreamParsers, v.Name)
|
|
|
- }
|
|
|
- //write the upstream items
|
|
|
- upstreamParsersFname := fmt.Sprintf("%s/upstream-%s.json", itemDirectory, itemType)
|
|
|
- upstreamParsersContent, err := json.MarshalIndent(upstreamParsers, "", " ")
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("failed marshaling upstream parsers : %s", err)
|
|
|
- }
|
|
|
- err = ioutil.WriteFile(upstreamParsersFname, upstreamParsersContent, 0644)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("unable to write to %s %s : %s", itemType, upstreamParsersFname, err)
|
|
|
+ clog.Debugf("[%s] : backuping file (tainted:%t local:%t up-to-date:%t)", k, v.Tainted, v.Local, v.UpToDate)
|
|
|
+ tfile := fmt.Sprintf("%s%s/%s", itemDirectory, v.Stage, v.FileName)
|
|
|
+ if err = types.CopyFile(v.LocalPath, tfile); err != nil {
|
|
|
+ return fmt.Errorf("failed copy %s %s to %s : %s", itemType, v.LocalPath, tfile, err)
|
|
|
+ }
|
|
|
+ clog.Infof("local/tainted saved %s to %s", v.LocalPath, tfile)
|
|
|
+ continue
|
|
|
}
|
|
|
- clog.Infof("Wrote %d entries for %s to %s", len(upstreamParsers), itemType, upstreamParsersFname)
|
|
|
-
|
|
|
- } else {
|
|
|
- clog.Infof("No %s to backup.", itemType)
|
|
|
+ clog.Debugf("[%s] : from hub, just backup name (up-to-date:%t)", k, v.UpToDate)
|
|
|
+ clog.Infof("saving, version:%s, up-to-date:%t", v.Version, v.UpToDate)
|
|
|
+ upstreamParsers = append(upstreamParsers, v.Name)
|
|
|
+ }
|
|
|
+ //write the upstream items
|
|
|
+ upstreamParsersFname := fmt.Sprintf("%s/upstream-%s.json", itemDirectory, itemType)
|
|
|
+ upstreamParsersContent, err := json.MarshalIndent(upstreamParsers, "", " ")
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("failed marshaling upstream parsers : %s", err)
|
|
|
+ }
|
|
|
+ err = ioutil.WriteFile(upstreamParsersFname, upstreamParsersContent, 0644)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("unable to write to %s %s : %s", itemType, upstreamParsersFname, err)
|
|
|
}
|
|
|
+ clog.Infof("Wrote %d entries for %s to %s", len(upstreamParsers), itemType, upstreamParsersFname)
|
|
|
}
|
|
|
|
|
|
return nil
|