summaryrefslogtreecommitdiff
path: root/forgeConfig
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-12-01 19:27:30 -0600
committerJeff Carr <[email protected]>2024-12-01 19:27:30 -0600
commit9d95b189135422a720cb00f8b0ca8546e7fdc9b5 (patch)
tree34299ad83167152bf4681b4264751b5c4f9cdf50 /forgeConfig
Day 1. pull these out from protobuf librariesv0.0.2v0.0.1
Diffstat (limited to 'forgeConfig')
-rw-r--r--forgeConfig/Makefile48
-rw-r--r--forgeConfig/argv.go50
-rw-r--r--forgeConfig/main.go133
3 files changed, 231 insertions, 0 deletions
diff --git a/forgeConfig/Makefile b/forgeConfig/Makefile
new file mode 100644
index 0000000..89ab023
--- /dev/null
+++ b/forgeConfig/Makefile
@@ -0,0 +1,48 @@
+VERSION = $(shell git describe --tags)
+BUILDTIME = $(shell date +%Y.%m.%d)
+
+build:
+ GO111MODULE=off go build \
+ -ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
+
+test2:
+ ./forgeConfig
+ FORGE_HOME=/tmp/forge ./forgeConfig
+ FORGE_HOME=/tmp/forge ./forgeConfig --list
+
+install:
+ GO111MODULE=off go install \
+ -ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
+
+test:
+ ./forgeConfig --list
+ ./forgeConfig --add --gopath 'go.wit.com/apps/foo'
+ ./forgeConfig --add --gopath 'go.wit.com/apps/foowrite' --writable
+ ./forgeConfig --add --gopath 'gitea.wit.com' --directory
+ ./forgeConfig --add --gopath 'git.wit.org' --directory
+ ./forgeConfig --delete --gopath 'go.wit.com/apps/helloworld'
+ ./forgeConfig --list
+
+list:
+ ./forgeConfig --list
+
+add:
+ ./forgeConfig --add --name 'foo' --gopath 'go.wit.com/apps/foo'
+
+update:
+ ./forgeConfig --update --name 'foo' --gopath 'more stuff but not memory corruption?'
+
+corruptMemory:
+ ./forgeConfig --update --name 'foo' --gopath 'blah'
+
+goimports:
+ goimports -w *.go
+
+prep:
+ go get -v -t -u
+
+run:
+ go run *.go
+
+clean:
+ -rm -f forgeConfig
diff --git a/forgeConfig/argv.go b/forgeConfig/argv.go
new file mode 100644
index 0000000..635989f
--- /dev/null
+++ b/forgeConfig/argv.go
@@ -0,0 +1,50 @@
+package main
+
+import (
+ "os"
+
+ "go.wit.com/dev/alexflint/arg"
+)
+
+var argv args
+
+type args struct {
+ ConfigDir string `arg:"env:FORGE_HOME" help:"defaults to ~/.config/forge/"`
+ List bool `arg:"--list" default:"false" help:"list repos in your config"`
+ Add bool `arg:"--add" default:"false" help:"add a new repo"`
+ Delete bool `arg:"--delete" default:"false" help:"delete a repo"`
+ Update bool `arg:"--update" default:"false" help:"update a repo"`
+ GoPath string `arg:"--gopath" help:"gopath of the repo"`
+ Directory bool `arg:"--directory" default:"false" help:"repo is a directory to match against"`
+ ReadOnly bool `arg:"--readonly" default:"false" help:"repo is readonly"`
+ Writable bool `arg:"--writable" default:"false" help:"repo is writable"`
+ Favorite bool `arg:"--favorite" default:"false" help:"forge will always go-clone or git clone this"`
+ Private bool `arg:"--private" default:"false" help:"repo can not be published"`
+ Interesting bool `arg:"--interesting" default:"false" help:"something you decided was cool"`
+}
+
+func (a args) Description() string {
+ return `
+ forgeConfig -- add entries to your config files
+
+This is just example protobuf code to test forgepb is working
+but it could be used to automagically create a config file too.
+
+If you need to change your config file, just edit the forge.text or forge.json
+files then remove the forge.pb and ConfigLoad() will attempt to load those files instead
+`
+}
+
+func (args) Version() string {
+ return "virtigo " + VERSION
+}
+
+func init() {
+ var pp *arg.Parser
+ pp = arg.MustParse(&argv)
+
+ if pp == nil {
+ pp.WriteHelp(os.Stdout)
+ os.Exit(0)
+ }
+}
diff --git a/forgeConfig/main.go b/forgeConfig/main.go
new file mode 100644
index 0000000..36b0b71
--- /dev/null
+++ b/forgeConfig/main.go
@@ -0,0 +1,133 @@
+package main
+
+import (
+ "os"
+
+ "go.wit.com/lib/protobuf/forgepb"
+ "go.wit.com/log"
+)
+
+// sent via ldflags
+var VERSION string
+
+func main() {
+ f := forgepb.Init()
+
+ if argv.List {
+ f.ConfigPrintTable()
+ loop := f.Config.SortByGoPath() // get the list of forge configs
+ for loop.Scan() {
+ r := loop.Next()
+ log.Info("repo:", r.GoPath)
+ }
+ os.Exit(0)
+ }
+
+ // try to delete, then save config and exit
+ if argv.Delete {
+ if f.Config.DeleteByGoPath(argv.GoPath) {
+ log.Info("deleted", argv.GoPath, "did not exist. did nothing")
+ os.Exit(0)
+ }
+ log.Info("deleted", argv.GoPath, "ok")
+ f.ConfigSave()
+ os.Exit(0)
+ }
+
+ // try to update, then save config and exit
+ if argv.Update {
+ /*
+ if f.UpdateGoPath(argv.Name, argv.GoPath) {
+ // save updated config file
+ repos.ConfigSave()
+ }
+ */
+ os.Exit(0)
+ }
+
+ // try to add, then save config and exit
+ if argv.Add {
+ log.Info("going to add a new repo", argv.GoPath)
+ new1 := forgepb.ForgeConfig{
+ GoPath: argv.GoPath,
+ Writable: argv.Writable,
+ ReadOnly: argv.ReadOnly,
+ Private: argv.Private,
+ Directory: argv.Directory,
+ Favorite: argv.Favorite,
+ Interesting: argv.Interesting,
+ }
+
+ if f.Config.Append(&new1) {
+ log.Info("added", new1.GoPath, "ok")
+ } else {
+ log.Info("added", new1.GoPath, "failed")
+ os.Exit(-1)
+ }
+ f.ConfigSave()
+ os.Exit(0)
+ }
+
+ // testMemoryCorruption(f)
+ f.ConfigSave()
+}
+
+/*
+// this fucks shit up
+func testMemoryCorruption(all *forgepb.Repos) *forgepb.Repos {
+ new1 := new(forgepb.Repo)
+ new1.Name = "bash1"
+ new1.Version = "5.2.21"
+ if all.Append(new1) {
+ log.Info("added", new1.Name, "ok")
+ } else {
+ log.Info("added", new1.Name, "failed")
+ }
+
+ new1 = new(forgepb.Repo)
+ new1.Name = "zookeeper1"
+ new1.Debname = "zookeeper-go"
+ if all.Append(new1) {
+ log.Info("added", new1.Name, "ok")
+ } else {
+ log.Info("added", new1.Name, "failed")
+ }
+
+ new1 = new(forgepb.Repo)
+ new1.Name = "wit-package"
+ new1.Private = true
+ if all.Append(new1) {
+ log.Info("added", new1.Name, "ok")
+ } else {
+ log.Info("added", new1.Name, "failed")
+ }
+
+ new1 = new(forgepb.Repo)
+ new1.Name = "networkQuality"
+ new1.Debname = "networkquality"
+ new1.Readonly = true
+ if all.Append(new1) {
+ log.Info("added", new1.Name, "ok")
+ } else {
+ log.Info("added", new1.Name, "failed")
+ }
+
+ new2 := new(forgepb.Repo)
+ new2.Name = "go-clone"
+ new2.Version = "0.6.8" // good version of the macos
+ if all.Append(new2) {
+ log.Info("added", new2.Name, "ok")
+ } else {
+ log.Info("added", new2.Name, "failed")
+ }
+
+ if all.Append(new2) {
+ log.Info("added", new2.Name, "ok (this is bad)")
+ } else {
+ log.Info("added", new2.Name, "failed (but ok)")
+ }
+
+ fmt.Println("packages are:", len(all.Repos))
+ return all
+}
+*/