diff options
Diffstat (limited to 'msci')
| -rwxr-xr-x | msci | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -60,11 +60,17 @@ run_project() { ( set -euo pipefail ppath="$MSCI_HOME"/projects/"$1".json + git_params=() repo_name="$1" + repo_branch=$(jq -r '.branch // empty' "$ppath") + if [ -n "$repo_branch" ]; then + git_params+=(-b "$repo_branch") + fi repo_url=$(jq -r '.url' "$ppath") repo_path="$MSCI_HOME"/tmp/"$repo_name" + git_params+=("$repo_url" "$repo_path") echo "cloning repo: $repo_url" | tee -a "$2" - ! git clone "$repo_url" "$repo_path" &>/dev/null && + ! git clone "${git_params[@]}" &>/dev/null && echo "failed to clone repo" | tee -a "$2" && exit 1 ! pushd "$repo_path" &>/dev/null && echo "unable to cd into cloned repo" | tee -a "$2" && exit 1 @@ -115,16 +121,19 @@ create_project() { [[ -n ${purl//[[:space:]]/} ]] && break echo "URL can't be empty" done + read -rp ".makeshiftci repo branch (optional): " pbranch phidden=$(confirm_in "hidden?" && echo true || echo false) read -rp "cron (optional): " pcron jq -n \ --arg pname "$pname" \ --arg purl "$purl" \ + --arg pbranch "$pbranch" \ --argjson phidden "$phidden" \ --arg pcron "$pcron" \ '{ name: $pname, url: $purl, + branch: (if $pbranch == "" then null else $pbranch end), hidden: $phidden, cron: (if $pcron == "" then null else $pcron end) }' \ @@ -145,15 +154,19 @@ edit_project() { echo "editing $ppath" oldname=$(jq -r '.name' "$ppath") oldurl=$(jq -r '.url' "$ppath") + oldbranch=$(jq -r '.branch // empty' "$ppath") washidden=$(jq '.hidden' "$ppath") keephidden=$([ "$washidden" = 'true' ] && echo "keep" || echo "make") - oldcron=$(jq -r '.cron' "$ppath") + oldcron=$(jq -r '.cron // empty' "$ppath") echo "project name: $oldname" read -rp "new name (optional): " pname [ -z "${pname//[[:space:]]/}" ] && pname=$oldname echo ".makeshiftci repo URL: $oldurl" read -rp "new URL (optional): " purl [ -z "${purl//[[:space:]]/}" ] && purl=$oldurl + echo ".makeshiftci repo branch: $oldbranch" + read -rp "new branch (optional): " pbranch + [ -z "${pbranch//[[:space:]]/}" ] && pbranch=$oldbranch echo "hidden: $washidden" phidden=$(confirm_in "$keephidden hidden?" && echo true || echo false) echo "cron: $oldcron" @@ -162,13 +175,15 @@ edit_project() { jq -n \ --arg pname "$pname" \ --arg purl "$purl" \ + --arg pbranch "$pbranch" \ --argjson phidden "$phidden" \ --arg pcron "$pcron" \ '{ name: $pname, url: $purl, + branch: (if $pbranch == "" then null else $pbranch end), hidden: $phidden, - cron: (if $pcron == "null" then null else $pcron end) + cron: (if $pcron == "" then null else $pcron end) }' \ >"$ppath" [ ! "$pcron" = "$oldcron" ] && write_cron |
