#!/usr/bin/env bash # Original Source: http://blog.nonuby.com/blog/2012/07/05/copying-env-vars-from-one-heroku-app-to-another/ ## Usage: heroku_env_copy [options] SOURCE TARGET ## ## NOTE: This script will only output the command, you should run it yourself. ## ## Options: ## -h, --help Display this message. ## usage() { [ "$*" ] && echo "$0: $*" sed -n '/^##/,/^$/s/^## \{0,1\}//p' "$0" exit 2 } 2>/dev/null main() { while [ $# -gt 0 ]; do case $1 in (-h|--help) usage 2>&1;; (--) break;; (-*) usage "$1: unknown option";; (*) break;; esac shift done SOURCE="${1}" TARGET="${2}" vars="" echo "Select the ENV variables you want to copy from $SOURCE to $TARGET:" while read key value; do key=${key%%:} read -p "Include: $key=$value ? [Y/n] (default yes) " -u 1 response if printf "%s\n" "$response" | grep -Eq "$(locale noexpr)" then tput cuu 1 && tput el echo -e "$(tput setaf 9)Copy: $key=$value ? No$(tput sgr0)" else tput cuu 1 && tput el echo -e "$(tput setaf 2)Copy: $key=$value ? Yes$(tput sgr0)" vars=$vars" $key=\"$value\"" fi done < <(heroku config --app "$SOURCE" | sed -e '1d') echo "--------------------------------------------------------------------" echo "This is the command you need to run to update your heroku app:" echo "heroku config:set$vars --app $TARGET" } set -e # exit on command errors main $@