2021-09-07 08:19:42 +00:00
# abra
2021-07-13 22:12:56 +00:00
2021-09-07 08:19:42 +00:00
[![Build Status ](https://build.coopcloud.tech/api/badges/coop-cloud/abra/status.svg?ref=refs/heads/main )](https://build.coopcloud.tech/coop-cloud/abra)
[![Go Report Card ](https://goreportcard.com/badge/git.coopcloud.tech/coop-cloud/abra )](https://goreportcard.com/report/git.coopcloud.tech/coop-cloud/abra)
2021-07-15 13:40:29 +00:00
2021-09-07 08:19:42 +00:00
> Work-In-Progress port of [abra-bash](https://git.coopcloud.tech/coop-cloud/abra-bash) to Golang.
2021-07-31 17:13:59 +00:00
2021-09-07 08:19:42 +00:00
See [abra-bash ](https://git.coopcloud.tech/coop-cloud/abra-bash ) for more. See our progress in [TODO.md ](TODO.md ).
2021-07-31 17:13:59 +00:00
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
2021-09-07 08:19:42 +00:00
git clone https://git.coopcloud.tech/coop-cloud/abra
cd abra
2021-08-13 12:23:54 +00:00
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.