From d6c91df0e4085d11b2f53abb6f52d167a0e2b916 Mon Sep 17 00:00:00 2001 From: Dylan Bolger Date: Thu, 10 Mar 2022 17:17:41 -0600 Subject: Add edit functionality Also add prompts for exisiting repos --- repo.sh | 151 +++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 103 insertions(+), 48 deletions(-) diff --git a/repo.sh b/repo.sh index 40b35dc..f10ef1d 100755 --- a/repo.sh +++ b/repo.sh @@ -3,63 +3,118 @@ reposDirectory=/home/git/repositories reposList=/home/git/repos.list echo "1) Create a new repo" -echo "2) Delete a repo" -read -p "Choose an option: " option +echo "2) Edit a repo" +echo "3) Delete a repo" +echo "4) Exit" +while [[ -z $option ]] || [[ $option -gt 4 ]] || [[ $option -lt 1 ]]; +do + read -p "Choose an option: " option +done if [[ $option == 1 ]]; then - read -p "What's the repo name? " repoName - read -p "What's the repo description? [default: ''] " repoDesc - # chronic hides output - if chronic git config user.name && chronic git config user.email; - then - username=$(git config user.name) - email="<$(git config user.email)>" - echo "Your git configuration has a username and email set:" - echo "Username: $username" - echo "Email: $email" - read -p "Set owner to your git config? [default: 'y'] (y/n) " usegc - if [[ $usegc == [yY] ]] || [[ -z $usegc ]]; - then - repoOwner="$username $email" - echo "Author set to \"$repoOwner\"" - fi - fi - if [[ $usegc == [nN] ]] || [[ -z $usegc ]]; - then - read -p "What's the owner name? [default: ''] " repoOwner - fi - echo "Performing magic wizardry..." + read -p "What's the repo name? " repoName + read -p "What's the repo description? [default: ''] " repoDesc + # chronic hides output + if chronic git config user.name && chronic git config user.email; + then + username=$(git config user.name) + email="<$(git config user.email)>" + echo "Your git configuration has a username and email set:" + echo "Username: $username" + echo "Email: $email" + read -p "Set owner to your git config? [default: 'y'] (y/n) " usegc + if [[ $usegc == [yY] ]] || [[ -z $usegc ]]; + then + repoOwner="$username $email" + echo "Author set to \"$repoOwner\"" + fi + fi + if [[ $usegc == [nN] ]] || [[ -z $usegc ]]; + then + read -p "What's the owner name? [default: ''] " repoOwner + fi + echo "Performing magic wizardry..." - echo "Adding repo to list..." - echo $repoName >> $reposList + echo "Adding repo to list..." + echo $repoName >> $reposList - echo "Creating directory for $repoName.." - mkdir $reposDirectory/$repoName + echo "Creating directory for $repoName.." + mkdir $reposDirectory/$repoName - echo "Initializing bare repository and setting permissions..." - git init --bare $reposDirectory/$repoName - chown git:git $reposDirectory/$repoName --recursive + echo "Initializing bare repository and setting permissions..." + git init --bare $reposDirectory/$repoName + chown git:git $reposDirectory/$repoName --recursive - echo "Setting repository owner..." - echo [gitweb] >> $reposDirectory/$repoName/config - echo "owner = $repoOwner" >> $reposDirectory/$repoName/config + echo "Setting repository owner..." + echo [gitweb] >> $reposDirectory/$repoName/config + echo "owner = $repoOwner" >> $reposDirectory/$repoName/config - echo "Setting repository description..." - echo -n "" > $reposDirectory/$repoName/description - if [[ -n "$repoDesc" ]]; - then - echo "$repoDesc" >> $reposDirectory/$repoName/description - fi - echo "$repoName magically appeared!" + echo "Setting repository description..." + echo -n "" > $reposDirectory/$repoName/description + if [[ -n "$repoDesc" ]]; + then + echo "$repoDesc" >> $reposDirectory/$repoName/description + fi + echo "$repoName magically appeared!" elif [[ $option == 2 ]]; then - read -p "What's the repo name? " repoName - echo "Performing magic wizardry..." - echo "Finding line in list..." - sed -i "/$repoName/d" $reposList - echo "Deleting $repoName directory..." - rm -rf $reposDirectory/$repoName - echo "$repoName has vanished!" + i=1 + while read line; do + echo "$i) $line" + i=$((i+1)) + done <$reposList + while [[ -z $repo ]] || [[ $repo -gt $((i-1)) ]] || [[ $repo -lt 1 ]]; + do + read -p "Choose a repo to edit: " repo + done + repo=$(sed "$repo!d" $reposList) + echo "1) Edit repo name" + echo "2) Edit repo description" + echo "3) Edit repo author" + while [[ -z $editOption ]] || [[ $editOption -gt 3 ]] || [[ $editOption -lt 1 ]]; + do + read -p "Choose an option: " editOption + done + if [[ $editOption == 1 ]]; + then + read -p "What is the repo's new name? " newName + sed -i "s/$repo/$newName/" $reposList + echo $reposDirectory/$repo $repoDirectory/$newName + mv $reposDirectory/$repo $reposDirectory/$newName + echo "$repo has transformed into $newName!" + elif [[ $editOption == 2 ]]; + then + read -p "What is the repo's new description? " newDesc + mv $reposDirectory/$repo/description $reposDirectory/$repo/description.bk + echo $newDesc >> $reposDirectory/$repo/description + rm $reposDirectory/$repo/description.bk + echo "$repo's description has altered!" + elif [[ $editOption == 3 ]]; + then + read -p "What is the repo's new author? " newAuthor + sed -i "s/\(owner = \)\(.*\)/\1$newAuthor/g" $reposDirectory/$repo/config + echo "$repo's author has been refashioned!" + fi +elif [[ $option == 3 ]]; +then + i=1 + while read line; do + echo "$i) $line" + i=$((i+1)) + done <$reposList + while [[ -z $repoDelete ]] || [[ $repoDelete -gt $((i-1)) ]] || [[ $repoDelete -lt 1 ]]; + do + read -p "Choose a repo to delete: " repoDelete + done + echo "Performing magic wizardry..." + repoName=$(sed "$repoDelete!d" $reposList) + echo "Removing $repoName from $reposList" + sed -i "/$repoName/d" $reposList + echo "Deleting $repoName directory..." + rm -rf $reposDirectory/$repoName + echo "$repoName has vanished!" +else + exit fi -- cgit v1.2.3