2016-12-22 05:35:03 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# PoC to handle Evolix ansible-roles
|
2016-12-22 13:48:43 +01:00
|
|
|
# WARN: we use unstable for now
|
2016-12-22 05:35:03 +01:00
|
|
|
|
2016-12-22 11:08:25 +01:00
|
|
|
readonly PROGNAME=$(basename $0)
|
|
|
|
readonly PROGDIR=$(readlink -m $(dirname $0))
|
|
|
|
readonly ARGS="$@"
|
|
|
|
|
|
|
|
main(){
|
|
|
|
local subcommand=$1
|
|
|
|
|
|
|
|
case $subcommand in
|
|
|
|
"help")
|
|
|
|
sub_help
|
|
|
|
;;
|
|
|
|
|
|
|
|
"list")
|
|
|
|
sub_list
|
|
|
|
;;
|
|
|
|
|
|
|
|
"install")
|
|
|
|
local role=$2
|
2016-12-22 11:43:48 +01:00
|
|
|
local install_dir=${3:-roles}
|
2016-12-22 11:08:25 +01:00
|
|
|
|
2016-12-22 11:43:48 +01:00
|
|
|
sub_install $role $install_dir
|
2016-12-22 11:08:25 +01:00
|
|
|
;;
|
|
|
|
|
|
|
|
"update")
|
|
|
|
local role=$2
|
2016-12-22 11:43:48 +01:00
|
|
|
local install_dir=${3:-roles}
|
2016-12-22 11:08:25 +01:00
|
|
|
|
2016-12-22 11:43:48 +01:00
|
|
|
sub_update $role $install_dir
|
2016-12-22 11:08:25 +01:00
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
2016-12-22 11:10:07 +01:00
|
|
|
echo "error: unknwon command '${subcommand}'"
|
2016-12-22 11:08:25 +01:00
|
|
|
sub_help
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
2016-12-22 05:35:03 +01:00
|
|
|
|
|
|
|
sub_help(){
|
|
|
|
echo ""
|
|
|
|
echo "Usage: ansible-evogalaxy <subcommand> [options]"
|
|
|
|
echo ""
|
|
|
|
echo "Subcommands:"
|
|
|
|
echo "list"
|
2016-12-22 15:35:58 +01:00
|
|
|
echo "install <role> [install_dir]"
|
|
|
|
echo "update <role> [install_dir]"
|
2016-12-22 05:35:03 +01:00
|
|
|
echo ""
|
|
|
|
}
|
|
|
|
|
2016-12-22 11:08:25 +01:00
|
|
|
sub_list(){
|
|
|
|
local clone_dir=$(clone_git_repository)
|
|
|
|
|
|
|
|
list_roles $clone_dir
|
|
|
|
}
|
|
|
|
|
|
|
|
sub_install(){
|
|
|
|
local role=$1
|
2016-12-22 11:43:48 +01:00
|
|
|
local install_dir=$2
|
2016-12-22 11:08:25 +01:00
|
|
|
|
2016-12-22 11:43:48 +01:00
|
|
|
test -d $install_dir/$role \
|
2016-12-22 11:08:25 +01:00
|
|
|
&& exit_role_already_installed $role
|
|
|
|
|
|
|
|
local clone_dir=$(clone_git_repository)
|
|
|
|
|
|
|
|
test -d $clone_dir/$role \
|
|
|
|
|| exit_role_unknown $role
|
|
|
|
|
2016-12-22 11:43:48 +01:00
|
|
|
mkdir -p $install_dir \
|
|
|
|
&& mv $clone_dir/$role $install_dir/$role
|
2016-12-22 11:08:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
sub_update(){
|
|
|
|
local role=$1
|
2016-12-22 11:43:48 +01:00
|
|
|
local install_dir=$2
|
2016-12-22 05:35:03 +01:00
|
|
|
|
2016-12-22 11:43:48 +01:00
|
|
|
test -d $install_dir/$role \
|
2016-12-22 11:08:25 +01:00
|
|
|
|| exit_role_not_installed $role
|
|
|
|
|
|
|
|
local clone_dir=$(clone_git_repository)
|
|
|
|
|
2016-12-22 13:48:43 +01:00
|
|
|
mv $install_dir/$role $clone_dir/$role-old \
|
2016-12-22 11:43:48 +01:00
|
|
|
&& mv $clone_dir/$role $install_dir/$role
|
2016-12-22 11:08:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
clone_git_repository() {
|
|
|
|
local clone_dir=$(mktemp -d)
|
|
|
|
local git_repo=https://forge.evolix.org/ansible-roles.git
|
|
|
|
local git_branch=unstable
|
|
|
|
|
|
|
|
git clone -q -b $git_branch $git_repo $clone_dir
|
|
|
|
|
|
|
|
echo $clone_dir
|
|
|
|
}
|
|
|
|
|
|
|
|
list_roles(){
|
|
|
|
local roles_dir=$1
|
|
|
|
|
|
|
|
ls -1 $roles_dir \
|
|
|
|
| egrep -v '(.md|.yml|Vagrant)'
|
|
|
|
}
|
|
|
|
|
|
|
|
exit_role_already_installed(){
|
|
|
|
local role=$1
|
|
|
|
|
|
|
|
echo "error: role '${role}' already installed"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
exit_role_not_installed(){
|
|
|
|
local role=$1
|
|
|
|
|
|
|
|
echo "error: role '${role}' not installed"
|
|
|
|
exit 2
|
|
|
|
}
|
|
|
|
exit_role_unknown(){
|
|
|
|
local role=$1
|
|
|
|
|
|
|
|
echo "error: unknown role '${role}'"
|
|
|
|
exit 3
|
|
|
|
}
|
2016-12-22 05:35:03 +01:00
|
|
|
|
2016-12-22 11:08:25 +01:00
|
|
|
main $ARGS
|