summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--argv.go12
-rw-r--r--doClone.go61
-rw-r--r--main.go10
-rw-r--r--repomap.go53
-rw-r--r--resources/repomap99
5 files changed, 176 insertions, 59 deletions
diff --git a/argv.go b/argv.go
index 3393089..e4f36ff 100644
--- a/argv.go
+++ b/argv.go
@@ -28,7 +28,7 @@ type args struct {
MakeInstall *DefaultCmd `arg:"subcommand:install" help:"run make install in each repo"`
ListPkgs *EmptyCmd `arg:"subcommand:list" help:"list all the packages on mirrors.wit.com"`
Test *EmptyCmd `arg:"subcommand:test" help:"test build everything first"`
- Clone *EmptyCmd `arg:"subcommand:repomap-clone" help:"go-clone from a gowebd repomap"`
+ Clone *CloneCmd `arg:"subcommand:clone" help:"go-clone from a gowebd repomap"`
Rdate *EmptyCmd `arg:"subcommand:rdate" help:"standard rdate"`
Zoo *EmptyCmd `arg:"subcommand:zoo" help:"WIT Private Cloud info"`
Upgrade *UpgradeCmd `arg:"subcommand:upgrade" help:"apt upgrade packages installed from mirrors.wit.com"`
@@ -49,13 +49,18 @@ type DebianCmd struct {
Force bool `arg:"--force" help:"rebuild everything"`
}
+type CloneCmd struct {
+ DryRun bool `arg:"--dry-run" help:"show what has not yet come to pass"`
+ Verbose bool `arg:"--verbose" help:"be loud about it"`
+}
+
type UpgradeCmd struct {
DryRun bool `arg:"--dry-run" help:"don't really do anything"`
Force bool `arg:"--force" help:"force un-install and re-install each package"`
}
type DefaultCmd struct {
- DryRun bool `arg:"--dry-run" help:"only show what would be packaged"`
+ DryRun bool `arg:"--dry-run" help:"show what has not yet come to pass"`
Verbose bool `arg:"--verbose" help:"be loud about it"`
Force bool `arg:"--force" help:"rebuild everything"`
}
@@ -113,6 +118,9 @@ func (a args) DoAutoComplete(pb *prep.Auto) {
if _, err := fhelp.CheckCmd("forge"); err == nil {
base = append(base, "forge")
}
+ if _, err := fhelp.CheckCmd("go-clone"); err == nil {
+ base = append(base, "clone")
+ }
if areSuperuser() {
base = append(base, "upgrade")
base = append(base, "rdate")
diff --git a/doClone.go b/doClone.go
new file mode 100644
index 0000000..528edd0
--- /dev/null
+++ b/doClone.go
@@ -0,0 +1,61 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "strings"
+
+ "go.wit.com/lib/config"
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/log"
+)
+
+//
+// go-clone everything from wit
+//
+
+func doClone() error {
+ initForge()
+
+ data, err := resources.ReadFile("resources/repomap")
+ if err != nil {
+ log.Info("open repomap failed", err)
+ return err
+ }
+ if len(data) == 0 {
+ log.Info("resources/repomap is empty")
+ return config.ErrEmpty
+ }
+
+ for _, line := range strings.Split(string(data), "\n") {
+ if line == "" {
+ continue
+ }
+ if strings.HasPrefix(line, "#") {
+ continue
+ }
+ parts := strings.Fields(line)
+ gopath := parts[0]
+ repo := me.forge.Repos.FindByNamespace(gopath)
+ if repo != nil {
+ if argv.Verbose {
+ log.Info("already have", repo.FullPath)
+ }
+ continue
+ }
+ var cmd []string
+ cmd = []string{"go-clone", "--non-recursive", gopath}
+ if argv.DryRun {
+ log.Info("run:", cmd)
+ } else {
+ log.Info("should run:", cmd)
+ if _, err := shell.RunRealtimeError(cmd); err != nil {
+ if !argv.Force {
+ badExit(err)
+ }
+ }
+ }
+ }
+ return nil
+}
diff --git a/main.go b/main.go
index f68a334..d7ba3ec 100644
--- a/main.go
+++ b/main.go
@@ -5,6 +5,7 @@ package main
import (
"debug/buildinfo"
+ "embed"
"fmt"
"os"
"path/filepath"
@@ -20,6 +21,9 @@ var BUILDTIME string
// used for shell auto completion
var ARGNAME string = "wit" // todo: get this from $0 ?
+//go:embed resources/*
+var resources embed.FS
+
func main() {
me = new(mainType)
me.once.Do(initMain)
@@ -45,10 +49,8 @@ func main() {
}
if argv.Clone != nil {
- if argv.RepoMap != "" {
- repomap(argv.RepoMap)
- okExit("")
- }
+ doClone()
+ okExit("")
}
if argv.WITCOM {
diff --git a/repomap.go b/repomap.go
deleted file mode 100644
index 6ab056a..0000000
--- a/repomap.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
-// Use of this source code is governed by the GPL 3.0
-
-package main
-
-import (
- "os"
- "strings"
-
- "go.wit.com/lib/gui/shell"
- "go.wit.com/log"
-)
-
-//
-// go-clone everything from a gowebd repomap file (go.wit.com has examples)
-//
-
-func repomap(filename string) {
- log.DaemonMode(true)
-
- data, err := os.ReadFile(argv.RepoMap)
- if err != nil {
- log.Info("open repomap failed", err)
- return
- }
-
- for _, line := range strings.Split(string(data), "\n") {
- if line == "" {
- continue
- }
- if strings.HasPrefix(line, "#") {
- continue
- }
- parts := strings.Fields(line)
- gopath := parts[0]
- repo := me.forge.FindByGoPath(gopath)
- var cmd []string
- if argv.Recursive {
- cmd = []string{"go-clone", "--recursive", gopath}
- } else {
- cmd = []string{"go-clone", gopath}
- }
- if repo == nil {
- if argv.DryRun {
- log.Info("run:", cmd)
- } else {
- shell.RunRealtime(cmd)
- }
- } else {
- log.Info("already ran:", cmd)
- }
- }
-}
diff --git a/resources/repomap b/resources/repomap
new file mode 100644
index 0000000..18a29cb
--- /dev/null
+++ b/resources/repomap
@@ -0,0 +1,99 @@
+# core libraries
+
+go.wit.com/gui gitea.wit.com/gui/gui The GUI API intended for Control Panels
+go.wit.com/widget gitea.wit.com/gui/widget Primitive Definitions for Buttons, Dropdowns, etc.
+go.wit.com/log gitea.wit.com/wit/log a wrapper attempt around log for the GUI
+
+# Applications (<a href="http://mirrors.wit.com/">mirrors.wit.com</a>)
+
+go.wit.com/apps/go-clone gitea.wit.com/gui/go-clone recursively 'git clone' golang packages
+go.wit.com/apps/forge gitea.wit.com/jcarr/forge A federated git automation tool <a href="https://mirrors.wit.com/guidemo/forge-gocui-demo.webm">CUI Demo</a> <a href="https://mirrors.wit.com/guidemo/forge-andlabs-ui-GTK.webm">GTK Demo</a>
+go.wit.com/apps/autogenpb gitea.wit.com/jcarr/autogenpb autogen Marshal(), Sort(), Gui(), Http() .pb.go files
+go.wit.com/apps/go-deb gitea.wit.com/jcarr/go-deb Turns anything into a .deb package
+go.wit.com/apps/virtigo gitea.wit.com/jcarr/virtigo control your homelab cluster (pre-alpha)
+go.wit.com/apps/go-mod-clean gitea.wit.com/jcarr/go-mod-clean clean go.mod and go.sum files before publishing
+go.wit.com/apps/argv github.com/alexflint/argv shell autocomplete
+go.wit.com/apps/autotypist gitea.wit.com/jcarr/autotypist
+go.wit.com/apps/control-panel-dns gitea.wit.com/jcarr/control-panel-dns
+go.wit.com/apps/networkQuality github.com/wit-go/networkQuality
+go.wit.com/apps/regex gitea.wit.com/jcarr/regex
+go.wit.com/apps/guireleaser gitea.wit.com/jcarr/guireleaser
+go.wit.com/apps/control-panel-droplet gitea.wit.com/wit/control-panel-digitalocean
+go.wit.com/apps/control-panel-cloudflare gitea.wit.com/wit/control-panel-cloudflare
+go.wit.com/apps/control-panel-vpn gitea.wit.com/jcarr/control-panel-vpn
+go.wit.com/apps/zookeeper gitea.wit.com/jcarr/zookeeper
+go.wit.com/apps/utils/go-gui-toolkits gitea.wit.com/gui/go-gui-toolkits
+go.wit.com/apps/utils/gowebd gitea.wit.com/jcarr/gowebd generates this website: go.wit.com
+go.wit.com/apps/utils/fixup gitea.wit.com/jcarr/fixup a tool to make riscv sdcards
+go.wit.com/apps/utils/forged gitea.wit.com/jcarr/forged
+go.wit.com/apps/utils/powerpaneld gitea.wit.com/jcarr/powerpaneld
+go.wit.com/apps/utils/virtigoctl gitea.wit.com/jcarr/virtigoctl
+go.wit.com/apps/utils/startxplacement gitea.wit.com/jcarr/xstartplacement
+go.wit.com/apps/utils/wit-utils gitea.wit.com/jcarr/wit-utils
+go.wit.com/apps/utils/wit-test gitea.wit.com/jcarr/wit-test
+go.wit.com/apps/utils/going2git gitea.wit.com/jcarr/going2git
+
+# GO plugin GUI demos
+
+go.wit.com/apps/helloworld gitea.wit.com/gui/helloworld A simple GUI Demo <a href="http://mirrors.wit.com/guidemo/helloworld-demo.webm">Video Demo</a>
+go.wit.com/apps/basicwindow gitea.wit.com/jcarr/basicwindow A bit more of a GUI Demo
+go.wit.com/apps/gadgetwindow gitea.wit.com/jcarr/gadgetwindow A more complicated GUI Demo used for debugging the toolkits
+
+# GO GUI toolkit plugins
+go.wit.com/toolkits/tree gitea.wit.com/toolkits/tree common toolkit plugin code
+go.wit.com/toolkits/andlabs gitea.wit.com/toolkits/andlabs Platform Native GUI (GTK on Linux and Cocoa on MacOS, Windows needs golang plugins)
+go.wit.com/toolkits/gocui gitea.wit.com/toolkits/gocui A console based GUI (like ncurses)
+go.wit.com/toolkits/nocui gitea.wit.com/toolkits/nocui A minimum toolkit plugin using STDIN/STDOUT
+go.wit.com/toolkits/pixelgl gitea.wit.com/jcarr/pixelgl an experiment with opengl (no widgets yet)
+go.wit.com/toolkits/fyne gitea.wit.com/jcarr/fyne fyne.io (early stages. only makes windows and buttons)
+go.wit.com/toolkits/debian gitea.wit.com/toolkits/debian
+
+# libraries
+go.wit.com/lib/gadgets gitea.wit.com/gui/gadgets Some common collections of widgets
+go.wit.com/lib/debugger gitea.wit.com/gui/debugger An attempt at a debugger
+go.wit.com/lib/gui/repostatus gitea.wit.com/jcarr/repostatus
+go.wit.com/lib/gui/repolist gitea.wit.com/jcarr/repolist
+go.wit.com/lib/gui/linuxstatus gitea.wit.com/jcarr/linuxstatus
+go.wit.com/lib/gui/logsettings gitea.wit.com/jcarr/logsettings
+go.wit.com/lib/gui/digitalocean gitea.wit.com/gui/digitalocean import / export droplets from your virtigo private cloud
+go.wit.com/lib/gui/cloudflare gitea.wit.com/gui/cloudflare
+go.wit.com/lib/gui/gowit gitea.wit.com/jcarr/gowit
+go.wit.com/lib/gui/prep gitea.wit.com/jcarr/prep
+go.wit.com/lib/gui/shell gitea.wit.com/wit/shell
+go.wit.com/lib/virtigolib gitea.wit.com/jcarr/virtigolib libvirtxml <-> protobuf for virtigo
+go.wit.com/lib/daemons/virtigod gitea.wit.com/jcarr/virtigod the virtigo hypervisor daemon
+go.wit.com/lib/daemons/zood gitea.wit.com/jcarr/zood a simple daemon for zookeeper
+go.wit.com/lib/daemons/gus gitea.wit.com/jcarr/gus "Phantastic Gus" your network squirrel
+go.wit.com/lib/libgit2 gitea.wit.com/jcarr/git2go
+go.wit.com/lib/libme gitea.wit.com/jcarr/libme
+go.wit.com/lib/libgit2go gitea.wit.com/jcarr/git2go fixed for libgit2 v1.9 (works on debian sid)
+go.wit.com/lib/fhelp gitea.wit.com/jcarr/fhelp
+go.wit.com/lib/http/ginpb gitea.wit.com/jcarr/ginpb
+go.wit.com/lib/hostname gitea.wit.com/jcarr/hostname os.Hostname() wrapper
+go.wit.com/lib/cobol gitea.wit.com/jcarr/cobol
+go.wit.com/lib/config gitea.wit.com/jcarr/pbconfig use .proto config files in your applications
+go.wit.com/lib/xgb github.com/jezek/xgb
+
+# protobuf libraries
+go.wit.com/lib/protobuf/bugpb gitea.wit.com/jcarr/bugpb protobuf for git-bug
+go.wit.com/lib/protobuf/forgepb gitea.wit.com/jcarr/forgepb protobuf for forge
+go.wit.com/lib/protobuf/chatpb gitea.wit.com/jcarr/chatpb protobuf for Google's Gemini
+go.wit.com/lib/protobuf/httppb gitea.wit.com/jcarr/httppb protobuf for http headers
+go.wit.com/lib/protobuf/gitpb gitea.wit.com/jcarr/gitpb protobuf for git repos
+go.wit.com/lib/protobuf/guipb gitea.wit.com/jcarr/guipb protobuf for the GUI toolkits
+go.wit.com/lib/protobuf/virtpb gitea.wit.com/jcarr/virtpb protobuf for virtigo
+go.wit.com/lib/protobuf/witpb gitea.wit.com/wit/witProtobuf
+go.wit.com/lib/protobuf/zoopb gitea.wit.com/jcarr/zoopb protobuf for zookeeper
+
+# Support packages (forked for experiments)
+
+go.wit.com/dev/alexflint/arg gitea.wit.com/jcarr/go-arg slight minor modifications to 'go-arg'
+go.wit.com/dev/alexflint/scalar gitea.wit.com/jcarr/go-scalar
+go.wit.com/dev/andlabs/ui gitea.wit.com/interesting/andlabs-ui attempts to add RiscV support
+go.wit.com/dev/andlabs/libui gitea.wit.com/interesting/libui
+go.wit.com/dev/davecgh/spew gitea.wit.com/jcarr/go-spew
+go.wit.com/dev/posener/complete gitea.wit.com/interesting/complete
+
+go.wit.com/dev/test/gogit3 gitea.wit.com/jcarr/gogit2
+
+# debian package instructions: