2021-07-13 22:12:56 +00:00
# go-abra
2021-08-10 18:08:08 +00:00
[![Build Status ](https://build.coopcloud.tech/api/badges/coop-cloud/go-abra/status.svg?ref=refs/heads/main )](https://build.coopcloud.tech/coop-cloud/go-abra)
2021-08-13 13:13:37 +00:00
[![Go Report Card ](https://goreportcard.com/badge/git.coopcloud.tech/coop-cloud/go-abra )](https://goreportcard.com/report/git.coopcloud.tech/coop-cloud/go-abra)
2021-07-15 13:40:29 +00:00
2021-08-13 13:13:37 +00:00
> Work-In-Progress port of [abra](https://git.coopcloud.tech/coop-cloud/abra) to Golang.
2021-07-31 17:13:59 +00:00
See [abra ](https://git.coopcloud.tech/coop-cloud/abra ) for more. See our progress in [TODO.md ](TODO.md ).
2021-08-13 12:23:54 +00:00
## Install
### Arch-based Linux Distros
[abra (coming-soon) ](https://aur.archlinux.org/packages/abra/ ) or for the latest version on git [abra-git ](https://aur.archlinux.org/packages/abra-git/ )
```sh
yay -S abra-git # or abra
```
### Debian-based Linux Distros
2021-09-07 08:05:42 +00:00
**Coming Soon**
2021-08-13 12:23:54 +00:00
### Homebrew
2021-09-07 08:05:42 +00:00
**Coming Soon**
2021-08-13 12:23:54 +00:00
### Build from source
```sh
git clone https://git.coopcloud.tech/coop-cloud/go-abra
cd go-abra
go env -w GOPRIVATE=coopcloud.tech
make install
```
The abra binary will be in `$GOPATH/bin` .
2021-07-31 17:13:59 +00:00
## Hacking
2021-08-13 12:23:54 +00:00
Install direnv, run `cp .envrc.sample .envrc` , then run `direnv allow` in this directory. This will set coopcloud repos as private due to [this bug. ](https://git.coopcloud.tech/coop-cloud/coopcloud.tech/issues/20#issuecomment-8201 ). Or you can run `go env -w GOPRIVATE=coopcloud.tech` but I'm not sure how persistent this is.
2021-07-31 17:13:59 +00:00
Install [Go >= 1.16 ](https://golang.org/doc/install ) and then:
- `make build` to build
- `./abra` to run commands
- `make test` will run tests
Our [Drone CI configuration ](.drone.yml ) runs a number of sanity on each pushed commit. See the [Makefile ](./Makefile ) for more handy targets.
2021-08-10 18:11:36 +00:00
Please use the [conventional commit format ](https://www.conventionalcommits.org/en/v1.0.0/ ) for your commits so we can automate our change log.
2021-09-07 08:05:42 +00:00
## Versioning
We use [goreleaser ](https://goreleaser.com ) to help us automate releases. We
use [semver ](https://semver.org ) for versioning all releases of the tool. While
we are still in the public alpha release phase, we will maintain a
`0.y.z-alpha` format. Change logs are generated from our commit logs. We are
still working this out and aim to refine our release praxis as we go.
2021-07-31 17:13:59 +00:00
## Fork maintenance
We maintain a fork of [godotenv ](https://github.com/Autonomic-Cooperative/godotenv ) for two features:
1. multi-line env var support
2. inline comment parsing
You can upgrade the version here by running `go get github.com/Autonomic-Cooperative/godotenv@<commit>` where `<commit>` is the
latest commit you want to pin to. We are aiming to migrate to YAML format for the environment configuration, so this should only
be a temporary thing.