#!/bin/sh # TODO: Rewrite this in a proper language # shellcheck disable=2034 set -a BASE="$XDG_DOCUMENTS_DIR/dev" # TOKEN has to be an API token (PAT) with # the following permissions (for the default configuration) # read:organization # read:repository # read:user TOKEN="$(secret-tool lookup gitea api_token)" # Store with `secret-tool store --label=clonedev gitea api_token` # URL hit by curl is constructed like this: API_URL/TARGET/ENDPOINT # TARGET is extracted from a space separated list stored in TARGETS API_URL="https://git.snaile.de/api/v1" TARGETS="orgs/snailed users/luca" ENDPOINT="repos" HEADERS=" -H 'accept: application/json' -H 'Authorization: token $TOKEN' " # The output of this request are filtered using this jq command: FILTER=".[].ssh_url" # After filtering, the output passed to a git clone command with these flags: CLONE_FLAGS="--recursive -j8" # If the repo is listed in one of these variables, it is moved to # the dir in the variable name. The dirname must match this regex: "^DEVDIRS_([A-Za-z_-]*)(?==)" # The following config would result in the testrepo repo being placed like this: # testdir/testrepo # test_block would be blocked from getting cloned # DEVDIRS_testdir=" # testrepo # # BLOCKDIRS="test_block" DEVDIRS_desktop=" bootstrapper dmenu-custom dwm-custom dwmblocks-custom st-custom tokyonight-icons tokyonight-theme " DEVDIRS_server=" ansible-example ansible-homelab dotfiles-server void-packages void-packages-custom qbittorrent-natpmp xbps-builder matrix-docker-ansible-deploy server-resources " DEVDIRS_misc=" tidal-scraper " DEVDIRS_nvim=" taolf " BLOCK_UNSORTED=false BLOCK_REPOS="dotfiles pinentry-dmenu-custom" EXTRA_REPOS=" https://github.com/void-linux/void-packages https://github.com/spantaleev/matrix-docker-ansible-deploy "