GoBrain adalah CLI berfokus pada proyek (project-scoped) untuk ekosistem Go. Tujuannya: menjaga lingkungan build dan tooling tetap konsisten di dalam folder proyek, mempermudah inisialisasi template, menjalankan skrip, memasang tool lokal, membuat kode dari template, serta menjalankan pipeline verifikasi — semuanya tanpa bergantung pada tool global pengguna.
- Inisialisasi proyek (
gob init): membuatgob.yaml, memilih sumber template (none/preset/url), mengisi placeholder, mengaturgo.moddantoolchain, serta menyiapkan.gitignoreterkelola. - Generator template (
gob make): merender file dari template menggunakan data dan fungsi bawaan (snake_case, pascal_case, camel_case), mengelola dependensi generator viago getke cache lokal. - Eksekusi perintah (
gob exec): menjalankan perintah dengan ENV yang telah diinjeksi untuk proyek (.gob/bin, .gob/mod, GOTOOLCHAIN=auto). - Skrip proyek (
gob scripts run|list): mengeksekusi urutan perintah darigob.yamldengan dukungan chaining&&,cd, danpwd. - Manajemen tool (
gob tools install|run|list): memasang tool ke.gob/bindan menjalankannya dengan PATH yang diinjeksi. - Verifikasi (
gob verify): pipeline pemeriksaan/tes berdasarkan langkah-langkah digob.yaml, dengan opsifail_fast. - Deteksi root proyek: mencari
gob.yamlpada direktori saat ini dan ke atas agar perintah selalu berjalan pada akar proyek yang tepat. - Mode debug: flag
--debugataudebug: truepadagob.yamluntuk log rinci.
- Go ≥ 1.21.x (untuk support toolchain).
- Git (untuk meng-clone template via URL).
- Windows/Linux/macOS.
- Windows
- Download
gob_windows_amd64.zip(Intel/AMD) ataugob_windows_arm64.zip(ARM). - Extract lalu tambahkan ke PATH, contoh:
C:\gobrain\bin.
- Download
- macOS
- Download
gob_darwin_amd64.tar.gz(Intel) ataugob_darwin_arm64.tar.gz(Apple Silicon). - Extract dan pindahkan binary ke
/usr/local/binatau folder PATH lain.
- Download
- Linux
- Download
gob_linux_amd64.tar.gzataugob_linux_arm64.tar.gz. - Extract dan pindahkan binary ke
/usr/local/binatau folder PATH lain.
- Download
Semua paket tersedia di Release Page.
go install github.com/sch39/gobrain-cli/cmd/gob@latestPastikan GOBIN atau $GOPATH/bin ada di PATH agar perintah gob bisa dijalankan.
go build -trimpath -o bin/gob ./cmd/gobgo build -trimpath -o bin\gob.exe .\cmd\gob- Build dengan Makefile:
make buildmake build- Inisialisasi proyek baru:
gob initSelama proses, Anda dapat memilih:
- source-type:
none,preset(menggunakan daftar embedded), atauurl(repo git). - toolchain: otomatis mendeteksi versi lokal dan menawarkan versi stabil yang lebih baru.
- Menjalankan generator:
gob make list
gob make handler User
gob make handler --name=User- Menjalankan perintah dengan ENV proyek:
gob exec go test ./...- Skrip proyek:
gob scripts list
gob scripts run build- Mengelola tool lokal:
gob tools install
gob tools list
gob tools run golangci-lint --version- Pipeline verifikasi:
gob verifyKonfigurasi dibaca dari gob.yaml/gob.yml pada root proyek. Bagian-bagian penting:
version: "1.0.0"
debug: false
project:
name: my-app
module: github.com/user/my-app
toolchain: 1.24.2
meta:
template_origin: https://github.com/Sch39/gobrain-presets.git
author: ""
path: minimal
tools:
- name: golangci-lint
pkg: github.com/golangci/golangci-lint/cmd/golangci-lint@latest
scripts:
build:
- go build ./...
test:
- go test ./...
generators:
requires:
- github.com/Masterminds/sprig@latest
commands:
handler:
desc: "Generate HTTP handler"
args: ["name"]
templates:
- src: .template/handler.tmpl
dest: internal/handlers/{{ pascal_case .Name }}.go
verify:
fail_fast: true
pipeline:
- name: fmt
run: go fmt ./...
- name: vet
run: go vet ./...
layout:
dirs:
- internal/handlers
- internal/servicesPenjelasan singkat:
project: nama, module, dan versitoolchainGo yang diharapkan. Toolchain akan diselaraskan kego.mod.meta: asal template, author, dan path subdirektori template (bila ada).tools: daftar tool yang akan di-install ke.gob/bin.scripts: peta nama→urutan langkah (perintah shell). Mendukung&&,cd,pwd.generators: daftar command generator dan template yang akan dirender;requiresakan di-go getke cache lokal.gob/mod.verify: pipeline langkah verifikasi; jikafail_fast: true, proses berhenti pada kegagalan pertama.layout: direktori yang akan dibuat saat init dari template/preset.
- Injeksi ENV proyek (
GOBIN,GOMODCACHE,PATH,GOTOOLCHAIN=auto) memastikan tool dan modul pihak ketiga tersimpan dalam.gob/sehingga tidak mengotori global. go.moddapat berisi baristoolchain goX.Y.Z. Proyek memvalidasi agartoolchain≥ direktifgodigo.mod.- Deteksi versi Go lokal dan daftar rilis stabil dilakukan saat
inituntuk membantu memilih toolchain.
- Preset bawaan di-embed: lihat
internal/presets/presets.yaml(berisi preset default dari repo gobrain-presets atau https://github.com/Sch39/gobrain-presets). Anda bisa menyediakan file preset khusus via ENVGOB_PRESET_FILE. - Selain ENV
GOB_PRESET_FILE, gob juga otomatis mendeteksi preset dari file lokal di direktori kerja bila tersedia:presets.yaml,presets.yml,.presets/presets.yml, atau.presets/presets.yaml(lihat presets.go:L68-75). source-type: presetakan menampilkan daftar preset, lalu meng-clone/menyalin isi sesuairepodanpath.
- Untuk repo privat, gunakan ENV:
GOB_GIT_TOKENatauGOB_GITLAB_TOKEN(Bearer),GOB_GIT_BASIC_USERdanGOB_GIT_BASIC_TOKEN(Basic),GOB_GIT_SSH_KEYuntuk kunci SSH,GOB_GIT_EXTRA_HEADERSuntuk header tambahan.
- Argumen sensitif disanitasi saat logging sehingga token tidak tercetak mentah.
.gob/otomatis dikelola pada.gitignoreagar artefak lokal tidak ikut ter-commit.
- Di Windows,
tools runakan menambahkan.exebila diperlukan saat menjalankan binary dari.gob/bin.
- Proyek ini dirilis di bawah MIT License.
- Lihat file lisensi di LICENSE untuk detail lengkap.