From 55347fef150377a33352168c73a04d5b8c25f343 Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 25 Nov 2015 22:37:58 +0100 Subject: refactor --- cac | 159 ++++++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 90 insertions(+), 69 deletions(-) diff --git a/cac b/cac index 25029e1..47cde3d 100755 --- a/cac +++ b/cac @@ -1,4 +1,4 @@ -#! /bin/sh +#! /usr/bin/env bash # #? cac - CloudAtCost command line interface #? @@ -9,58 +9,6 @@ set -euf #PATH=$PWD/bin:$PATH #export PATH -urlencode() { -#! /bin/sh -sed ' - s/%/%25/g - s/ /%20/g - s/!/%21/g - s/"/%22/g - s/#/%23/g - s/\$/%24/g - s/\&/%26/g - s/'\''/%27/g - s/(/%28/g - s/)/%29/g - s/\*/%2a/g - s/+/%2b/g - s/,/%2c/g - s/-/%2d/g - s/\./%2e/g - s/\//%2f/g - s/:/%3a/g - s/;/%3b/g - s//%3e/g - s/?/%3f/g - s/@/%40/g - s/\[/%5b/g - s/\\/%5c/g - s/\]/%5d/g - s/\^/%5e/g - s/_/%5f/g - s/`/%60/g - s/{/%7b/g - s/|/%7c/g - s/}/%7d/g - s/~/%7e/g -' -} -netmask_to_prefix() {( -#! /bin/sh -set -euf - -netmask=$1 - -binaryNetmask=$(echo $1 | sed 's/^/obase=2;/;s/\./;/g' | bc | tr -d \\n) -binaryPrefix=$(echo $binaryNetmask | sed -n 's/^\(1*\)0*$/\1/p') -if ! echo $binaryPrefix | grep -q .; then - echo $0: bad netmask: $netmask >&2 - exit 4 -fi -printf %s $binaryPrefix | tr -d 0 | wc -c -)} -# - cac_resources_cache=${cac_resources_cache-$HOME/tmp/cac_resources_cache.json} cac_servers_cache=${cac_servers_cache-$HOME/tmp/cac_servers_cache.json} cac_tasks_cache=${cac_tasks_cache-$HOME/tmp/cac_tasks_cache.json} @@ -68,8 +16,14 @@ cac_templates_cache=${cac_templates_cache-$HOME/tmp/cac_templates_cache.json} cac_secrets=${cac_secrets-$HOME/.secrets/cac} - -. "$cac_secrets" >/dev/null 2>&1 || : +_load_secrets() { + if test -e "$cac_secrets" ;then + echo "unable to load secrets from '$cac_secrets'" >&2 + __cac_cli_help + else + . "$cac_secrets" + fi +} cac() { @@ -368,7 +322,18 @@ __cac_cli__delete() {( _cac_handle_reply 'cac delete' "$reply" )} - +#? +#? Uses the following `environment variables`: +#? cac_resources_cache=$HOME/tmp/cac_resources_cache.json +#? cac_servers_cache=$HOME/tmp/cac_servers_cache.json +#? cac_tasks_cache=$HOME/tmp/cac_tasks_cache.json +#? cac_templates_cache=$HOME/tmp/cac_templates_cache.json +#? cac_secrets=$HOME/.secrets/cac +#? You can override these by setting them beforehand. +#? +#? `cac_secrets` will be sourced and may provide the following two entries: +#? cac_login= +#? cac_key= #? #? SERVERSPEC is a query like "mode:Safe", "sdate:08/04/2015", etc. #? See `cac servers` to get an inspiration. @@ -425,16 +390,6 @@ _cac_fetch_resources() {( )} -# rsyncfiles : lines filename |> local-dir x rsync-target -> ? |> ? -rsyncfiles() {( - set -x - rsync \ - --rsync-path="mkdir -p \"$2\" && rsync" \ - -vzrlptD \ - --files-from=- \ - "$1"/ \ - "$2" -)} @@ -483,10 +438,76 @@ _cac_exec() { fi } +_main() { + _load_secrets + case ${run-true} in + true) cac "$@";; + esac +} +# +# imported: +urlencode() { +sed ' + s/%/%25/g + s/ /%20/g + s/!/%21/g + s/"/%22/g + s/#/%23/g + s/\$/%24/g + s/\&/%26/g + s/'\''/%27/g + s/(/%28/g + s/)/%29/g + s/\*/%2a/g + s/+/%2b/g + s/,/%2c/g + s/-/%2d/g + s/\./%2e/g + s/\//%2f/g + s/:/%3a/g + s/;/%3b/g + s//%3e/g + s/?/%3f/g + s/@/%40/g + s/\[/%5b/g + s/\\/%5c/g + s/\]/%5d/g + s/\^/%5e/g + s/_/%5f/g + s/`/%60/g + s/{/%7b/g + s/|/%7c/g + s/}/%7d/g + s/~/%7e/g +' +} + +netmask_to_prefix() {( + set -euf + + netmask=$1 + binaryNetmask=$(echo $1 | sed 's/^/obase=2;/;s/\./;/g' | bc | tr -d \\n) + binaryPrefix=$(echo $binaryNetmask | sed -n 's/^\(1*\)0*$/\1/p') + if ! echo $binaryPrefix | grep -q .; then + echo $0: bad netmask: $netmask >&2 + exit 4 + fi + printf %s $binaryPrefix | tr -d 0 | wc -c +)} + +# rsyncfiles : lines filename |> local-dir x rsync-target -> ? |> ? +rsyncfiles() {( + set -x + rsync \ + --rsync-path="mkdir -p \"$2\" && rsync" \ + -vzrlptD \ + --files-from=- \ + "$1"/ \ + "$2" +)} +# -case ${run-true} in - true) cac "$@";; -esac +_main "$@" -- cgit v1.2.3