From 31da3672f58df9a80e32a846bc9ff7bed3fdeffd Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Thu, 9 Oct 2025 07:30:35 -0500 Subject: start sorting the code out --- argv.go | 13 ++++++++----- main.go | 50 ++++++++++++++++++++++++++++++++++++++++++-------- structs.go | 8 ++++---- 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/argv.go b/argv.go index 346dc5d..ddbea91 100644 --- a/argv.go +++ b/argv.go @@ -17,10 +17,13 @@ import ( var argv args type args struct { - Update *EmptyCmd `arg:"subcommand:update" help:"update the apt repo"` - DryRun bool `arg:"--dry-run" help:"only show what would be packaged"` - Verbose bool `arg:"--verbose" help:"be loud about it"` - Force bool `arg:"--force" help:"rebuild everything"` + List *EmptyCmd `arg:"subcommand:list" help:"show the packages"` + Walk *EmptyCmd `arg:"subcommand:scan" help:"walk the filesystem for new .deb files"` + Update *EmptyCmd `arg:"subcommand:update" help:"update the apt repo"` + Incoming *EmptyCmd `arg:"subcommand:incoming" help:"handle the incoming directory"` + DryRun bool `arg:"--dry-run" help:"only show what would be packaged"` + Verbose bool `arg:"--verbose" help:"be loud about it"` + Force bool `arg:"--force" help:"rebuild everything"` } type EmptyCmd struct { @@ -39,7 +42,7 @@ func (args) Appname() string { } func (a args) DoAutoComplete(pb *prep.Auto) { - base := []string{"--version", "update", "--dry-run", "--force"} + base := []string{"--version", "update", "--dry-run", "--force", "incoming", "walk", "list"} if pb.Cmd == "" { pb.Autocomplete3(base) diff --git a/main.go b/main.go index 5f70a23..fb8187e 100644 --- a/main.go +++ b/main.go @@ -25,14 +25,9 @@ func main() { me = new(mainType) me.sh = prep.Bash3(&argv) // add support for bash autocomplete with go-arg - if argv.Update != nil { - if err := doDistro(); err != nil { - me.sh.BadExit("boo", err) - } - me.sh.GoodExit("") - } - os.Chdir("/home/mirrors/wit") + me.mirrorsDir = "/home/mirrors/wit" + // read in protobuf file me.pb = zoopb.NewPackages() me.pb.Filename = "/home/mirrors/mirrors.wit.com.pb" if err := config.Load(me.pb); err != nil { @@ -43,6 +38,45 @@ func main() { } } + var s string + var err error + if argv.Incoming != nil { + if s, err = doIncoming(); err != nil { + } + } + + if argv.Walk != nil { + if s, err = doWalk(); err != nil { + } + } + + if argv.List != nil { + footer := me.pb.PrintTable() + log.Info("found so far:", footer) + } + + if argv.Update != nil { + if err = doDistro(); err != nil { + me.sh.BadExit("boo", err) + } + me.sh.GoodExit("") + } + + log.Printf("You have %d packages in %s\n", me.pb.Len(), me.mirrorsDir) + if err != nil { + me.sh.BadExit(s, err) + } + me.sh.GoodExit(s) +} + +func doIncoming() (string, error) { + + return "", nil +} + +func doWalk() (string, error) { + os.Chdir(me.mirrorsDir) + // 2. Scan pool directory for .deb files and gather info log.Printf("Scanning for .deb files in %s\n", poolDir) debInfos, err := scanDebs(poolDir, 35) @@ -99,5 +133,5 @@ func main() { config.Save(me.pb) log.Info("len", me.pb.Len()) - me.sh.GoodExit("nothing to do") + return "/home/mirrors/wit/ has been scanned for ne files", nil } diff --git a/structs.go b/structs.go index b18e9a6..7219b05 100644 --- a/structs.go +++ b/structs.go @@ -33,8 +33,8 @@ var me *mainType // this app's variables type mainType struct { - once sync.Once // one-time initialized data - sh *prep.Auto // more experiments for bash handling - pb *zoopb.Packages // the mirrors packages - // forge *forgepb.Forge // your customized repo preferences and settings + once sync.Once // one-time initialized data + sh *prep.Auto // more experiments for bash handling + pb *zoopb.Packages // the mirrors packages + mirrorsDir string // "/home/mirrors/wit") } -- cgit v1.2.3