Skip to content
Snippets Groups Projects
Commit e44ff1f2 authored by nimrod's avatar nimrod
Browse files

Move a bunch of stuff to the workbench image.

- Move Bash completion of tools to the image (it makes sense to have
  them together).
- bfg download and script.
- Remove the binaries Makefile, remove almost all of the vendored files,
  merge everything back to a single Makefile.
- Delete the Python requirements.txt, it's all in the image anyway.
- Some nicer output in the Git post-merge hook.
- RabbitMQ admin script.
- Update the README.
parent 09422bbb
No related branches found
No related tags found
No related merge requests found
Showing
with 113 additions and 3084 deletions
complete -C 'aws_completer' aws
#!/bin/bash
#
# bash completion for docker-compose
#
# This work is based on the completion for the docker command.
#
# This script provides completion of:
# - commands and their options
# - service names
# - filepaths
#
# To enable the completions either:
# - place this file in /etc/bash_completion.d
# or
# - copy this file to e.g. ~/.docker-compose-completion.sh and add the line
# below to your .bashrc after bash completion features are loaded
# . ~/.docker-compose-completion.sh
__docker_compose_previous_extglob_setting=$(shopt -p extglob)
shopt -s extglob
__docker_compose_q() {
docker-compose 2>/dev/null "${top_level_options[@]}" "$@"
}
# Transforms a multiline list of strings into a single line string
# with the words separated by "|".
__docker_compose_to_alternatives() {
local parts=( $1 )
local IFS='|'
echo "${parts[*]}"
}
# Transforms a multiline list of options into an extglob pattern
# suitable for use in case statements.
__docker_compose_to_extglob() {
local extglob=$( __docker_compose_to_alternatives "$1" )
echo "@($extglob)"
}
# Determines whether the option passed as the first argument exist on
# the commandline. The option may be a pattern, e.g. `--force|-f`.
__docker_compose_has_option() {
local pattern="$1"
for (( i=2; i < $cword; ++i)); do
if [[ ${words[$i]} =~ ^($pattern)$ ]] ; then
return 0
fi
done
return 1
}
# Returns `key` if we are currently completing the value of a map option (`key=value`)
# which matches the extglob passed in as an argument.
# This function is needed for key-specific completions.
__docker_compose_map_key_of_current_option() {
local glob="$1"
local key glob_pos
if [ "$cur" = "=" ] ; then # key= case
key="$prev"
glob_pos=$((cword - 2))
elif [[ $cur == *=* ]] ; then # key=value case (OSX)
key=${cur%=*}
glob_pos=$((cword - 1))
elif [ "$prev" = "=" ] ; then
key=${words[$cword - 2]} # key=value case
glob_pos=$((cword - 3))
else
return
fi
[ "${words[$glob_pos]}" = "=" ] && ((glob_pos--)) # --option=key=value syntax
[[ ${words[$glob_pos]} == @($glob) ]] && echo "$key"
}
# suppress trailing whitespace
__docker_compose_nospace() {
# compopt is not available in ancient bash versions
type compopt &>/dev/null && compopt -o nospace
}
# Outputs a list of all defined services, regardless of their running state.
# Arguments for `docker-compose ps` may be passed in order to filter the service list,
# e.g. `status=running`.
__docker_compose_services() {
__docker_compose_q ps --services "$@"
}
# Applies completion of services based on the current value of `$cur`.
# Arguments for `docker-compose ps` may be passed in order to filter the service list,
# see `__docker_compose_services`.
__docker_compose_complete_services() {
COMPREPLY=( $(compgen -W "$(__docker_compose_services "$@")" -- "$cur") )
}
# The services for which at least one running container exists
__docker_compose_complete_running_services() {
local names=$(__docker_compose_services --filter status=running)
COMPREPLY=( $(compgen -W "$names" -- "$cur") )
}
_docker_compose_build() {
case "$prev" in
--build-arg)
COMPREPLY=( $( compgen -e -- "$cur" ) )
__docker_compose_nospace
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--build-arg --compress --force-rm --help --memory --no-cache --pull --parallel" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter source=build
;;
esac
}
_docker_compose_bundle() {
case "$prev" in
--output|-o)
_filedir
return
;;
esac
COMPREPLY=( $( compgen -W "--push-images --help --output -o" -- "$cur" ) )
}
_docker_compose_config() {
case "$prev" in
--hash)
if [[ $cur == \\* ]] ; then
COMPREPLY=( '\*' )
else
COMPREPLY=( $(compgen -W "$(__docker_compose_services) \\\* " -- "$cur") )
fi
return
;;
esac
COMPREPLY=( $( compgen -W "--hash --help --quiet -q --resolve-image-digests --services --volumes" -- "$cur" ) )
}
_docker_compose_create() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--build --force-recreate --help --no-build --no-recreate" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_docker_compose() {
case "$prev" in
--tlscacert|--tlscert|--tlskey)
_filedir
return
;;
--file|-f)
_filedir "y?(a)ml"
return
;;
--log-level)
COMPREPLY=( $( compgen -W "debug info warning error critical" -- "$cur" ) )
return
;;
--project-directory)
_filedir -d
return
;;
$(__docker_compose_to_extglob "$daemon_options_with_args") )
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "$daemon_boolean_options $daemon_options_with_args $top_level_options_with_args --help -h --no-ansi --verbose --version -v" -- "$cur" ) )
;;
*)
COMPREPLY=( $( compgen -W "${commands[*]}" -- "$cur" ) )
;;
esac
}
_docker_compose_down() {
case "$prev" in
--rmi)
COMPREPLY=( $( compgen -W "all local" -- "$cur" ) )
return
;;
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --rmi --timeout -t --volumes -v --remove-orphans" -- "$cur" ) )
;;
esac
}
_docker_compose_events() {
case "$prev" in
--json)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --json" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_exec() {
case "$prev" in
--index|--user|-u|--workdir|-w)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-d --detach --help --index --privileged -T --user -u --workdir -w" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_help() {
COMPREPLY=( $( compgen -W "${commands[*]}" -- "$cur" ) )
}
_docker_compose_images() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --quiet -q" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_kill() {
case "$prev" in
-s)
COMPREPLY=( $( compgen -W "SIGHUP SIGINT SIGKILL SIGUSR1 SIGUSR2" -- "$(echo $cur | tr '[:lower:]' '[:upper:]')" ) )
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help -s" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_logs() {
case "$prev" in
--tail)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--follow -f --help --no-color --tail --timestamps -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_pause() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_port() {
case "$prev" in
--protocol)
COMPREPLY=( $( compgen -W "tcp udp" -- "$cur" ) )
return;
;;
--index)
return;
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --index --protocol" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_ps() {
local key=$(__docker_compose_map_key_of_current_option '--filter')
case "$key" in
source)
COMPREPLY=( $( compgen -W "build image" -- "${cur##*=}" ) )
return
;;
status)
COMPREPLY=( $( compgen -W "paused restarting running stopped" -- "${cur##*=}" ) )
return
;;
esac
case "$prev" in
--filter)
COMPREPLY=( $( compgen -W "source status" -S "=" -- "$cur" ) )
__docker_compose_nospace
return;
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--all -a --filter --help --quiet -q --services" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_pull() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-pull-failures --include-deps --no-parallel --quiet -q" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter source=image
;;
esac
}
_docker_compose_push() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-push-failures" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_restart() {
case "$prev" in
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --timeout -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_rm() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--force -f --help --stop -s -v" -- "$cur" ) )
;;
*)
if __docker_compose_has_option "--stop|-s" ; then
__docker_compose_complete_services
else
__docker_compose_complete_services --filter status=stopped
fi
;;
esac
}
_docker_compose_run() {
case "$prev" in
-e)
COMPREPLY=( $( compgen -e -- "$cur" ) )
__docker_compose_nospace
return
;;
--entrypoint|--label|-l|--name|--user|-u|--volume|-v|--workdir|-w)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--detach -d --entrypoint -e --help --label -l --name --no-deps --publish -p --rm --service-ports -T --use-aliases --user -u --volume -v --workdir -w" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_scale() {
case "$prev" in
=)
COMPREPLY=("$cur")
return
;;
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --timeout -t" -- "$cur" ) )
;;
*)
COMPREPLY=( $(compgen -S "=" -W "$(__docker_compose_services)" -- "$cur") )
__docker_compose_nospace
;;
esac
}
_docker_compose_start() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter status=stopped
;;
esac
}
_docker_compose_stop() {
case "$prev" in
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --timeout -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_top() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_running_services
;;
esac
}
_docker_compose_unpause() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
;;
*)
__docker_compose_complete_services --filter status=paused
;;
esac
}
_docker_compose_up() {
case "$prev" in
=)
COMPREPLY=("$cur")
return
;;
--exit-code-from)
__docker_compose_complete_services
return
;;
--scale)
COMPREPLY=( $(compgen -S "=" -W "$(__docker_compose_services)" -- "$cur") )
__docker_compose_nospace
return
;;
--timeout|-t)
return
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--abort-on-container-exit --always-recreate-deps --build -d --detach --exit-code-from --force-recreate --help --no-build --no-color --no-deps --no-recreate --no-start --renew-anon-volumes -V --remove-orphans --scale --timeout -t" -- "$cur" ) )
;;
*)
__docker_compose_complete_services
;;
esac
}
_docker_compose_version() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--short" -- "$cur" ) )
;;
esac
}
_docker_compose() {
local previous_extglob_setting=$(shopt -p extglob)
shopt -s extglob
local commands=(
build
bundle
config
create
down
events
exec
help
images
kill
logs
pause
port
ps
pull
push
restart
rm
run
scale
start
stop
top
unpause
up
version
)
# Options for the docker daemon that have to be passed to secondary calls to
# docker-compose executed by this script.
local daemon_boolean_options="
--skip-hostname-check
--tls
--tlsverify
"
local daemon_options_with_args="
--file -f
--host -H
--project-directory
--project-name -p
--tlscacert
--tlscert
--tlskey
"
# These options are require special treatment when searching the command.
local top_level_options_with_args="
--log-level
"
COMPREPLY=()
local cur prev words cword
_get_comp_words_by_ref -n : cur prev words cword
# search subcommand and invoke its handler.
# special treatment of some top-level options
local command='docker_compose'
local top_level_options=()
local counter=1
while [ $counter -lt $cword ]; do
case "${words[$counter]}" in
$(__docker_compose_to_extglob "$daemon_boolean_options") )
local opt=${words[counter]}
top_level_options+=($opt)
;;
$(__docker_compose_to_extglob "$daemon_options_with_args") )
local opt=${words[counter]}
local arg=${words[++counter]}
top_level_options+=($opt $arg)
;;
$(__docker_compose_to_extglob "$top_level_options_with_args") )
(( counter++ ))
;;
-*)
;;
*)
command="${words[$counter]}"
break
;;
esac
(( counter++ ))
done
local completions_func=_docker_compose_${command//-/_}
declare -F $completions_func >/dev/null && $completions_func
eval "$previous_extglob_setting"
return 0
}
eval "$__docker_compose_previous_extglob_setting"
unset __docker_compose_previous_extglob_setting
complete -F _docker_compose docker-compose docker-compose.exe
#
# bash completion file for docker-machine commands
#
# This script provides completion of:
# - commands and their options
# - machine names
# - filepaths
#
# To enable the completions either:
# - place this file in /etc/bash_completion.d
# or
# - copy this file to e.g. ~/.docker-machine-completion.sh and add the line
# below to your .bashrc after bash completion features are loaded
# . ~/.docker-machine-completion.sh
#
# --- helper functions -------------------------------------------------------
_docker_machine_q() {
docker-machine 2>/dev/null "$@"
}
# suppresses trailing whitespace
_docker_machine_nospace() {
# compopt is not available in ancient bash versions (OSX)
# so only call it if it's available
type compopt &>/dev/null && compopt -o nospace
}
_docker_machine_machines() {
_docker_machine_q ls --format '{{.Name}}' "$@"
}
_docker_machine_drivers() {
local drivers=(
amazonec2
azure
digitalocean
exoscale
generic
google
hyperv
openstack
rackspace
softlayer
virtualbox
vmwarefusion
vmwarevcloudair
vmwarevsphere
)
echo "${drivers[@]}"
}
_docker_machine_value_of_option() {
local pattern="$1"
for (( i=2; i < ${cword}; ++i)); do
if [[ ${words[$i]} =~ ^($pattern)$ ]] ; then
echo ${words[$i + 1]}
break
fi
done
}
# Returns `key` if we are currently completing the value of a map option
# (`key=value`) which matches the glob passed in as an argument.
# This function is needed for key-specific argument completions.
_docker_machine_map_key_of_current_option() {
local glob="$1"
local key glob_pos
if [ "$cur" = "=" ] ; then # key= case
key="$prev"
glob_pos=$((cword - 2))
elif [[ $cur == *=* ]] ; then # key=value case (OSX)
key=${cur%=*}
glob_pos=$((cword - 1))
elif [ "$prev" = "=" ] ; then
key=${words[$cword - 2]} # key=value case
glob_pos=$((cword - 3))
else
return
fi
[ "${words[$glob_pos]}" = "=" ] && ((glob_pos--)) # --option=key=value syntax
[[ ${words[$glob_pos]} == $glob ]] && echo "$key"
}
# Finds the position of the first word that is neither option nor an option's argument.
# If there are options that require arguments, you need to pass a glob describing
# those options, e.g. "--option1|-o|--option2".
# Use this function to restrict completions to exact positions after the options.
_docker_machine_pos_first_nonflag() {
local argument_flags=$1
local counter=$((${subcommand_pos:-${command_pos}} + 1))
while [ "$counter" -le "$cword" ]; do
if [ -n "$argument_flags" ] && eval "case '${words[$counter]}' in $argument_flags) true ;; *) false ;; esac"; then
(( counter++ ))
# eat "=" in case of --option=arg syntax
[ "${words[$counter]}" = "=" ] && (( counter++ ))
else
case "${words[$counter]}" in
-*)
;;
*)
break
;;
esac
fi
# Bash splits words at "=", retaining "=" as a word, examples:
# "--debug=false" => 3 words, "--log-opt syslog-facility=daemon" => 4 words
while [ "${words[$counter + 1]}" = "=" ] ; do
counter=$(( counter + 2))
done
(( counter++ ))
done
echo $counter
}
# --- completion functions ---------------------------------------------------
_docker_machine_active() {
case "${prev}" in
--timeout|-t)
return
;;
esac
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help --timeout -t" -- "${cur}"))
fi
}
_docker_machine_config() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help --swarm" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_create() {
case "${prev}" in
--driver|-d)
COMPREPLY=($(compgen -W "$(_docker_machine_drivers)" -- "${cur}"))
return
;;
esac
# driver specific options are only included in help output if --driver is given,
# so we have to pass that option when calling docker-machine to harvest options.
local driver="$(_docker_machine_value_of_option '--driver|-d')"
local parsed_options="$(_docker_machine_q create ${driver:+--driver $driver} --help | grep '^ -' | sed 's/^ //; s/[^a-z0-9-].*$//')"
if [[ ${cur} == -* ]]; then
COMPREPLY=($(compgen -W "${parsed_options} -d --help" -- "${cur}"))
fi
}
_docker_machine_env() {
case "${prev}" in
--shell)
COMPREPLY=($(compgen -W "cmd emacs fish powershell tcsh" -- "${cur}"))
return
;;
esac
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help --no-proxy --shell --swarm --unset -u" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
# See docker-machine-wrapper.bash for the use command
_docker_machine_use() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help --swarm --unset" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_inspect() {
case "${prev}" in
--format|-f)
return
;;
esac
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--format -f --help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_ip() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_kill() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_ls() {
local key=$(_docker_machine_map_key_of_current_option '--filter')
case "$key" in
driver)
COMPREPLY=($(compgen -W "$(_docker_machine_drivers)" -- "${cur##*=}"))
return
;;
state)
COMPREPLY=($(compgen -W "Error Paused Running Saved Starting Stopped Stopping" -- "${cur##*=}"))
return
;;
esac
case "${prev}" in
--filter)
COMPREPLY=($(compgen -W "driver label name state swarm" -S= -- "${cur}"))
_docker_machine_nospace
return
;;
--format|-f|--timeout|-t)
return
;;
esac
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--filter --format -f --help --quiet -q --timeout -t" -- "${cur}"))
fi
}
_docker_machine_mount() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help --unmount -u" -- "${cur}"))
else
local pos=$(_docker_machine_pos_first_nonflag)
if [ "$cword" -eq "$pos" ]; then
# We can't complete remote filesystems. All we can do here is to complete the machine.
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Running)" -S: -- "${cur}"))
_docker_machine_nospace
elif [ "$cword" -eq "$((pos + 1))" ]; then
_filedir -d
fi
fi
}
_docker_machine_provision() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Running)" -- "${cur}"))
fi
}
_docker_machine_regenerate_certs() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--client-certs --force -f --help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Running)" -- "${cur}"))
fi
}
_docker_machine_restart() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_rm() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--force -f --help -y" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_ssh() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_scp() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--delta -d --help --quiet -q --recursive -r" -- "${cur}"))
else
_filedir
# It would be really nice to ssh to the machine and ls to complete
# remote files.
COMPREPLY=($(compgen -W "$(_docker_machine_machines | sed 's/$/:/')" -- "${cur}") "${COMPREPLY[@]}")
fi
}
_docker_machine_start() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Stopped)" -- "${cur}"))
fi
}
_docker_machine_status() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_stop() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Running)" -- "${cur}"))
fi
}
_docker_machine_upgrade() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_url() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_version() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
fi
}
_docker_machine_help() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "${commands[*]}" -- "${cur}"))
fi
}
_docker_machine_docker_machine() {
if [[ " ${wants_file[*]} " =~ " ${prev} " ]]; then
_filedir
elif [[ " ${wants_dir[*]} " =~ " ${prev} " ]]; then
_filedir -d
elif [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "${flags[*]} ${wants_dir[*]} ${wants_file[*]}" -- "${cur}"))
else
COMPREPLY=($(compgen -W "${commands[*]}" -- "${cur}"))
fi
}
_docker_machine() {
COMPREPLY=()
local commands=(active config create env inspect ip kill ls mount provision regenerate-certs restart rm ssh scp start status stop upgrade url version help)
local flags=(--debug --native-ssh --github-api-token --bugsnag-api-token --help --version)
local wants_dir=(--storage-path)
local wants_file=(--tls-ca-cert --tls-ca-key --tls-client-cert --tls-client-key)
# Add the use subcommand, if we have an alias loaded
if [[ ${DOCKER_MACHINE_WRAPPED} = true ]]; then
commands=("${commands[@]}" use)
fi
local cur prev words cword
_get_comp_words_by_ref -n : cur prev words cword
local i
local command=docker-machine command_pos=0
for (( i=1; i < ${cword}; ++i)); do
local word=${words[i]}
if [[ " ${wants_file[*]} ${wants_dir[*]} " =~ " ${word} " ]]; then
# skip the next option
(( ++i ))
elif [[ " ${commands[*]} " =~ " ${word} " ]]; then
command=${word}
command_pos=$i
fi
done
local completion_func=_docker_machine_"${command//-/_}"
if declare -F "${completion_func}" > /dev/null; then
${completion_func}
fi
return 0
}
complete -F _docker_machine docker-machine docker-machine.exe
#!/usr/bin/env bash
#
# Bash completion support for Fabric (http://fabfile.org/)
#
#
# Copyright (C) 2011 by Konstantin Bakulin
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
# Thanks to:
# - Adam Vandenberg,
# https://github.com/adamv/dotfiles/blob/master/completion_scripts/fab_completion.bash
#
# - Enrico Batista da Luz,
# https://github.com/ricobl/dotfiles/blob/master/bin/fab_bash_completion
#
# Use cache files for fab tasks or not.
# If set to "false" command "fab --shortlist" will be executed every time.
export FAB_COMPLETION_CACHE_TASKS=true
# File name where tasks cache will be stored (in current dir).
export FAB_COMPLETION_CACHED_TASKS_FILENAME=".fab_tasks~"
# Set command to get time of last file modification as seconds since Epoch
case $(uname) in
Darwin|FreeBSD)
__FAB_COMPLETION_MTIME_COMMAND="/usr/bin/stat -f '%m'"
;;
*)
__FAB_COMPLETION_MTIME_COMMAND="stat -c '%Y'"
;;
esac
#
# Get time of last fab cache file modification as seconds since Epoch
#
function __fab_chache_mtime() {
$__FAB_COMPLETION_MTIME_COMMAND \
$FAB_COMPLETION_CACHED_TASKS_FILENAME | xargs -n 1 expr
}
#
# Get time of last fabfile file/module modification as seconds since Epoch
#
function __fab_fabfile_mtime() {
local f="fabfile"
if [[ -e "${f}.py" ]]; then
$__FAB_COMPLETION_MTIME_COMMAND "${f}.py" | xargs -n 1 expr
else
# Suppose that it's a fabfile dir
find $f/*.py -exec $__FAB_COMPLETION_MTIME_COMMAND {} + \
| xargs -n 1 expr | sort -nr | head -1
fi
}
#
# Completion for "fab" command
#
function __fab_completion() {
# Return if "fab" command doesn't exists
[[ -e $(which fab 2> /dev/null) ]] || return 0
# Variables to hold the current word and possible matches
local cur="${COMP_WORDS[COMP_CWORD]}"
local opts=()
# Generate possible matches and store them in variable "opts"
case "$cur" in
-*)
if [[ -z "$__FAB_COMPLETION_LONG_OPT" ]]; then
export __FAB_COMPLETION_LONG_OPT=$(
fab --help | egrep -o "\-\-[A-Za-z_\-]+\=?" | sort -u)
fi
opts="$__FAB_COMPLETION_LONG_OPT"
;;
*)
# If "fabfile.py" or "fabfile" dir with "__init__.py" file exists
local f="fabfile"
if [[ -e "${f}.py" || (-d "$f" && -e "$f/__init__.py") ]]; then
# Build a list of the available tasks
if $FAB_COMPLETION_CACHE_TASKS; then
# If use cache
if [[ ! -s $FAB_COMPLETION_CACHED_TASKS_FILENAME ||
$(__fab_fabfile_mtime) -gt $(__fab_chache_mtime) ]]
then
fab --shortlist > $FAB_COMPLETION_CACHED_TASKS_FILENAME \
2> /dev/null
fi
opts=$(cat $FAB_COMPLETION_CACHED_TASKS_FILENAME)
else
# Without cache
opts=$(fab --shortlist 2> /dev/null)
fi
fi
;;
esac
# Set possible completions
COMPREPLY=($(compgen -W "$opts" -- $cur))
}
complete -o default -o nospace -F __fab_completion fab
_python_argcomplete() {
local IFS=' '
local prefix=
typeset -i n
(( lastw=${#COMP_WORDS[@]} -1))
if [[ ${COMP_WORDS[lastw]} == --*=* ]]; then
# for bash version 3.2
flag=${COMP_WORDS[lastw]%%=*}
set -- "$1" "$2" '='
elif [[ $3 == '=' ]]; then
flag=${COMP_WORDS[-3]}
fi
if [[ $3 == ssh && $2 == *@* ]] ;then
# handle ssh user@instance specially
prefix=${2%@*}@
COMP_LINE=${COMP_LINE%$2}"${2#*@}"
elif [[ $3 == '=' ]] ; then
# handle --flag=value
prefix=$flag=$2
line=${COMP_LINE%$prefix};
COMP_LINE=$line${prefix/=/ };
prefix=
fi
if [[ $2 == *,* ]]; then
# handle , separated list
prefix=${2%,*},
set -- "$1" "${2#$prefix}" "$3"
COMP_LINE==${COMP_LINE%$prefix*}$2
fi
# Treat --flag=<TAB> as --flag <TAB> to work around bash 4.x bug
if [[ ${COMP_LINE} == *= && ${COMP_WORDS[-2]} == --* ]]; then
COMP_LINE=${COMP_LINE%=}' '
fi
COMPREPLY=( $(IFS="$IFS" COMP_LINE="$COMP_LINE" COMP_POINT="$COMP_POINT" _ARGCOMPLETE_COMP_WORDBREAKS="$COMP_WORDBREAKS" _ARGCOMPLETE=1 "$1" 8>&1 9>&2 1>/dev/null 2>/dev/null) )
if [[ $? != 0 ]]; then
unset COMPREPLY
return
fi
if [[ $prefix != '' ]]; then
for ((n=0; n < ${#COMPREPLY[@]}; n++)); do
COMPREPLY[$n]=$prefix${COMPREPLY[$n]}
done
fi
for ((n=0; n < ${#COMPREPLY[@]}; n++)); do
match=${COMPREPLY[$n]%' '}
if [[ $match != '' ]]; then
COMPREPLY[$n]=${match//? /' '}' '
fi
done
# if flags argument has a single completion and ends in '= ', delete ' '
if [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} == -* &&
${COMPREPLY[0]} == *'= ' ]]; then
COMPREPLY[0]=${COMPREPLY[0]%' '}
fi
}
complete -o nospace -F _python_argcomplete "gcloud"
_completer() {
command=$1
name=$2
eval '[[ "$'"${name}"'_COMMANDS" ]] || '"${name}"'_COMMANDS="$('"${command}"')"'
set -- $COMP_LINE
shift
while [[ $1 == -* ]]; do
shift
done
[[ $2 ]] && return
grep -q "${name}\s*$" <<< $COMP_LINE &&
eval 'COMPREPLY=($'"${name}"'_COMMANDS)' &&
return
[[ "$COMP_LINE" == *" " ]] && return
[[ $1 ]] &&
eval 'COMPREPLY=($(echo "$'"${name}"'_COMMANDS" | grep ^'"$1"'))'
}
unset bq_COMMANDS
_bq_completer() {
_completer "CLOUDSDK_COMPONENT_MANAGER_DISABLE_UPDATE_CHECK=1 bq help | grep '^[^ ][^ ]* ' | sed 's/ .*//'" bq
}
complete -F _bq_completer bq
complete -o nospace -F _python_argcomplete gsutil
#!/bin/bash
# Credits:
# https://blog.heckel.xyz/2015/03/24/bash-completion-with-sub-commands-and-dynamic-options/
# https://raw.githubusercontent.com/syncany/syncany/develop/gradle/bash/syncany.bash-completion
shopt -s progcomp
_platforms(){
molecule status --porcelain --platforms | cut -d' ' -f1 2>/dev/null
}
_providers(){
molecule status --porcelain --providers | cut -d' ' -f1 2>/dev/null
}
_hosts(){
molecule status --porcelain --hosts | cut -d' ' -f1 2>/dev/null
}
_molecule(){
local cur prev firstword lastword complete_words complete_options
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
firstword=$(_get_firstword)
GLOBAL_COMMANDS="syntax check create converge dependency destroy idempotence init list login status test verify"
GLOBAL_OPTIONS="-h -v"
SYNTAX_OPTIONS=""
CHECK_OPTIONS=""
CREATE_OPTIONS="--debug --platform --provider --tags"
CONVERGE_OPTIONS="--debug --platform --provider --tags"
DEPENDENCY_OPTIONS=""
DESTROY_OPTIONS="--debug --platform --provider --tags"
IDEMPOTENCE_OPTIONS="--debug --platform --provider --tags"
INIT_OPTIONS="--docker"
LIST_OPTIONS="--debug -m"
LOGIN_OPTIONS=""
STATUS_OPTIONS="--debug --hosts --platforms --porcelain --providers"
TEST_OPTIONS="--debug --platform --provider --tags --sudo"
VERIFY_OPTIONS="--debug --platform --provider --tags --sudo"
# Un-comment this for debug purposes:
# echo -e "\nprev = $prev, cur = $cur, firstword = $firstword.\n"
case "${firstword}" in
check)
complete_options="${CHECK_OPTIONS}"
;;
create)
case "${prev}" in
--platform)
complete_words=$(_platforms)
;;
--provider)
complete_words=$(_providers)
;;
*)
complete_options="${CREATE_OPTIONS}"
;;
esac
;;
converge)
case "${prev}" in
--platform)
complete_words=$(_platforms)
;;
--provider)
complete_words=$(_providers)
;;
*)
complete_options="${CONVERGE_OPTIONS}"
;;
esac
;;
dependency)
complete_options="${DEPENDENCY_OPTIONS}"
;;
destroy)
case "${prev}" in
--platform)
complete_words=$(_platforms)
;;
--provider)
complete_words=$(_providers)
;;
*)
complete_options="${DESTROY_OPTIONS}"
;;
esac
;;
idempotence)
case "${prev}" in
--platform)
complete_words=$(_platforms)
;;
--provider)
complete_words=$(_providers)
;;
*)
complete_options="${IDEMPOTENCE_OPTIONS}"
;;
esac
;;
init)
complete_options="${INIT_OPTIONS}"
;;
list)
complete_options="${LIST_OPTIONS}"
;;
login)
complete_options="${LOGIN_OPTIONS}"
complete_words=$(_hosts)
;;
status)
complete_options="${STATUS_OPTIONS}"
;;
syntax)
complete_options="${SYNTAX_OPTIONS}"
;;
test)
case "${prev}" in
--platform)
complete_words=$(_platforms)
;;
--provider)
complete_words=$(_providers)
;;
*)
complete_options="${TEST_OPTIONS}"
;;
esac
;;
verify)
case "${prev}" in
--platform)
complete_words=$(_platforms)
;;
--provider)
complete_words=$(_providers)
;;
*)
complete_options="${VERIFY_OPTIONS}"
;;
esac
;;
*)
complete_words="${GLOBAL_COMMANDS}"
complete_options="${GLOBAL_OPTIONS}"
;;
esac
# Either display words or options, depending on the user input
if [[ ${cur} == -* ]]; then
COMPREPLY=( $( compgen -W "${complete_options}" -- ${cur} ))
else
COMPREPLY=( $( compgen -W "${complete_words}" -- ${cur} ))
fi
return 0
}
# Determines the first non-option word of the command line. This is usually the command.
_get_firstword() {
local firstword i
firstword=
for ((i = 1; i < ${#COMP_WORDS[@]}; ++i)); do
if [[ ${COMP_WORDS[i]} != -* ]]; then
firstword=${COMP_WORDS[i]}
break
fi
done
echo $firstword
}
complete -F _molecule molecule
complete -C packer packer
complete -C terraform terraform
complete -C vault vault
#!/bin/sh
set -eux
notify () { printf '\n\e[1;94m=== %s ====\e[0m\n\n' "$1" >&2; }
cd "$(git rev-parse --show-toplevel)"
echo Downloading binary and vendored files, creating generated files >&2
git clean -fX .bash_completion.d/
make generated vendored
echo Installing Git hooks >&2
notify 'Generating some configuration and private files.'
make
notify 'Installing Git hooks'
Documents/bin/install-git-hooks
echo Loading dconf config >&2
notify 'Loading dconf config'
Documents/bin/dconf-load
echo Configuring Git repo >&2
notify 'Configuring Git repo'
git config --local status.showUntrackedFiles no
if command -v vagrant > /dev/null
then
echo Installing Vagrant plugins >&2
notify 'Installing Vagrant plugins'
for plugin in landrush vagrant-gatling-rsync vagrant-disksize
do
vagrant plugin list | grep -qw "$plugin" || vagrant plugin install "$plugin" || true
......@@ -20,7 +22,7 @@ then
fi
if command -v helm > /dev/null
then
echo Installing Helm plugins >&2
notify 'Installing Helm plugins'
eval "$(grep 'export HELM_HOME' .bashrc)"
helm plugin list | { ! grep --silent '^diff'; } || helm plugin remove diff
helm plugin install https://github.com/databus23/helm-diff --version master
......
#!/bin/sh
set -eu
if [ -f /usr/local/share/bfg/bfg.jar ]
then
exec java -jar /usr/local/share/bfg/bfg.jar "$@"
elif [ -f "${XDG_DATA_HOME:-$HOME/.local/share}/bfg/bfg.jar" ]
then
exec java "${XDG_DATA_HOME:-$HOME/.local/share}/bfg/bfg.jar" "$@"
else
echo "Can't find the BFG jar, exiting." >&2
exit 1
fi
This diff is collapsed.
.PHONY: all
all:
DESTDIR ?= .local
ansible-local = ansible localhost -c local -i localhost, -e "ansible_python_interpreter=$$(which python3)"
ssh_configs != find ".ssh/config.d/" -type f \! -name '.*' | sort
include binaries.mk
include generated.mk
include vendored.mk
all: .config/pythonrc.py
.config/pythonrc.py:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/lonetwin/pythonrc/0.8.4/pythonrc.py
all: .bashrc.private
.bashrc.private: Documents/Database.kdbx
echo "export GITLAB_TOKEN='$$(ph show --field Password 'shore.co.il/GitLab token')'" > '$@'
echo 'export GITLAB_PRIVATE_TOKEN="$$GITLAB_TOKEN"' >> '$@'
echo "export GITLAB_REGISTRATION_TOKEN='$$(ph show --field Password 'shore.co.il/GitLab runner registration token')'" >> '$@'
echo "export GITHUB_TOKEN='$$(ph show --field 'CLI token' 'Web Sites/GitHub')'" >> '$@'
all: .ssh/github_ed25519
.ssh/github_ed25519: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/gitlab_fdo
.ssh/gitlab_fdo: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/gitlab_toptal
.ssh/gitlab_toptal: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/shore_rsa
.ssh/shore_rsa: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/gitlab_ed25519
.ssh/gitlab_ed25519: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/shore_ecdsa
.ssh/shore_ecdsa: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/shore_ed25519
.ssh/shore_ed25519: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
all: .ssh/config
.ssh/config: $(ssh_configs)
mkdir -p $$(dirname $@)
cat $(ssh_configs) > $@
all: .ssh/localhost
.ssh/localhost:
-rm $@ $@.pub
ssh-keygen -t ecdsa -N '' -C localhost -f $@
all: .ssh/localhost.pub
.ssh/localhost.pub: .ssh/localhost
ssh-keygen -y -f $< > $@
all: .ssh/authorized_keys
.ssh/authorized_keys: .ssh/localhost.pub
-$(ansible-local) -m authorized_key -a "user=$$(whoami) key='$$(cat .ssh/localhost.pub)' key_options='from=\"127.0.0.1/8\"'"
all: .config/python-gitlab.cfg
.config/python-gitlab.cfg:
echo '[global]' > '$@'
echo 'default = shore.co.il' >> '$@'
echo 'ssl_verify = true' >> '$@'
echo '' >> '$@'
echo '[shore.co.il]' >> '$@'
echo 'url = https://git.shore.co.il/' >> '$@'
echo "private_token = $$(ph show --field Password 'shore.co.il/GitLab token')" >> '$@'
echo 'api_version = 4' >> '$@'
all: .config/gem/gemrc
.config/gem/gemrc:
echo '# vim: ft=yaml' > '$@'
echo '---' >> '$@'
echo ':backtrace: false' >> '$@'
echo ':bulk_threshold: 1000' >> '$@'
echo ':sources:' >> '$@'
echo '- https://rubygems.org/' >> '$@'
echo "- https://$$(ph show --field 'UserName' 'Web Sites/GitHub'):$$(ph show --field 'Smile gem token' 'Web Sites/GitHub')@rubygems.pkg.github.com/smile-io/" >> '$@'
echo ':update_sources: true' >> '$@'
echo ':verbose: true' >> '$@'
echo ':concurrent_downloads: 8' >> '$@'
......@@ -2,12 +2,12 @@
[![pipeline status](https://git.shore.co.il/nimrod/rcfiles/badges/master/pipeline.svg)](https://git.shore.co.il/nimrod/rcfiles/-/commits/master)
A repository with my rc files. The purpose is for me to have revision
control of my home directory, maybe send somebody a link to an example
file and to be browsable for others (if anyone wants to copy some
snippet). Because these are my actual files that I use right now, the
repository is cloned directly to my home directory and is not meant for
mass consumption as it is.
A repository with my rc files and various scripts I have. The purpose is for me
to have revision control of my home directory, maybe send somebody a link to an
example file and to be browsable for others (if anyone wants to copy some
snippet). Because these are my actual files that I use right now, the repository
is cloned directly to my home directory and is not meant for mass consumption as
it is.
## Installation
......@@ -27,15 +27,12 @@ Documents/bin/install-git-hooks
## Dependencies
Dependencies that can be installed locally inside the home directory, are
installed with the Git hook using the supplied `Makefile`. Dependencies that
can't be installed locally, can be install with the `workstation.yml` Ansible
playbook from the
[ansible-desktop-playbook](https://git.shore.co.il/ansible/ansible-desktop-playbooks)
repository, please consult the README from that repository. Care has been given
to minimizing the dependencies and making the scripts as cross-platform as
reasonably possible, so most script would run without any installing any tools
not found on a Unix-like OS by default.
Care has been taken to make the scripts as portable as possible. Meaning that
they should work out of the box on Debian, Alpine and OpenBSD. This is a
best-effort on my part so mistake are made, feel free to send patches. The
counterpart for this repository is the
[workbench](https://git.shore.co.il/shore/workbench) project where I maintain a
container image with all of the tools I use, but that is for Linux only.
## License
......
DESTDIR ?= .local
tempdir != mktemp -d
os != uname -s | awk '{print tolower($$0)}'
arch != uname -m
goos != go env GOOS
goarch != go env GOARCH
curl = curl --location --silent --fail
download = $(curl) --output $@
.PHONY: binaries
all: binaries
binaries: $(DESTDIR)/bin/hugo
$(DESTDIR)/bin/hugo:
mkdir -p $$(dirname $@)
$(curl) https://github.com/gohugoio/hugo/releases/download/v0.83.1/hugo_0.83.1_Linux-64bit.tar.gz | tar -xzC "$$(dirname '$@')" "$$(basename '$@')"
binaries: $(DESTDIR)/share/bfg/bfg.jar
$(DESTDIR)/share/bfg/bfg.jar:
mkdir -p $$(dirname $@)
$(download) 'https://search.maven.org/remote_content?g=com.madgag&a=bfg&v=LATEST'
binaries: $(DESTDIR)/bin/rke
$(DESTDIR)/bin/rke:
mkdir -p $$(dirname $@)
-$(download) https://github.com/rancher/rke/releases/download/v1.2.8/rke_$(os)-$(goarch)
-chmod +x $@
binaries: $(DESTDIR)/bin/docker-machine
$(DESTDIR)/bin/docker-machine:
mkdir -p $$(dirname $@)
-$(download) "https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-$(os)-$(arch)"
-chmod +x $@
binaries: $(DESTDIR)/bin/packer
$(DESTDIR)/bin/packer:
mkdir -p $$(dirname $@)
$(curl) https://releases.hashicorp.com/packer/1.7.2/packer_1.7.2_$(os)_$(goarch).zip --output $(tempdir)/packer.zip
unzip -d $(tempdir) $(tempdir)/packer.zip
install -m 755 $(tempdir)/packer $@
rm $(tempdir)/packer*
binaries: $(DESTDIR)/bin/terraform
$(DESTDIR)/bin/terraform:
mkdir -p $$(dirname $@)
$(curl) https://releases.hashicorp.com/terraform/0.15.3/terraform_0.15.3_$(os)_$(goarch).zip --output $(tempdir)/terraform.zip
unzip -d $(tempdir) $(tempdir)/terraform.zip
install -m 755 $(tempdir)/terraform $@
rm $(tempdir)/terraform*
binaries: $(DESTDIR)/bin/terragrunt
$(DESTDIR)/bin/terragrunt:
mkdir -p $$(dirname $@)
-$(download) https://github.com/gruntwork-io/terragrunt/releases/download/v0.22.5/terragrunt_$(goos)_$(goarch)
-chmod +x '$@'
binaries: $(DESTDIR)/bin/vault
$(DESTDIR)/bin/vault:
mkdir -p $$(dirname $@)
$(curl) https://releases.hashicorp.com/vault/1.7.1/vault_1.7.1_$(os)_$(goarch).zip --output $(tempdir)/vault.zip
unzip -d $(tempdir) $(tempdir)/vault.zip
install -m 755 $(tempdir)/vault $@
rm $(tempdir)/vault*
binaries: $(DESTDIR)/bin/kubectl
$(DESTDIR)/bin/kubectl:
mkdir -p $$(dirname $@)
-$(download) "https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/$(os)/$(goarch)/kubectl"
-chmod +x $@
binaries: $(DESTDIR)/bin/kops
$(DESTDIR)/bin/kops:
mkdir -p $$(dirname $@)
-$(download) "https://github.com/kubernetes/kops/releases/download/v1.20.0/kops-$(os)-$(goarch)"
-chmod +x $@
binaries: $(DESTDIR)/bin/kompose
$(DESTDIR)/bin/kompose:
mkdir -p $$(dirname $@)
-$(download) https://github.com/kubernetes/kompose/releases/download/v1.22.0/kompose-$(os)-$(goarch)
-chmod +x $@
binaries: $(DESTDIR)/bin/minikube
$(DESTDIR)/bin/minikube:
mkdir -p $$(dirname $@)
-$(download) https://storage.googleapis.com/minikube/releases/latest/minikube-$(os)-$(goarch)
-chmod +x $@
binaries: $(DESTDIR)/bin/kustomize
$(DESTDIR)/bin/kustomize:
mkdir -p $$(dirname $@)
-$(curl) https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv4.1.2/kustomize_v4.1.2_$(os)_$(goarch).tar.gz | tar -zxC $(DESTDIR)/bin/
binaries: $(DESTDIR)/bin/docker-machine-driver-kvm2
$(DESTDIR)/bin/docker-machine-driver-kvm2:
mkdir -p $$(dirname $@)
-$(download) https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2
-chmod +x $@
binaries: $(DESTDIR)/bin/helm
$(DESTDIR)/bin/helm:
mkdir -p $$(dirname $@)
mkdir -p $(tempdir)/helm
-$(curl) https://get.helm.sh/helm-v3.5.4-$(os)-$(goarch).tar.gz | tar -zx -C $(tempdir)/helm/
-install -m 755 $(tempdir)/helm/$(os)-$(goarch)/helm $@
rm -r $(tempdir)/helm
binaries: $(DESTDIR)/bin/pack
$(DESTDIR)/bin/pack:
mkdir -p $$(dirname $@)
-$(curl) https://github.com/buildpack/pack/releases/download/v0.18.1/pack-v0.18.1-$(os).tgz | tar -xzC $(DESTDIR)/bin/
binaries: $(DESTDIR)/bin/skaffold
$(DESTDIR)/bin/skaffold:
mkdir -p $$(dirname $@)
-$(download) https://storage.googleapis.com/skaffold/releases/v1.24.0/skaffold-$(os)-$(goarch)
-chmod +x $@
binaries: $(DESTDIR)/bin/minishift
$(DESTDIR)/bin/minishift:
mkdir -p $$(dirname $@)
-$(curl) https://github.com/minishift/minishift/releases/download/v1.34.3/minishift-1.34.3-$(goos)-$(goarch).tgz | tar -xzC $(tempdir)
-install -m 755 $(tempdir)/minishift-*/minishift $@
-rm -r $(tempdir)/minishift-*
binaries: $(DESTDIR)/bin/oc
$(DESTDIR)/bin/oc:
mkdir -p $$(dirname $@)
-$(curl) https://github.com/openshift/okd/releases/download/4.7.0-0.okd-2021-04-24-103438/openshift-client-linux-4.7.0-0.okd-2021-04-24-103438.tar.gz | tar -xzC $(DESTDIR)/bin oc
binaries: $(DESTDIR)/bin/docker-machine-driver-kvm
$(DESTDIR)/bin/docker-machine-driver-kvm:
mkdir -p $$(dirname $@)
-$(download) https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-ubuntu16.04
-chmod +x $@
binaries: $(DESTDIR)/bin/gomplate
$(DESTDIR)/bin/gomplate:
mkdir -p $$(dirname $@)
-$(download) https://github.com/hairyhenderson/gomplate/releases/download/v3.9.0/gomplate_$(goos)-$(goarch)
-chmod +x $@
binaries: $(DESTDIR)/bin/envconsul
$(DESTDIR)/bin/envconsul:
mkdir -p $$(dirname $@)
-$(curl) https://releases.hashicorp.com/envconsul/0.11.0/envconsul_0.11.0_$(goos)_$(goarch).tgz | tar -xzC $$(dirname $@)
DESTDIR ?= .local
ansible-local = ansible localhost -c local -i localhost, -e "ansible_python_interpreter=$$(which python3)"
ssh_configs != find ".ssh/config.d/" -type f \! -name '.*' | sort
.PHONY: generated
all: generated
generated: .bash_completion.d/helm
.bash_completion.d/helm: $(DESTDIR)/bin/helm
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/kompose
.bash_completion.d/kompose: $(DESTDIR)/bin/kompose
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/kops
.bash_completion.d/kops: $(DESTDIR)/bin/kops
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/kubectl
.bash_completion.d/kubectl: $(DESTDIR)/bin/kubectl
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/minikube
.bash_completion.d/minikube: $(DESTDIR)/bin/minikube
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/skaffold
.bash_completion.d/skaffold: $(DESTDIR)/bin/skaffold
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/pipenv
.bash_completion.d/pipenv:
mkdir -p $$(dirname $@)
-bash -c 'pipenv --completion > $@'
generated: .bash_completion.d/pandoc
.bash_completion.d/pandoc:
mkdir -p $$(dirname $@)
-pandoc --bash-completion > $@
generated: .bash_completion.d/rabbitmqadmin
.bash_completion.d/rabbitmqadmin: Documents/bin/rabbitmqadmin
mkdir -p $$(dirname $@)
-Documents/bin/rabbitmqadmin --bash-completion > $@
generated: .bash_completion.d/minishift
.bash_completion.d/minishift: $(DESTDIR)/bin/minishift
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/oc
.bash_completion.d/oc: $(DESTDIR)/bin/oc
mkdir -p $$(dirname $@)
-$$(basename $@) completion bash > $@
generated: .bash_completion.d/poetry
.bash_completion.d/poetry:
-poetry completions bash > $@
generated: .bashrc.private
.bashrc.private: Documents/Database.kdbx
echo "export GITLAB_TOKEN='$$(ph show --field Password 'shore.co.il/GitLab token')'" > '$@'
echo 'export GITLAB_PRIVATE_TOKEN="$$GITLAB_TOKEN"' >> '$@'
echo "export GITLAB_REGISTRATION_TOKEN='$$(ph show --field Password 'shore.co.il/GitLab runner registration token')'" >> '$@'
echo "export GITHUB_TOKEN='$$(ph show --field 'CLI token' 'Web Sites/GitHub')'" >> '$@'
generated: .ssh/github_ed25519
.ssh/github_ed25519: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/gitlab_fdo
.ssh/gitlab_fdo: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/gitlab_toptal
.ssh/gitlab_toptal: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/shore_rsa
.ssh/shore_rsa: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/gitlab_ed25519
.ssh/gitlab_ed25519: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/shore_ecdsa
.ssh/shore_ecdsa: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/shore_ed25519
.ssh/shore_ed25519: Documents/Database.kdbx
ph show --field Notes "SSH/$$(basename '$@')" > '$@'
chmod 600 '$@'
generated: .ssh/config
.ssh/config: $(ssh_configs)
mkdir -p $$(dirname $@)
cat $(ssh_configs) > $@
generated: .ssh/localhost
.ssh/localhost:
-rm $@ $@.pub
ssh-keygen -t ecdsa -N '' -C localhost -f $@
generated: .ssh/localhost.pub
.ssh/localhost.pub: .ssh/localhost
ssh-keygen -y -f $< > $@
generated: .ssh/authorized_keys
.ssh/authorized_keys: .ssh/localhost.pub
-$(ansible-local) -m authorized_key -a "user=$$(whoami) key='$$(cat .ssh/localhost.pub)' key_options='from=\"127.0.0.1/8\"'"
generated: .bash_completion.d/python-gitlab
.bash_completion.d/python-gitlab:
-register-python-argcomplete gitlab > $@
generated: .config/python-gitlab.cfg
.config/python-gitlab.cfg:
echo '[global]' > '$@'
echo 'default = shore.co.il' >> '$@'
echo 'ssl_verify = true' >> '$@'
echo '' >> '$@'
echo '[shore.co.il]' >> '$@'
echo 'url = https://git.shore.co.il/' >> '$@'
echo "private_token = $$(ph show --field Password 'shore.co.il/GitLab token')" >> '$@'
echo 'api_version = 4' >> '$@'
generated: .config/gem/gemrc
.config/gem/gemrc:
echo '# vim: ft=yaml' > '$@'
echo '---' >> '$@'
echo ':backtrace: false' >> '$@'
echo ':bulk_threshold: 1000' >> '$@'
echo ':sources:' >> '$@'
echo '- https://rubygems.org/' >> '$@'
echo "- https://$$(ph show --field 'UserName' 'Web Sites/GitHub'):$$(ph show --field 'Smile gem token' 'Web Sites/GitHub')@rubygems.pkg.github.com/smile-io/" >> '$@'
echo ':update_sources: true' >> '$@'
echo ':verbose: true' >> '$@'
echo ':concurrent_downloads: 8' >> '$@'
curl = curl --location --silent --fail
download = $(curl) --output $@
.PHONY: vendored
all: vendored
vendored: .bash_completion.d/docker-compose
.bash_completion.d/docker-compose:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose
vendored: .bash_completion.d/docker-machine.bash
.bash_completion.d/docker-machine.bash:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/docker/machine/v0.16.2/contrib/completion/bash/docker-machine.bash
vendored: .bash_completion.d/fabric-completion.bash
.bash_completion.d/fabric-completion.bash:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/kbakulin/fabric-completion/master/fabric-completion.bash
vendored: .config/pythonrc.py
.config/pythonrc.py:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/lonetwin/pythonrc/0.8.4/pythonrc.py
vendored: .bash_completion.d/molecule
.bash_completion.d/molecule:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/ansible-community/molecule/1.25.1/asset/bash_completion/molecule.bash-completion.sh
vendored: Documents/bin/rabbitmqadmin
Documents/bin/rabbitmqadmin:
mkdir -p $$(dirname $@)
$(download) https://raw.githubusercontent.com/rabbitmq/rabbitmq-server/v3.8.16/deps/rabbitmq_management/bin/rabbitmqadmin
chmod +x $@
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment