diff options
| author | Mike Vink <mike.vink@stater.nl> | 2023-04-03 12:51:01 +0200 |
|---|---|---|
| committer | Mike Vink <mike.vink@stater.nl> | 2023-04-03 12:51:01 +0200 |
| commit | eb4f40576452137ac0a2c5d4ef079e7aca188b76 (patch) | |
| tree | 2d06927346c1a01db11493987db0b5adb4f26bd6 /shell-scripts/azdo-switch-project | |
| parent | 425b80de40ad0702888934fb21e4b99ff454558f (diff) | |
update scripts and shell
Diffstat (limited to 'shell-scripts/azdo-switch-project')
| -rw-r--r-- | shell-scripts/azdo-switch-project | 47 |
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 |
