# abra > https://coopcloud.tech [![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) The Co-op Cloud utility belt 🎩🐇 `abra` is a command-line tool for managing your own [Co-op Cloud](https://coopcloud.tech). It can provision new servers, create applications, deploy them, run backup and restore operations and a whole lot of other things. It is the go-to tool for day-to-day operations when managing a Co-op Cloud instance. ## 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 **Coming Soon** ### Homebrew **Coming Soon** ### Build from source ```sh git clone https://git.coopcloud.tech/coop-cloud/abra cd abra go env -w GOPRIVATE=coopcloud.tech make install ``` The abra binary will be in `$GOPATH/bin`. ## Hacking 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. 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. Please use the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/) for your commits so we can automate our change log. ## 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. ## 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@` where `` 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.