summaryrefslogtreecommitdiff
path: root/mut/bin/checkout
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-10-06 23:10:55 +0200
committerMike Vink <mike1994vink@gmail.com>2023-10-06 23:10:55 +0200
commitcfaef26e8718916adcc68fbfb63b15f2389b2cd2 (patch)
tree3989af4514d31d0a5cb89e8b96d51210ad7bf152 /mut/bin/checkout
parent654ec06ab6a885ea851c4cbf68d06a00b41b0e14 (diff)
move all the files
Diffstat (limited to 'mut/bin/checkout')
-rw-r--r--mut/bin/checkout69
1 files changed, 69 insertions, 0 deletions
diff --git a/mut/bin/checkout b/mut/bin/checkout
new file mode 100644
index 0000000..95f28c8
--- /dev/null
+++ b/mut/bin/checkout
@@ -0,0 +1,69 @@
+#!@bash@/bin/bash
+error () {
+ echo "$1"
+ exit 1
+}
+
+. <(pass show work/env)
+DEST_DIR=""
+case "${@}" in
+ az|"az "*)
+ shift
+ LIST_PROJECTS="/_apis/projects?api-version=7.1-preview.4"
+ AUTH_HEADER="Authorization: Basic $(echo -n ":$GIT_PASS" | base64)"
+ LIST_REPOSITORIES="/_apis/git/repositories?api-version=7.1-preview.1"
+ GIT_DIR="$HOME/projects/"
+ if [ ! -d $GIT_DIR ]; then
+ mkdir -p $GIT_DIR
+ fi
+ MAX_REPOS=20
+
+ echo "curl -s -H \"$AUTH_HEADER\" $WORK_AZDO_GIT_ORG_URL$LIST_PROJECTS"
+ PROJECT=$(curl -s -H "$AUTH_HEADER" $WORK_AZDO_GIT_ORG_URL$LIST_PROJECTS \
+ | jq '
+ .value[].name
+ ' \
+ | xargs -I{} bash -c "
+ curl -s -H '$AUTH_HEADER' $WORK_AZDO_GIT_ORG_URL/{}$LIST_REPOSITORIES \
+ | jq '
+ .value[].name
+ ' \
+ | awk '{ gsub(/\"/, \"\", \$1); printf \"{}/_git/%s\\n\", \$1 }'
+ " \
+ | fzf)
+
+ DEST_DIR="$GIT_DIR/$(echo $PROJECT | cut -d '/' -f3)"
+ if [ ! -d $DEST_DIR ]
+ then
+ git clone --bare $WORK_AZDO_GIT_ORG_URL/$PROJECT $DEST_DIR
+ fi
+ ;;
+ gh|"gh "*)
+ shift
+ repo=$(gh repo list --json owner,name -q '.[] | "\(.owner.login)/\(.name)"' | fzf --print-query -1)
+ GIT_DIR="$HOME/projects"
+ if [ ! -d $GIT_DIR ]; then
+ mkdir -p $GIT_DIR
+ fi
+
+ if [[ "$(echo "$repo" | wc -l)" -ne 1 ]]; then
+ echo "Fetching my repo"
+ repo="$(echo "$repo" | tail -n1)"
+ fi
+
+ DEST_DIR="$GIT_DIR/$(echo $repo | cut -d '/' -f2)"
+ if [ ! -d $DEST_DIR ]
+ then
+ gh repo clone $repo $DEST_DIR -- --bare
+ fi
+ ;;
+ *)
+ error "Don't know how to fetch this"
+ ;;
+esac
+
+if ! [[ -z "$DEST_DIR" ]]; then
+ cd $DEST_DIR
+ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
+ $EDITOR "$DEST_DIR"
+fi