Skip to content

Commit

Permalink
feat: add new vault and document name params
Browse files Browse the repository at this point in the history
  • Loading branch information
GWillmann committed Feb 16, 2022
1 parent 12d54ad commit 99f1567
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 13 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![Lint](https://github.com/Kinoba/dotenv-op/workflows/Lint/badge.svg)

Small utility to help our team work with all our projects dotenv files.
Small utility to help our team work with all our projects secret files.

## Requirements

Expand Down
51 changes: 39 additions & 12 deletions dotenv-op.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,24 @@ check_op_signin() {
if op get account 2>&1 >/dev/null | grep -q ERROR; then
eval "$(op signin "$ONEPASSWORD_ACCOUNT_SUBDOMAIN")"
if op get account 2>&1 >/dev/null | grep -q ERROR; then
printf "\nPlease run:\n\nop signin %s\n\n" "$ONEPASSWORD_ACCOUNT_URL $ONEPASSWORD_ACCOUNT_EMAIL "
return 1;
printf "\nPlease run:\n\nop signin %s\n\n" "$ONEPASSWORD_ACCOUNT_URL $ONEPASSWORD_ACCOUNT_EMAIL"
exit 1;
fi
fi
}

document_filename() {
echo "[$PROJECT] $ENVIRONMENT"
}

dot_env_filename() {
echo "[$PROJECT] .env.$ENVIRONMENT"
}

usage() {
cat << EOT
cat << EOT
usage $0 [-h] get|create|edit -p project -e environment
usage $0 [-h] get|create|edit -p project -e environment -v vault
MANDATORY
get : print 1Password file to stdout
Expand All @@ -40,34 +44,53 @@ cat << EOT
-h show this usage
-p specify project
-e specify environement (production/staging)
-v specify vault (overrides ONEPASSWORD_VAULT)
EOT
}

handle_response() {
readonly response=$1

[[ "$response" != *ERROR* ]] && printf "\n\n%s\n\n" "$response" && exit 0

if [[ "$response" == *"doesn't seem to be a vault in this account"* ]]; then
printf "\nVault \"$VAULT\" does not exist. Available vaults are:\n\n%s\n" "$(op list vaults --cache | jq -r '.[].name')"
exit 1
fi

echo "Unknown response: $response"
exit 1
}

main() {
check_op
check_op_signin

if [ -z "$ACTION" ] || [ -z "$PROJECT" ] || [ -z "$ENVIRONMENT" ]; then usage; exit 1; fi
[[ -z "$VAULT" ]] && VAULT=$ONEPASSWORD_VAULT

[[ -z "$DOCUMENT_NAME" ]] && DOCUMENT_NAME="$(dot_env_filename)"

if [ "$ACTION" = get ]; then
printf "%s\n\n" "$(op "$ACTION" document "$(dot_env_filename)" --vault "$ONEPASSWORD_VAULT")"
response=$(printf "%s\n\n" "$(op "$ACTION" document "$DOCUMENT_NAME" --vault "$VAULT" 2>&1)")
elif [ "$ACTION" = create ]; then
op "$ACTION" document "$LOCAL_DOT_ENV" --filename "$(dot_env_filename)" --vault "$ONEPASSWORD_VAULT"
response=$(op "$ACTION" document "$LOCAL_DOT_ENV" --filename "$DOCUMENT_NAME" --vault "$VAULT" 2>&1)
elif [ "$ACTION" = edit ]; then
op "$ACTION" document "$(dot_env_filename)" "$LOCAL_DOT_ENV" --filename "$(dot_env_filename)" --vault "$ONEPASSWORD_VAULT"
response=$(op "$ACTION" document "$DOCUMENT_NAME" "$LOCAL_DOT_ENV" --filename "$DOCUMENT_NAME" --vault "$VAULT" 2>&1)
fi

handle_response "$response"
}

ACTION=""
LOCAL_DOT_ENV=""
PROJECT=""
ENVIRONMENT=""
VAULT=""
DOCUMENT_NAME=""

if [[ $# -eq 0 ]] ; then
usage
exit 1
fi
[[ $# -eq 0 ]] && usage && exit 1

if [[ $1 == "get" ]] || [[ $1 == "create" ]] || [[ $1 == "edit" ]] ; then
ACTION="$1"
Expand All @@ -77,7 +100,7 @@ else
exit 1
fi

while getopts "hf:p:e:" opt; do
while getopts "hf:p:e:v:n:" opt; do
case $opt in
f) LOCAL_DOT_ENV="$OPTARG"
;;
Expand All @@ -89,6 +112,10 @@ while getopts "hf:p:e:" opt; do
;;
e) ENVIRONMENT="$OPTARG"
;;
v) VAULT="$OPTARG"
;;
n) DOCUMENT_NAME="$OPTARG"
;;
\?)
echo "Invalid option -$OPTARG" >&2
usage
Expand Down

0 comments on commit 99f1567

Please sign in to comment.