forked from toolshed/abra-bash
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			merge-logg
			...
			monorepo
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 66013f6ddb | |||
| 3d3d6b9b67 | |||
| eec1dcb0b2 | |||
| 1d52c0f5ed | 
							
								
								
									
										28
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								.drone.yml
									
									
									
									
									
								
							@ -3,31 +3,11 @@ kind: pipeline
 | 
			
		||||
name: linters
 | 
			
		||||
steps:
 | 
			
		||||
  - name: run shellcheck
 | 
			
		||||
    image: koalaman/shellcheck-alpine:v0.7.1
 | 
			
		||||
    image: debian:buster
 | 
			
		||||
    commands:
 | 
			
		||||
      - shellcheck abra
 | 
			
		||||
 | 
			
		||||
  - name: run unit tests
 | 
			
		||||
    image: docker:dind
 | 
			
		||||
    commands:
 | 
			
		||||
      - apk add bats git bash
 | 
			
		||||
      - bats tests
 | 
			
		||||
 | 
			
		||||
  - name: collect code coverage
 | 
			
		||||
    failure: ignore  # until we fix this
 | 
			
		||||
    image: kcov/kcov:38
 | 
			
		||||
    commands:
 | 
			
		||||
      - apt update && apt install -y bats git bash
 | 
			
		||||
      - kcov . bats tests || true
 | 
			
		||||
 | 
			
		||||
  - name: send code coverage report to codecov
 | 
			
		||||
    failure: ignore  # until we fix this
 | 
			
		||||
    image: plugins/codecov
 | 
			
		||||
    settings:
 | 
			
		||||
      token:
 | 
			
		||||
        from_secret: codecov_token
 | 
			
		||||
        required: true
 | 
			
		||||
 | 
			
		||||
      - apt update
 | 
			
		||||
      - apt install -y shellcheck
 | 
			
		||||
      - shellcheck abra installer
 | 
			
		||||
trigger:
 | 
			
		||||
  branch:
 | 
			
		||||
    - main
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,2 +0,0 @@
 | 
			
		||||
coverage/
 | 
			
		||||
/.venv
 | 
			
		||||
							
								
								
									
										32
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@ -1,35 +1,3 @@
 | 
			
		||||
# abra x.x.x (UNRELEASED)
 | 
			
		||||
 | 
			
		||||
- Drop `multilogs` command ([#56](https://git.autonomic.zone/coop-cloud/abra/pulls/56))
 | 
			
		||||
- Remove `server use` command ([#51](https://git.autonomic.zone/coop-cloud/abra/issues/51))
 | 
			
		||||
- `new <app>` becomes `new <type>` ([#48](https://git.autonomic.zone/coop-cloud/abra/issues/48))
 | 
			
		||||
- `check` is run on `deploy` now and configurable ([77ba5652b2fe15820f5edfa0f642636f7b8eae7e](https://git.autonomic.zone/coop-cloud/abra/commit/77ba5652b2fe15820f5edfa0f642636f7b8eae7e))
 | 
			
		||||
- App configurations are always updated now ([#42](https://git.autonomic.zone/coop-cloud/abra/issues/42))
 | 
			
		||||
 | 
			
		||||
# abra 0.4.1 (2020-12-24)
 | 
			
		||||
 | 
			
		||||
- Bug-fixes on `app ls --status` & custom commands
 | 
			
		||||
- Add `app ls --server=...` and alias
 | 
			
		||||
 | 
			
		||||
# abra 0.4.0 (2020-12-24)
 | 
			
		||||
 | 
			
		||||
- New command-line interface based on docopt
 | 
			
		||||
- ~/.abra directory instead of expecting local .env files
 | 
			
		||||
- Integration tests & code coverage
 | 
			
		||||
 | 
			
		||||
# abra 0.3.1 (2020-09-27)
 | 
			
		||||
 | 
			
		||||
- Fix installer version
 | 
			
		||||
 | 
			
		||||
# abra 0.3.0 (2020-09-27)
 | 
			
		||||
 | 
			
		||||
- Add multilogs stack logs implementation ([#8](https://git.autonomic.zone/compose-stacks/abra/issues/8))
 | 
			
		||||
- Add beginnings of "monorepo" functionality
 | 
			
		||||
 | 
			
		||||
# abra 0.2.0 (2020-09-24)
 | 
			
		||||
 | 
			
		||||
- Prepare for swarm install script using script.d ([#12](https://git.autonomic.zone/compose-stacks/planning/issues/12))
 | 
			
		||||
 | 
			
		||||
# abra 0.1.2 (2020-09-22)
 | 
			
		||||
 | 
			
		||||
- Add upgrade command ([#10](https://git.autonomic.zone/autonomic-cooperative/abra/issues/10))
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								Makefile
									
									
									
									
									
								
							@ -1,38 +1,14 @@
 | 
			
		||||
.PHONY: test shellcheck docopt kcov codecov
 | 
			
		||||
default: install
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
	@DOCKER_CONTEXT=default docker run \
 | 
			
		||||
		-it \
 | 
			
		||||
		--rm \
 | 
			
		||||
		-v $$(pwd):/workdir \
 | 
			
		||||
		docker:dind \
 | 
			
		||||
		sh -c "apk add bats git bash && cd /workdir && bats /workdir/test.bats"
 | 
			
		||||
dev_install:
 | 
			
		||||
	ln -sf $(PWD)/abra ~/.local/bin
 | 
			
		||||
 | 
			
		||||
shellcheck:
 | 
			
		||||
	@docker run \
 | 
			
		||||
		-it \
 | 
			
		||||
		--rm \
 | 
			
		||||
		-v $$(pwd):/workdir \
 | 
			
		||||
		koalaman/shellcheck-alpine \
 | 
			
		||||
		shellcheck /workdir/abra
 | 
			
		||||
install:
 | 
			
		||||
	install abra /usr/bin/abra
 | 
			
		||||
 | 
			
		||||
docopt:
 | 
			
		||||
	@if [ ! -d ".venv" ]; then \
 | 
			
		||||
		python3 -m venv .venv && \
 | 
			
		||||
		.venv/bin/pip install -U pip setuptools wheel && \
 | 
			
		||||
		.venv/bin/pip install docopt-sh; \
 | 
			
		||||
	fi
 | 
			
		||||
	.venv/bin/docopt.sh abra
 | 
			
		||||
get_yq:
 | 
			
		||||
	wget https://github.com/mikefarah/yq/releases/download/3.3.2/yq_linux_amd64 && \
 | 
			
		||||
		chmod +x yq_linux_amd64 && \
 | 
			
		||||
		mv yq_linux_amd64 yq
 | 
			
		||||
 | 
			
		||||
kcov:
 | 
			
		||||
	@docker run \
 | 
			
		||||
		-it \
 | 
			
		||||
		--rm \
 | 
			
		||||
		-v $$(pwd):/workdir \
 | 
			
		||||
		kcov/kcov:latest \
 | 
			
		||||
		sh -c "kcov /workdir/coverage /workdir/abra || true"
 | 
			
		||||
 | 
			
		||||
codecov: SHELL:=/bin/bash
 | 
			
		||||
codecov:
 | 
			
		||||
	@bash <(curl -s https://codecov.io/bash) \
 | 
			
		||||
		-s coverage -t $$(pass show hosts/swarm.autonomic.zone/drone/codecov/token)
 | 
			
		||||
.PHONY: dev_install install get_yq
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								README.md
									
									
									
									
									
								
							@ -1,18 +1,56 @@
 | 
			
		||||
# abra
 | 
			
		||||
 | 
			
		||||
[](https://drone.autonomic.zone/coop-cloud/abra)
 | 
			
		||||
[](undefined)
 | 
			
		||||
[](https://drone.autonomic.zone/autonomic-cooperative/abra)
 | 
			
		||||
 | 
			
		||||
> https://cloud.autonomic.zone
 | 
			
		||||
 | 
			
		||||
The cooperative cloud utility belt 🎩🐇
 | 
			
		||||
 | 
			
		||||
## Documentation
 | 
			
		||||
 | 
			
		||||
> [docs.cloud.autonomic.zone](https://docs.cloud.autonomic.zone/)
 | 
			
		||||
Docker stack magic 🎩🐇
 | 
			
		||||
 | 
			
		||||
## Install
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
curl https://install.abra.autonomic.zone | bash
 | 
			
		||||
curl -fsSL https://install.abra.autonomic.zone | bash
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Specific releases are available via the project [release page](https://git.autonomic.zone/autonomic-cooperative/abra/releases).
 | 
			
		||||
 | 
			
		||||
## Changes
 | 
			
		||||
 | 
			
		||||
See [CHANGELOG.md](./CHANGELOG.md).
 | 
			
		||||
 | 
			
		||||
## Hacking
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
git clone ssh://git@git.autonomic.zone:2222/autonomic-cooperative/abra.git
 | 
			
		||||
cd abra
 | 
			
		||||
make dev_install
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
See [autonomic-cooperative/installer-scripts](https://git.autonomic.zone/autonomic-cooperative/installer-scripts) for the installer script deployment. To make a release, just add an entry to [CHANGELOG.md](./CHANGELOG.md) and the [installer](./installer) (following [semver](https://semver.org/) please) and then `git tag x.x.x && git push origin main --tags`. If you want the [installer-scripts](https://git.autonomic.zone/autonomic-cooperative/installer-scripts) deployment to pick that up, you'll need to change the version number in the [Makefile](https://git.autonomic.zone/autonomic-cooperative/installer-scripts/src/branch/main/Makefile) and run `make` in that repository and push the changes.
 | 
			
		||||
 | 
			
		||||
## Specify what to deploy where
 | 
			
		||||
 | 
			
		||||
You can use `abra` in one of 2 ways:
 | 
			
		||||
 | 
			
		||||
1. Clone a `compose-stack`, create an `.envrc` in it, and run `abra` in that
 | 
			
		||||
   directory. Be sure to set `ABRA_STACK_DIR=.`
 | 
			
		||||
2. "Monorepo mode": keep all your `compose-stack`s in one directory and all your `env` files in
 | 
			
		||||
   another, e.g.:
 | 
			
		||||
   ```
 | 
			
		||||
	 $ tree
 | 
			
		||||
   .
 | 
			
		||||
   ├── apps
 | 
			
		||||
   │   ├── mediawiki.demo.autonomic.zone.env
 | 
			
		||||
   │   ├── wordpress.demo.autonomic.zone.env
 | 
			
		||||
   └── stacks
 | 
			
		||||
       ├── gitea
 | 
			
		||||
       ├── matrix-synapse
 | 
			
		||||
       ├── mediawiki
 | 
			
		||||
       ├── nextcloud
 | 
			
		||||
       ├── swarmpit
 | 
			
		||||
       ├── traefik
 | 
			
		||||
       └── wordpress
 | 
			
		||||
		$ abra -e apps/mediawiki.demo.autonomic.zone.env deploy
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
- `abra run mariadb mysqldump gitea -p'GdIbMeS09SURRktBnm3jcTufsL5z0MPd' | gzip > ../git.autonomic.zone_mariadb_`date +%F`.sql.gz`
 | 
			
		||||
 | 
			
		||||
@ -1,52 +0,0 @@
 | 
			
		||||
#compdef abra
 | 
			
		||||
 | 
			
		||||
_abra () {
 | 
			
		||||
	local context state line curcontext="$curcontext" ret=1
 | 
			
		||||
	_arguments -n : \
 | 
			
		||||
		{-h,--help}'[Help message]' \
 | 
			
		||||
		'1:commands:(app server)' \
 | 
			
		||||
		'*::arguments:->arguments' \
 | 
			
		||||
		&& ret=0
 | 
			
		||||
 | 
			
		||||
	case $state in
 | 
			
		||||
		(arguments)
 | 
			
		||||
			curcontext="${curcontext%:*:*}:abra-arguments-$words[1]:"
 | 
			
		||||
			case $words[1] in
 | 
			
		||||
				(app)
 | 
			
		||||
					_arguments \
 | 
			
		||||
						'1: :_abra_apps' \
 | 
			
		||||
					&& ret=0
 | 
			
		||||
				;;
 | 
			
		||||
				(server)
 | 
			
		||||
					_arguments \
 | 
			
		||||
						'1:servers:_abra_servers' \
 | 
			
		||||
					&& ret=0
 | 
			
		||||
				;;
 | 
			
		||||
			esac
 | 
			
		||||
		;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	return ret
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_servers() {
 | 
			
		||||
	_path_files -/W $HOME/.abra/servers
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_apps()
 | 
			
		||||
{
 | 
			
		||||
	local newapps apps=($HOME/.abra/servers/*/*.env)
 | 
			
		||||
	typeset -a apps
 | 
			
		||||
	newapps=()
 | 
			
		||||
	for app in $apps; do
 | 
			
		||||
		newapps+=($(_abra_basename "${app}"))
 | 
			
		||||
	done
 | 
			
		||||
	_describe -t apps 'app' newapps
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_basename()
 | 
			
		||||
{
 | 
			
		||||
    printf -- "${1##*/}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra "$@"
 | 
			
		||||
@ -1,117 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
_abra_basename()
 | 
			
		||||
{
 | 
			
		||||
    echo "${1##*/}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_servers()
 | 
			
		||||
{
 | 
			
		||||
    # FIXME 3wc: copied from abra/get_servers()
 | 
			
		||||
    shopt -s nullglob dotglob
 | 
			
		||||
    local SERVERS=(~/.abra/servers/*)
 | 
			
		||||
    shopt -u nullglob dotglob
 | 
			
		||||
 | 
			
		||||
    for SERVER in "${SERVERS[@]}"; do
 | 
			
		||||
        _abra_basename "${SERVER}"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_complete_servers()
 | 
			
		||||
{
 | 
			
		||||
    mapfile -t COMPREPLY < <(compgen -W "$(_abra_servers)" -- "$1")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_apps()
 | 
			
		||||
{
 | 
			
		||||
    shopt -s nullglob dotglob
 | 
			
		||||
    local APPS=(~/.abra/servers/*/*.env)
 | 
			
		||||
    shopt -u nullglob dotglob
 | 
			
		||||
 | 
			
		||||
    for APP in "${APPS[@]}"; do
 | 
			
		||||
        _abra_basename "${APP%.env}"
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_complete_apps()
 | 
			
		||||
{
 | 
			
		||||
    mapfile -t COMPREPLY < <(compgen -W "$(_abra_apps)" -- "$1")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
_abra_complete()
 | 
			
		||||
{
 | 
			
		||||
    compopt +o default +o nospace
 | 
			
		||||
    COMPREPLY=()
 | 
			
		||||
 | 
			
		||||
    local -r cmds='
 | 
			
		||||
        app
 | 
			
		||||
        server
 | 
			
		||||
    '
 | 
			
		||||
    local -r short_opts='-e      -h     -s      -v'
 | 
			
		||||
    local -r long_opts='--env --help --stack --version'
 | 
			
		||||
 | 
			
		||||
    # Scan through the command line and find the abra command
 | 
			
		||||
    # (if present), as well as its expected position.
 | 
			
		||||
    local cmd
 | 
			
		||||
    local cmd_index=1 # Expected index of the command token.
 | 
			
		||||
    local i
 | 
			
		||||
    for (( i = 1; i < ${#COMP_WORDS[@]}; i++ )); do
 | 
			
		||||
        local word="${COMP_WORDS[i]}"
 | 
			
		||||
        case "$word" in
 | 
			
		||||
            -*)
 | 
			
		||||
                ((cmd_index++))
 | 
			
		||||
                ;;
 | 
			
		||||
            *)
 | 
			
		||||
                cmd="$word"
 | 
			
		||||
                break
 | 
			
		||||
                ;;
 | 
			
		||||
        esac
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    local cur="${COMP_WORDS[COMP_CWORD]}"
 | 
			
		||||
 | 
			
		||||
    if (( COMP_CWORD < cmd_index )); then
 | 
			
		||||
        # Offer option completions.
 | 
			
		||||
        case "$cur" in
 | 
			
		||||
            --*)
 | 
			
		||||
                mapfile -t COMPREPLY < <(compgen -W "$long_opts" -- "$cur")
 | 
			
		||||
                ;;
 | 
			
		||||
            -*)
 | 
			
		||||
                mapfile -t COMPREPLY < <(compgen -W "$short_opts" -- "$cur")
 | 
			
		||||
                ;;
 | 
			
		||||
            *)
 | 
			
		||||
                # Skip completion; we should never get here.
 | 
			
		||||
                ;;
 | 
			
		||||
        esac
 | 
			
		||||
    elif (( COMP_CWORD == cmd_index )); then
 | 
			
		||||
        # Offer command name completions.
 | 
			
		||||
        mapfile -t COMPREPLY < <(compgen -W "$cmds" -- "$cur")
 | 
			
		||||
    else
 | 
			
		||||
        # Offer command argument completions.
 | 
			
		||||
        case "$cmd" in
 | 
			
		||||
            server)
 | 
			
		||||
                # Offer exactly one server name completion.
 | 
			
		||||
                if (( COMP_CWORD == cmd_index + 2 )); then
 | 
			
		||||
                    _abra_complete_servers "$cur"
 | 
			
		||||
                fi
 | 
			
		||||
                ;;
 | 
			
		||||
            app)
 | 
			
		||||
                # Offer exactly one app completion.
 | 
			
		||||
                if (( COMP_CWORD == cmd_index + 1 )); then
 | 
			
		||||
                    _abra_complete_apps "$cur"
 | 
			
		||||
                fi
 | 
			
		||||
                ;;
 | 
			
		||||
            #help)
 | 
			
		||||
            #    # Offer exactly one command name completion.
 | 
			
		||||
            #    if (( COMP_CWORD == cmd_index + 1 )); then
 | 
			
		||||
            #        COMPREPLY=($(compgen -W "$cmds" -- "$cur"))
 | 
			
		||||
            #    fi
 | 
			
		||||
            #    ;;
 | 
			
		||||
            *)
 | 
			
		||||
                # Unknown command or unknowable argument.
 | 
			
		||||
                ;;
 | 
			
		||||
        esac
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
complete -o default -F _abra_complete abra
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
ABRA_VERSION="0.4.1"
 | 
			
		||||
ABRA_SRC="https://git.autonomic.zone/coop-cloud/abra/raw/tag/$ABRA_VERSION/abra"
 | 
			
		||||
ABRA_VERSION="0.1.2"
 | 
			
		||||
ABRA_SRC="https://git.autonomic.zone/autonomic-cooperative/abra/raw/tag/$ABRA_VERSION/abra"
 | 
			
		||||
 | 
			
		||||
function install_abra {
 | 
			
		||||
  mkdir -p "$HOME/.local/bin"
 | 
			
		||||
@ -1,40 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
version: "3.8"
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  abra_installer:
 | 
			
		||||
    image: "nginx:stable"
 | 
			
		||||
    configs:
 | 
			
		||||
      - source: abra_conf
 | 
			
		||||
        target: /etc/nginx/conf.d/abra.conf
 | 
			
		||||
      - source: abra_installer
 | 
			
		||||
        target: /var/www/abra-installer/installer
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "public:/var/www/abra-installer"
 | 
			
		||||
    networks:
 | 
			
		||||
      - proxy
 | 
			
		||||
    deploy:
 | 
			
		||||
      update_config:
 | 
			
		||||
        failure_action: rollback
 | 
			
		||||
        order: start-first
 | 
			
		||||
      labels:
 | 
			
		||||
        - "traefik.enable=true"
 | 
			
		||||
        - "traefik.http.services.abra-installer.loadbalancer.server.port=80"
 | 
			
		||||
        - "traefik.http.routers.abra-installer.rule=Host(`install.abra.autonomic.zone`)"
 | 
			
		||||
        - "traefik.http.routers.abra-installer.entrypoints=web-secure"
 | 
			
		||||
        - "traefik.http.routers.abra-installer.tls.certresolver=production"
 | 
			
		||||
 | 
			
		||||
configs:
 | 
			
		||||
  abra_installer:
 | 
			
		||||
    name: abra_installer_v1
 | 
			
		||||
    file: installer
 | 
			
		||||
  abra_conf:
 | 
			
		||||
    name: abra_conf_v1
 | 
			
		||||
    file: nginx.conf
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  proxy:
 | 
			
		||||
    external: true
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  public:
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
server {
 | 
			
		||||
  listen         80 default_server;
 | 
			
		||||
  server_name    install.abra.autonomic.zone;
 | 
			
		||||
 | 
			
		||||
  location / {
 | 
			
		||||
    root /var/www/abra-installer;
 | 
			
		||||
    add_header Content-Type text/plain;
 | 
			
		||||
    index installer;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								test/abra.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/abra.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
---
 | 
			
		||||
name: mystack
 | 
			
		||||
secrets:
 | 
			
		||||
  foo:
 | 
			
		||||
  bar:
 | 
			
		||||
  baz:
 | 
			
		||||
    length: 128
 | 
			
		||||
@ -1,17 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bats
 | 
			
		||||
 | 
			
		||||
@test "docker is available" {
 | 
			
		||||
    command -v docker
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "abra is executable" {
 | 
			
		||||
    ./abra --help
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "git is available" {
 | 
			
		||||
    command -v git
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "running in a container" {
 | 
			
		||||
    ls /etc/alpine-release
 | 
			
		||||
}
 | 
			
		||||
@ -1,49 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bats
 | 
			
		||||
 | 
			
		||||
setup() {
 | 
			
		||||
    export ABRA_DIR=$(mktemp -d)
 | 
			
		||||
    mkdir -p $ABRA_DIR/servers/default
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
teardown() {
 | 
			
		||||
    rm -rf "$ABRA_DIR"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "abra server add/rm works" {
 | 
			
		||||
    ./abra server add swarm.test.com
 | 
			
		||||
    docker context ls | grep swarm.test.com
 | 
			
		||||
    [ -d $ABRA_DIR/servers/swarm.test.com ]
 | 
			
		||||
    ./abra server swarm.test.com rm
 | 
			
		||||
 | 
			
		||||
    ./abra server add swarm.test.com foobar 12345
 | 
			
		||||
    [ -d $ABRA_DIR/servers/swarm.test.com ]
 | 
			
		||||
    ./abra server swarm.test.com rm
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "abra app new/rm works" {
 | 
			
		||||
    ./abra app new --server default --domain traefik.test.com traefik
 | 
			
		||||
    [ -f $ABRA_DIR/servers/default/traefik.test.com.env ]
 | 
			
		||||
 | 
			
		||||
    # interactive prompt
 | 
			
		||||
    echo "y" | ./abra app traefik.test.com delete
 | 
			
		||||
    [ ! -f $ABRA_DIR/servers/default/traefik.test.com.env ]
 | 
			
		||||
 | 
			
		||||
    # --force
 | 
			
		||||
    ./abra app new --server default --domain traefik.test.com traefik
 | 
			
		||||
    ./abra app traefik.test.com delete --force
 | 
			
		||||
    [ ! -f $ABRA_DIR/servers/default/traefik.test.com.env ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "abra app <domain> secret (insert|generate|rm)" {
 | 
			
		||||
    # TODO 3wc: mock `server new` so we don't endlessly re-test it
 | 
			
		||||
    ./abra app new --server default --domain traefik.test.com traefik
 | 
			
		||||
 | 
			
		||||
    ./abra app traefik.test.com secret insert foobar v1 "foobar"
 | 
			
		||||
 | 
			
		||||
    # interactive prompt
 | 
			
		||||
    echo "y" | ./abra app traefik.test.com secret rm foobar
 | 
			
		||||
 | 
			
		||||
    ./abra app traefik.test.com secret insert foobar v1 "foobar"
 | 
			
		||||
    #  prompt
 | 
			
		||||
    ./abra app traefik.test.com secret rm foobar --force
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user