summaryrefslogtreecommitdiff
path: root/shell-scripts/azdo-switch-project
diff options
context:
space:
mode:
authorMike Vink <mike.vink@stater.nl>2023-04-03 12:51:01 +0200
committerMike Vink <mike.vink@stater.nl>2023-04-03 12:51:01 +0200
commiteb4f40576452137ac0a2c5d4ef079e7aca188b76 (patch)
tree2d06927346c1a01db11493987db0b5adb4f26bd6 /shell-scripts/azdo-switch-project
parent425b80de40ad0702888934fb21e4b99ff454558f (diff)
update scripts and shell
Diffstat (limited to 'shell-scripts/azdo-switch-project')
-rw-r--r--shell-scripts/azdo-switch-project47
1 files changed, 47 insertions, 0 deletions
diff --git a/shell-scripts/azdo-switch-project b/shell-scripts/azdo-switch-project
new file mode 100644
index 0000000..0dd23f2
--- /dev/null
+++ b/shell-scripts/azdo-switch-project
@@ -0,0 +1,47 @@
+#!@bash@/bin/bash
+eval "$(pass show work/shell-scripts/secrets)"
+
+LIST_PROJECTS="/_apis/projects?api-version=7.1-preview.4"
+AUTH_HEADER="Authorization: Basic $WORK_AZDO_GIT_AUTH"
+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
+
+COUNT=$(find "$GIT_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
+if [ "$COUNT" -gt "$MAX_REPOS" ]
+then
+ STALE=$(( COUNT - MAX_REPOS ))
+ OLDEST=$(find "$GIT_DIR" -mindepth 1 -maxdepth 1 -type d -printf '%T@ %p\n' 2>/dev/null \
+ | sort -n | head -n$STALE | cut -d' ' -f2)
+
+ for dir in $OLDEST
+ do
+ rm -i -r $dir
+ done
+fi
+
+
+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 $WORK_AZDO_GIT_ORG_URL/$PROJECT $DEST_DIR
+fi
+cd $DEST_DIR
+$EDITOR