Day 1. pull these out from protobuf libraries
This commit is contained in:
commit
9d95b18913
|
@ -0,0 +1,11 @@
|
||||||
|
*.swp
|
||||||
|
go.mod
|
||||||
|
go.sum
|
||||||
|
/files/*
|
||||||
|
/work/*
|
||||||
|
|
||||||
|
forgeConfig/forgeConfig
|
||||||
|
scanGoSrc/scanGoSrc
|
||||||
|
validate/validate
|
||||||
|
virtbuf-example/virtbuf-example
|
||||||
|
zoopb-example/zoopb-example
|
|
@ -0,0 +1,6 @@
|
||||||
|
all:
|
||||||
|
make -C forgeConfig
|
||||||
|
make -C scanGoSrc
|
||||||
|
make -C validate
|
||||||
|
make -C virtbuf-example
|
||||||
|
make -C zoopb-example
|
|
@ -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
|
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
||||||
|
}
|
||||||
|
*/
|
|
@ -0,0 +1,25 @@
|
||||||
|
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}"
|
||||||
|
|
||||||
|
test:
|
||||||
|
FORGE_HOME=/tmp/forge ./scanGoSrc
|
||||||
|
|
||||||
|
install:
|
||||||
|
GO111MODULE=off go install \
|
||||||
|
-ldflags "-X main.VERSION=${VERSION} -X main.BUILDTIME=${BUILDTIME} -X gui.GUIVERSION=${VERSION}"
|
||||||
|
|
||||||
|
goimports:
|
||||||
|
goimports -w *.go
|
||||||
|
|
||||||
|
prep:
|
||||||
|
go get -v -t -u
|
||||||
|
|
||||||
|
run:
|
||||||
|
go run *.go
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f scanGoSrc
|
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"go.wit.com/lib/protobuf/gitpb"
|
||||||
|
"go.wit.com/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
// sent via ldflags
|
||||||
|
var VERSION string
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var repos *gitpb.Repos
|
||||||
|
repos = new(gitpb.Repos)
|
||||||
|
|
||||||
|
newr, err := repos.NewGoPath("/home/jcarr/go/src", "go.wit.com/apps/wit-package")
|
||||||
|
if err != nil {
|
||||||
|
log.Info("init failed", err)
|
||||||
|
panic("crapnuts")
|
||||||
|
} else {
|
||||||
|
log.Info("init worked for", newr.GoPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
newr, err = repos.NewGoPath("/home/jcarr/go/src", "go.wit.com/apps/notathing")
|
||||||
|
if err != nil {
|
||||||
|
log.Info("init failed correctly:", err)
|
||||||
|
} else {
|
||||||
|
log.Info("init should have failed for", newr.GoPath)
|
||||||
|
panic("crapnuts")
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
log.Info(forgepb.RepoHeader())
|
||||||
|
loop := repos.SortByPath() // get the list of repos
|
||||||
|
for loop.Scan() {
|
||||||
|
r := loop.Repo()
|
||||||
|
log.Info("repo:", r.GoPath)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
log.Info("going to add a new repo", argv.GoPath)
|
||||||
|
new1 := forgepb.Repo{
|
||||||
|
GoPath: argv.GoPath,
|
||||||
|
Writable: argv.Writable,
|
||||||
|
ReadOnly: argv.ReadOnly,
|
||||||
|
Private: argv.Private,
|
||||||
|
Directory: argv.Directory,
|
||||||
|
Favorite: argv.Favorite,
|
||||||
|
Interesting: argv.Interesting,
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
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}"
|
||||||
|
|
||||||
|
test:
|
||||||
|
./validate --repo go.wit.com/apps/wit-package
|
||||||
|
|
||||||
|
goimports:
|
||||||
|
goimports -w *.go
|
||||||
|
|
||||||
|
prep:
|
||||||
|
go get -v -t -u
|
||||||
|
|
||||||
|
run:
|
||||||
|
go run *.go
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f scanGoSrc
|
|
@ -0,0 +1,42 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"go.wit.com/dev/alexflint/arg"
|
||||||
|
)
|
||||||
|
|
||||||
|
var argv args
|
||||||
|
|
||||||
|
type args struct {
|
||||||
|
Repo string `arg:"--repo" help:"repo to check"`
|
||||||
|
List bool `arg:"--list" default:"false" help:"list repos in your config"`
|
||||||
|
SaveConfig bool `arg:"--save" default:"false" help:"save your config file at the end"`
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"go.wit.com/dev/alexflint/arg"
|
||||||
|
"go.wit.com/gui"
|
||||||
|
"go.wit.com/lib/gui/repolist"
|
||||||
|
"go.wit.com/lib/protobuf/forgepb"
|
||||||
|
"go.wit.com/lib/protobuf/gitpb"
|
||||||
|
"go.wit.com/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
// sent via ldflags
|
||||||
|
var VERSION string
|
||||||
|
|
||||||
|
var pp *arg.Parser
|
||||||
|
var forge *forgepb.Forge
|
||||||
|
var myGui *gui.Node
|
||||||
|
var rv *repolist.RepoList
|
||||||
|
var argvRepo *gitpb.Repo
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
pp = arg.MustParse(&argv)
|
||||||
|
|
||||||
|
// load the ~/.config/forge/ config
|
||||||
|
forge = forgepb.Init()
|
||||||
|
// forge.ConfigPrintTable()
|
||||||
|
os.Setenv("REPO_WORK_PATH", forge.GetGoSrc())
|
||||||
|
|
||||||
|
myGui = gui.New()
|
||||||
|
myGui.Default()
|
||||||
|
|
||||||
|
repos := forge.Repos.SortByGoPath()
|
||||||
|
for repos.Scan() {
|
||||||
|
repo := repos.Next()
|
||||||
|
if ! repo.IsValid() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// forge.VerifyBranchNames(repo)
|
||||||
|
fullpath := repo.GetFullPath()
|
||||||
|
mName := repo.GetMasterBranchName()
|
||||||
|
dName := repo.GetDevelBranchName()
|
||||||
|
uName := repo.GetUserBranchName()
|
||||||
|
dlen := repo.GoDepsLen()
|
||||||
|
plen := repo.PublishedLen()
|
||||||
|
var ds, ps string
|
||||||
|
if dlen == 0 {
|
||||||
|
ds = " "
|
||||||
|
} else {
|
||||||
|
ds = fmt.Sprintf("%2d", dlen)
|
||||||
|
}
|
||||||
|
if plen == 0 {
|
||||||
|
ps = " "
|
||||||
|
} else {
|
||||||
|
ps = fmt.Sprintf("%2d", plen)
|
||||||
|
}
|
||||||
|
log.Printf("repo: %-60s %-10s %-8s %-8s %s %s %s\n", fullpath, mName, dName, uName, ds, ps, repo.RepoType())
|
||||||
|
/*
|
||||||
|
if repo.GoDepsChanged() {
|
||||||
|
log.Printf("\tdependancy checks indicate a new release is needed for %s\n", repo.GetGoPath())
|
||||||
|
} else {
|
||||||
|
log.Printf("\tdependancies have not changed for %s\n", repo.GetGoPath())
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
if argv.Repo == "" {
|
||||||
|
log.Info("no --repo")
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
check := forge.Repos.FindByGoPath(argv.Repo)
|
||||||
|
if check == nil {
|
||||||
|
log.Info("boo, you didn't git check", argv.Repo)
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
check.RedoGoMod()
|
||||||
|
|
||||||
|
match, err := forge.Repos.GoDepsChanged(check)
|
||||||
|
if err != nil {
|
||||||
|
log.Info("dependancy checks failed", check.GetGoPath(), err)
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
if match {
|
||||||
|
log.Printf("dependancy checks indicate a new release is needed for %s\n", check.GetGoPath())
|
||||||
|
} else {
|
||||||
|
log.Printf("dependancies have not changed for %s\n", check.GetGoPath())
|
||||||
|
}
|
||||||
|
|
||||||
|
if argv.SaveConfig {
|
||||||
|
forge.Repos.ConfigSave()
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
build:
|
||||||
|
GO111MODULE=off go build
|
||||||
|
|
||||||
|
test:
|
||||||
|
./virtbuf-example
|
||||||
|
|
||||||
|
goimports:
|
||||||
|
goimports -w *.go
|
||||||
|
|
||||||
|
prep:
|
||||||
|
go get -v -t -u
|
||||||
|
|
||||||
|
run:
|
||||||
|
go run *.go
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f virtbuf-example
|
|
@ -0,0 +1,91 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
pb "go.wit.com/lib/protobuf/virtbuf"
|
||||||
|
)
|
||||||
|
|
||||||
|
//
|
||||||
|
// saves entries in a config file
|
||||||
|
//
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
TestWriteCluster()
|
||||||
|
|
||||||
|
var c *pb.Cluster
|
||||||
|
c = pb.InitCluster()
|
||||||
|
|
||||||
|
// log.Println(aCluster.String())
|
||||||
|
// show the droplets to STDOUT
|
||||||
|
loop := c.DropletsAll() // get the list of droplets
|
||||||
|
for loop.Scan() {
|
||||||
|
d := loop.Next()
|
||||||
|
fmt.Println("\tdroplet =", d.Hostname, "preffered host:", d.PreferredHypervisor)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// show the hypervisors to STDOUT
|
||||||
|
for _, h := range aCluster.Hypervisors {
|
||||||
|
fmt.Println("\thypervisor =", h.Hostname, h.GetMemoryPrintable())
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
json := aCluster.FormatJSON()
|
||||||
|
fmt.Println(json)
|
||||||
|
|
||||||
|
data, _ := aCluster.MarshalJSON()
|
||||||
|
fmt.Println(string(data))
|
||||||
|
|
||||||
|
text := aCluster.FormatTEXT()
|
||||||
|
fmt.Println(text)
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
func marshalWriteToFile(myWriter *bufio.Writer, c *pb.Cluster) {
|
||||||
|
buf, err := proto.Marshal(c)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("marshaling error: ", err)
|
||||||
|
}
|
||||||
|
tmp, err := myWriter.Write(buf)
|
||||||
|
myWriter.Flush()
|
||||||
|
log.Println("bufio.Write() tmp, err = ", tmp, err)
|
||||||
|
|
||||||
|
buf, err = proto.Marshal(c)
|
||||||
|
tmp2, err := myWriter.Write(buf)
|
||||||
|
myWriter.Flush()
|
||||||
|
log.Println("bufio.Write() tmp2, err = ", tmp2, err)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
func TestWriteCluster() {
|
||||||
|
c := pb.CreateSampleCluster(7)
|
||||||
|
os.Setenv("VIRTIGO_HOME", "/tmp/virtigo/")
|
||||||
|
|
||||||
|
if err := c.ConfigSave(); err != nil {
|
||||||
|
fmt.Println("configsave error", err)
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
// marshalUnmarshal()
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
func marshalUnmarshal() {
|
||||||
|
test := pb.CreateSampleCluster(7)
|
||||||
|
data, err := proto.Marshal(test)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("marshaling error: ", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
newTest := &pb.Cluster{}
|
||||||
|
err = proto.Unmarshal(data, newTest)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("unmarshaling error: ", err)
|
||||||
|
} else {
|
||||||
|
log.Println("proto.Marshal() and proto.Unmarshal() worked")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
|
@ -0,0 +1,17 @@
|
||||||
|
build:
|
||||||
|
GO111MODULE=off go build
|
||||||
|
|
||||||
|
test:
|
||||||
|
./zoopb-example
|
||||||
|
|
||||||
|
goimports:
|
||||||
|
goimports -w *.go
|
||||||
|
|
||||||
|
prep:
|
||||||
|
go get -v -t -u
|
||||||
|
|
||||||
|
run:
|
||||||
|
go run *.go
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f zoopb-example
|
|
@ -0,0 +1,71 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"go.wit.com/lib/protobuf/zoopb"
|
||||||
|
"go.wit.com/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
m := testMachine()
|
||||||
|
testPackages(m)
|
||||||
|
|
||||||
|
loop := m.Packages.SortByName()
|
||||||
|
for loop.Scan() {
|
||||||
|
p := loop.Next()
|
||||||
|
log.Info("installed package:", p.Name, p.Version, p.PkgName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.IsInstalled("bash") {
|
||||||
|
log.Info("bash installed check worked")
|
||||||
|
} else {
|
||||||
|
log.Info("bash installed check failed")
|
||||||
|
panic("bash")
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.IsInstalled("foo") {
|
||||||
|
log.Info("foo not-installed check failed")
|
||||||
|
panic("foo")
|
||||||
|
} else {
|
||||||
|
log.Info("foo not-installed check worked")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testMachine() *zoopb.Machine {
|
||||||
|
var m *zoopb.Machine
|
||||||
|
m = new(zoopb.Machine)
|
||||||
|
m.Hostname = "zookeeper"
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
func testPackages(m *zoopb.Machine) {
|
||||||
|
m.Packages = new(zoopb.Packages)
|
||||||
|
// r = zoopb.LoadJSON("go.wit.com/lib/protobuf/zoopb")
|
||||||
|
|
||||||
|
new1 := new(zoopb.Package)
|
||||||
|
new1.Name = "bash"
|
||||||
|
new1.Version = "5.2.21"
|
||||||
|
if m.Packages.Append(new1) {
|
||||||
|
log.Info("added", new1.Name, "ok")
|
||||||
|
} else {
|
||||||
|
log.Info("added", new1.Name, "failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
new2 := new(zoopb.Package)
|
||||||
|
new2.Name = "go-clone"
|
||||||
|
new2.Version = "0.6.8" // good version of the macos
|
||||||
|
if m.Packages.Append(new2) {
|
||||||
|
log.Info("added", new2.Name, "ok")
|
||||||
|
} else {
|
||||||
|
log.Info("added", new2.Name, "failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.Packages.Append(new2) {
|
||||||
|
log.Info("added", new2.Name, "ok (this is bad)")
|
||||||
|
} else {
|
||||||
|
log.Info("added", new2.Name, "failed (but ok)")
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("package count = ", m.Packages.Len())
|
||||||
|
}
|
Loading…
Reference in New Issue