#!/usr/bin/env bash set -e listFile=shell_test_list.json case $1 in "store") in=$(< /dev/stdin) server=$(echo "$in" | jq --raw-output ".ServerURL") serverHash=$(echo "$server" | sha1sum - | awk '{print $1}') username=$(echo "$in" | jq --raw-output ".Username") password=$(echo "$in" | jq --raw-output ".Secret") echo "{ \"Username\": \"${username}\", \"Secret\": \"${password}\" }" > $TEMP/$serverHash # add the server to the list file if [[ ! -f $TEMP/$listFile ]]; then echo "{ \"${server}\": \"${username}\" }" > $TEMP/$listFile else list=$(< $TEMP/$listFile) echo "$list" | jq ". + {\"${server}\": \"${username}\"}" > $TEMP/$listFile fi ;; "get") in=$(< /dev/stdin) serverHash=$(echo "$in" | sha1sum - | awk '{print $1}') if [[ ! -f $TEMP/$serverHash ]]; then echo "credentials not found in native keychain" exit 1 fi payload=$(< $TEMP/$serverHash) echo "$payload" ;; "erase") in=$(< /dev/stdin) serverHash=$(echo "$in" | sha1sum - | awk '{print $1}') rm -f $TEMP/$serverHash # Remove the server from the list list=$(< $TEMP/$listFile) echo "$list" | jq "del(.[\"${in}\"])" > $TEMP/$listFile ;; "list") if [[ ! -f $TEMP/$listFile ]]; then echo "{}" else payload=$(< $TEMP/$listFile) echo "$payload" fi ;; *) echo "unknown credential option" exit 1 ;; esac