mirror of https://github.com/mvdan/fdroidcl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
886 B
49 lines
886 B
// Copyright (c) 2015, Daniel Martí <mvdan@mvdan.cc> |
|
// See LICENSE for licensing information |
|
|
|
package main |
|
|
|
import ( |
|
"fmt" |
|
"os" |
|
"sort" |
|
) |
|
|
|
var cmdList = &Command{ |
|
UsageLine: "list (categories)", |
|
Short: "List all known values of a kind", |
|
} |
|
|
|
func init() { |
|
cmdList.Run = runList |
|
} |
|
|
|
func runList(args []string) error { |
|
if len(args) != 1 { |
|
return fmt.Errorf("need exactly one argument") |
|
} |
|
apps, err := loadIndexes() |
|
if err != nil { |
|
return err |
|
} |
|
values := make(map[string]struct{}) |
|
switch args[0] { |
|
case "categories": |
|
for _, app := range apps { |
|
for _, c := range app.Categories { |
|
values[c] = struct{}{} |
|
} |
|
} |
|
default: |
|
return fmt.Errorf("invalid argument") |
|
} |
|
result := make([]string, 0, len(values)) |
|
for s := range values { |
|
result = append(result, s) |
|
} |
|
sort.Strings(result) |
|
for _, s := range result { |
|
fmt.Fprintln(os.Stdout, s) |
|
} |
|
return nil |
|
}
|
|
|