Better gclone
This commit is contained in:
		
							parent
							
								
									0975168f35
								
							
						
					
					
						commit
						2429265ab1
					
				| @ -90,74 +90,7 @@ makelatex() { | ||||
| } | ||||
| 
 | ||||
| source $HOME/.config/dotfiles/zsh/update.zsh | ||||
| 
 | ||||
| # cdg : cd to a git repo | ||||
| if [ -d "$GCLONE_PATH" ]; then | ||||
| 
 | ||||
|     gclone() { | ||||
|         # Check if cloning via HTTP(S) or SSH | ||||
|         if [[ $1 == http* ]]; then | ||||
|             server=`echo $1 | rev | cut -d '/' -f 3- | rev | cut -d '/' -f 3` | ||||
|             name=`echo $1 | rev | cut -d '/' -f -2 | rev` | ||||
|         else | ||||
|             server=`echo $1 | cut -d ':' -f 1 | cut -d '@' -f 2-` | ||||
|             name=`echo $1 | cut -d ':' -f 2-` | ||||
|         fi | ||||
| 
 | ||||
|         user=`echo $name | cut -d '/' -f 1` | ||||
|         repo=`echo $name | cut -d '/' -f 2-` | ||||
| 
 | ||||
|         if [[ $repo == *.git ]]; then | ||||
|             repo=${repo%.*} | ||||
|         fi | ||||
| 
 | ||||
|         # Final path to the repo | ||||
|         repo_path=$GCLONE_PATH/$server/$user/$repo | ||||
|         mkdir -p $repo_path | ||||
|         git clone $1 $repo_path | ||||
|     } | ||||
| 
 | ||||
|     cdg() { | ||||
|         if [ $# -ne 1 ]; then | ||||
|             echo "This function expects a single parameter" | ||||
|             return 1 | ||||
|         else | ||||
|             found_dirs=`find $GCLONE_PATH -maxdepth 3 -name $1 | sort` | ||||
|             total=`echo $found_dirs | wc -l` | ||||
| 
 | ||||
|             if [[ "" == "$found_dirs" ]]; then | ||||
|                 echo "$1 not found" | ||||
|                 return 2 | ||||
|             elif [ $total -gt 1 ]; then | ||||
|                 counter=0 | ||||
|                 echo "Multiple entries for $1 found:" | ||||
|                 echo $found_dirs | while read found_dir; do | ||||
|                     counter=$(($counter+1)) | ||||
|                     echo "["$counter"]" $found_dir | ||||
|                 done | ||||
|                 read choice | ||||
|                 if [[ "$choice" == "" ]]; then | ||||
|                     cd `echo $found_dirs | head -1 | tail -1` | ||||
|                 elif [[ "$choice" =~ '^[0-9]+$' ]] && [ $choice -le $total ] && [ $choice -gt 0 ]; then | ||||
|                     cd `echo $found_dirs | head -$choice | tail -1` | ||||
|                 else | ||||
|                     echo "I expected a number that was less than the max..." | ||||
|                     return 3 | ||||
|                 fi | ||||
|                 return 3 | ||||
|             else | ||||
|                 cd $found_dirs | ||||
|             fi | ||||
|         fi | ||||
|     } | ||||
| 
 | ||||
|     _cdg() { | ||||
|         _arguments "1: :($(find $GCLONE_PATH -maxdepth 3 -exec basename {} \;))" | ||||
|     } | ||||
| 
 | ||||
|     compdef _cdg cdg | ||||
| 
 | ||||
| fi | ||||
| source $HOME/.config/dotfiles/zsh/gclone.zsh | ||||
| 
 | ||||
| # Music things | ||||
| command -v music-server > /dev/null 2>&1 | ||||
|  | ||||
							
								
								
									
										80
									
								
								zsh/gclone.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								zsh/gclone.zsh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| # cdg : cd to a git repo | ||||
| if [ -d "$GCLONE_PATH" ]; then | ||||
| 
 | ||||
|     gclone() { | ||||
|         # Check if cloning via HTTP(S) or SSH | ||||
|         if [[ $1 == http* ]]; then | ||||
|             server=`echo $1 | rev | cut -d '/' -f 3- | rev | cut -d '/' -f 3-` | ||||
|             name=`echo $1 | rev | cut -d '/' -f -2 | rev` | ||||
|         else | ||||
|             server=`echo $1 | cut -d ':' -f 1 | cut -d '@' -f 2-` | ||||
|             name=`echo $1 | cut -d ':' -f 2-` | ||||
|         fi | ||||
| 
 | ||||
|         user=`echo $name | cut -d '/' -f 1` | ||||
|         repo=`echo $name | cut -d '/' -f 2-` | ||||
| 
 | ||||
|         if [[ $repo == *.git ]]; then | ||||
|             repo=${repo%.*} | ||||
|         fi | ||||
| 
 | ||||
|         tempdir=`mktemp -d` | ||||
|         git clone $1 $tempdir/repo | ||||
| 
 | ||||
|         # If the clone worked, move the repo in the good place | ||||
|         if [ $? -eq 0 ]; then | ||||
| 
 | ||||
|             # Final path to the repo | ||||
|             repo_path=$GCLONE_PATH/$server/$user/$repo | ||||
|             mkdir -p $repo_path | ||||
| 
 | ||||
|             mv $tempdir/repo $repo_path | ||||
| 
 | ||||
|         fi | ||||
| 
 | ||||
|         # Remove the temp dir | ||||
|         rm -rf $tempdir | ||||
|     } | ||||
| 
 | ||||
|     cdg() { | ||||
|         if [ $# -ne 1 ]; then | ||||
|             echo "This function expects a single parameter" | ||||
|             return 1 | ||||
|         else | ||||
|             found_dirs=`find $GCLONE_PATH -maxdepth 3 -name $1 | sort` | ||||
|             total=`echo $found_dirs | wc -l` | ||||
| 
 | ||||
|             if [[ "" == "$found_dirs" ]]; then | ||||
|                 echo "$1 not found" | ||||
|                 return 2 | ||||
|             elif [ $total -gt 1 ]; then | ||||
|                 counter=0 | ||||
|                 echo "Multiple entries for $1 found:" | ||||
|                 echo $found_dirs | while read found_dir; do | ||||
|                     counter=$(($counter+1)) | ||||
|                     echo "["$counter"]" $found_dir | ||||
|                 done | ||||
|                 read choice | ||||
|                 if [[ "$choice" == "" ]]; then | ||||
|                     cd `echo $found_dirs | head -1 | tail -1` | ||||
|                 elif [[ "$choice" =~ '^[0-9]+$' ]] && [ $choice -le $total ] && [ $choice -gt 0 ]; then | ||||
|                     cd `echo $found_dirs | head -$choice | tail -1` | ||||
|                 else | ||||
|                     echo "I expected a number that was less than the max..." | ||||
|                     return 3 | ||||
|                 fi | ||||
|                 return 3 | ||||
|             else | ||||
|                 cd $found_dirs | ||||
|             fi | ||||
|         fi | ||||
|     } | ||||
| 
 | ||||
|     _cdg() { | ||||
|         _arguments "1: :($(find $GCLONE_PATH -maxdepth 3 -exec basename {} \;))" | ||||
|     } | ||||
| 
 | ||||
|     compdef _cdg cdg | ||||
| 
 | ||||
| fi | ||||
| 
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user