golang-examples/Makefile

108 lines
3.5 KiB
Makefile

GITCOMMIT = $(shell git rev-list -1 HEAD)
GOVERSION = $(shell go version | cut -d' ' -f 3)
BUILDTIME = $(shell date -u --iso-8601=seconds)
VERSION = $(shell cat resources/VERSION)
# GO111MODULE=on
# try go get github.com/ahmetb/govvv
# this will add branch info & build RFC3339 date also
build:
# shell things
cd example-nohup; go install # minimum golang 'cmd'
cd example-expect; go install # traditional 'expect' shell automation
cd example-shell; go install # a tty wrapper
cd example-gocui-mouse; go install # mouse interaction
cd example-gocui-active; go install # ytalk
cd example-gocui-colorstrue; go install # shell colors
cd example-gocui-dynamic; go install # interactive movement
# GUI things
cd example-systray; go install # an example systray menu (cross platform)
cd example-ui-splash; go install # an example GUI with drop down menus, etc
cd example-ui-controlgallery; go install # an example GUI with drop down menus, etc
cd example-ui-radiobutton; go install # slidebars, lists, radio buttons
cd example-ui-table; go install # spreadsheet
cd example-ui-show-hide; go install # toggle hide, show
# wit/gui things
cd example-gui; go install # an example using the wit/gui wrapper
# misc
cd example-lookupAAAA; go install # nslookup
cd example-json-decode; go install # raw golang byte handling
cd example-ssh; go install # scp example
cd example-packr; go install # pack a directory into a go binary
# golang things
cd example-flag; go install # process argv
cd example-pprof; go install # dump out go process internals
cd example-protobuf; go install # convert json into golang protobuf struct
cd example-bench-fast-timer; go install # time golang channels
cd example-bench-readWriteOps; go install # uses channels to time select
# witgoget='-v -t' make prep
# witgoget='-v -t -u' make prep # to update
prep:
witgoget='-v -t' make base
update:
witgoget='-v -t -u' make base
base:
make -C example-nohup prep
make -C example-expect prep
make -C example-shell prep
make -C example-gocui-mouse prep
make -C example-systray prep
make -C example-lookupAAAA prep
make -C example-gui prep
init:
sudo make -C example-systray init
sub-make:
# shell things
make -C example-expect # traditional 'expect' shell automation
make -C example-shell # a tty wrapper
make -C example-gocui-mouse # mouse interaction
debug:
go build -ldflags "-X main.GITCOMMIT=${GITCOMMIT} -X main.GOVERSION='${GOVERSION}' -X main.BUILDTIME='${BUILDTIME}' -X main.VERSION=${VERSION}"
gaper:
# 'gaper' is a simple and smart golang tool that just rebuilds every time you change a file
# go get -u github.com/maxcnunes/gaper
gaper
#### NEVER DO THIS. THIS APPEARS TO INDUCE INSTABILITY IN GTK
bad-run:
#### NEVER DO THIS. THIS APPEARS TO INDUCE INSTABILITY IN GTK
# go run *.go
tag-version:
# git push --delete origin v0.6.15 # to delete a tag upstream
git diff --quiet
go build # just an extra check to make sure the damn thing builds
git tag v${VERSION}
git push --tags
cp .git/refs/tags/v${VERSION} resources/tags/
scp resources/VERSION root@mirrors.wit.com:/data/mirrors/cloud/control-panel/
scp resources/VERSION root@mirrors.wit.com:/data/mirrors/cloud/control-panel/linux/
# should update every go dependancy (?)
update:
git pull
go get -v -t -u .
diff:
git diff
# https://www.digitalocean.com/community/tutorials/how-to-build-go-executables-for-multiple-platforms-on-ubuntu-16-04
build-darwin:
env GOOS=darwin GOARCH=amd64 go build
build-windows:
env GOOS=windows GOARCH=amd64 go build