Browse Source

Make 'show' list more info

pull/8/head
Daniel Martí 11 years ago
parent
commit
9265ea36c6
  1. 71
      fdroidcl.go

71
fdroidcl.go

@ -23,18 +23,19 @@ type Repo struct {
type RepoInfo struct{}
type App struct {
Name string `xml:"name"`
ID string `xml:"id"`
Summary string `xml:"summary"`
License string `xml:"license"`
Categories string `xml:"categories"`
CVName string `xml:"marketversion"`
CVCode uint `xml:"marketvercode"`
Web string `xml:"web"`
Source string `xml:"source"`
Tracker string `xml:"tracker"`
Apks []Apk `xml:"package"`
CurApk *Apk
Name string `xml:"name"`
ID string `xml:"id"`
Summary string `xml:"summary"`
Desc string `xml:"desc"`
License string `xml:"license"`
Categs string `xml:"categories"`
CVName string `xml:"marketversion"`
CVCode uint `xml:"marketvercode"`
Website string `xml:"web"`
Source string `xml:"source"`
Tracker string `xml:"tracker"`
Apks []Apk `xml:"package"`
CurApk *Apk
}
type Apk struct {
@ -50,23 +51,44 @@ func Green(str string) string { return Form("1;32", str) }
func Blue(str string) string { return Form("1;34", str) }
func Purple(str string) string { return Form("1;35", str) }
func (app *App) Version() string {
if app.CurApk == nil {
for _, apk := range app.Apks {
app.CurApk = &apk
if app.CVCode >= apk.VCode {
break
}
func (app *App) prepareData() {
for _, apk := range app.Apks {
app.CurApk = &apk
if app.CVCode >= apk.VCode {
break
}
}
return Green(app.CurApk.VName)
}
func (app *App) WriteSummary(w io.Writer) {
fmt.Fprintf(w, "%s %s %s\n", Bold(app.Name), Purple(app.ID), app.Version())
func (app *App) WriteShort(w io.Writer) {
fmt.Fprintf(w, "%s %s %s\n", Bold(app.Name),
Purple(app.ID), Green(app.CurApk.VName))
fmt.Fprintf(w, " %s\n", app.Summary)
}
func (app *App) WriteDetailed(w io.Writer) {
p := func(title string, format string, args ...interface{}) {
fmt.Fprintf(w, "%s %s", Bold(title), fmt.Sprintf(format, args...))
}
p("Name :", "%s\n", app.Name)
p("Current Version :", "%s (%d)\n", app.CurApk.VName, app.CurApk.VCode)
p("Summary :", "%s\n", app.Summary)
p("License :", "%s\n", app.License)
if app.Categs != "" {
p("Categories :", "%s\n", app.Categs)
}
if app.Website != "" {
p("Website :", "%s\n", app.Website)
}
if app.Source != "" {
p("Source :", "%s\n", app.Source)
}
if app.Tracker != "" {
p("Tracker :", "%s\n", app.Tracker)
}
// p("Description :", "\n%s\n", app.Desc) TODO: html, 80 column wrapping
}
const indexName = "index.jar"
var repoURL = flag.String("r", "https://f-droid.org/repo", "repository address")
@ -119,6 +141,7 @@ func loadApps() map[string]App {
for i := range repo.Apps {
app := repo.Apps[i]
app.prepareData()
apps[app.ID] = app
}
return apps
@ -140,7 +163,7 @@ func main() {
case "list":
apps := loadApps()
for _, app := range apps {
app.WriteSummary(os.Stdout)
app.WriteShort(os.Stdout)
}
case "show":
apps := loadApps()
@ -149,7 +172,7 @@ func main() {
if !e {
log.Fatalf("Could not find app with ID '%s'", appID)
}
app.WriteSummary(os.Stdout)
app.WriteDetailed(os.Stdout)
}
default:
log.Fatalf("Unrecognised command '%s'", cmd)

Loading…
Cancel
Save