summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrepo.sh151
1 files 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