From 02aa950697877e81344cf773345699f2416d61b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 9 Sep 2016 20:08:09 +0200 Subject: [PATCH] fdroidcl: add `list categories` Useful to know what can go in `search -c`, either for humans or for completion scripts. Fixes #12. --- cmd/fdroidcl/cpu.out | Bin 0 -> 3433 bytes cmd/fdroidcl/list.go | 47 +++++++++++++++++++++++++++++++++++++++++++ cmd/fdroidcl/main.go | 1 + 3 files changed, 48 insertions(+) create mode 100644 cmd/fdroidcl/cpu.out create mode 100644 cmd/fdroidcl/list.go diff --git a/cmd/fdroidcl/cpu.out b/cmd/fdroidcl/cpu.out new file mode 100644 index 0000000000000000000000000000000000000000..883342a6f28375d10a4048aeadbfa33d224b043c GIT binary patch literal 3433 zcmb_e&2G~`5N=g*@rg(9jg#x$wd0>&P%Da5sYq2hMp5OzB@t;7*(Jb<1FyhK@Rsb% z>~7)^+mOUkyB=re`{v(1JEQADpXPY|#@x|)uEkgS{Ppt&?=F7O`Fl<0{aZTEqxV{q z4r6Z~Iv=hd9&X<~-QV3jUO(R5e!OxR3mIGQ?MdsQzU3rAb`q~K^b7z4H%$~Ho$25 zV<<_-8ej~)F6C5945$iPO|v%!twRh-5K5~z2CbtFWZqXa@`7}%0kqKGiHvy|vmo8q zKK_@c_UE%4{uWL1Bxm!g@x-MFFPo)fXs|g^kUU2ko2m>*XFz8Js&bhJT=LO%oPXoGyz*YZ)CvZ0nQTCFY^A!_(?1iQ)v zz;QEfTKy1sLNxGDJ{VZsgFMAIgq@^=;1SWnvK^{~ zSWoodUkqw-L}|>2inV%~)>T&Sl#Fn-S2AvGCwx_Hm+Vjy!nGu=-NbQ_wlaG-iQPGCRfN4C5kj&SRXnzLw%VflX=*vZ1vq zI7c08pxviW4}lZ1Rk{ClpJO^KI5vWDUtnsF0^e+36$Z|)0f)`edLc+zq_m-xHz-s+ z2Ky!rpN*TBtoS@pZy3ao_*rO#R_@v!bOWx}S-rv2`+&g7!QEDZxH{q7@w#l56GyqH bFF;fcVMHk-M&G0VhC5z2- +// 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) { + if len(args) != 1 { + fmt.Fprintf(os.Stderr, "need exactly one argument") + cmdList.Flag.Usage() + } + apps := mustLoadIndexes() + values := make(map[string]struct{}) + switch args[0] { + case "categories": + for _, app := range apps { + for _, c := range app.Categs { + values[c] = struct{}{} + } + } + default: + fmt.Fprintf(os.Stderr, "invalid argument") + cmdList.Flag.Usage() + } + result := make([]string, 0, len(values)) + for s := range values { + result = append(result, s) + } + sort.Strings(result) + for _, s := range result { + fmt.Println(s) + } +} diff --git a/cmd/fdroidcl/main.go b/cmd/fdroidcl/main.go index a01daab..2d41939 100644 --- a/cmd/fdroidcl/main.go +++ b/cmd/fdroidcl/main.go @@ -148,6 +148,7 @@ var commands = []*Command{ cmdUpdate, cmdSearch, cmdShow, + cmdList, cmdDevices, cmdDownload, cmdInstall,