70 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Archive project: commit/push last changes to remote repo, remove unnecessary files, zip and move to archive folder
 | |
| 
 | |
| archive_dir="$HOME/Dropbox/Projects/_Archive"
 | |
| 
 | |
| 
 | |
| # Common stuff
 | |
| RED="$(tput setaf 1)"
 | |
| CYAN="$(tput setaf 6)"
 | |
| UNDERLINE="$(tput sgr 0 1)"
 | |
| NOCOLOR="$(tput sgr0)"
 | |
| function header() { echo -e "$UNDERLINE$CYAN$1$NOCOLOR\n"; }
 | |
| function error() { echo -e "$UNDERLINE$RED$1$NOCOLOR"; }
 | |
| 
 | |
| 
 | |
| project=`basename "$(pwd)"`
 | |
| 
 | |
| header "Archiving $project..."
 | |
| 
 | |
| # Has remote origin?
 | |
| if [ ! $(git remote show) ]; then
 | |
| 	error "Remote origin not found."
 | |
| 	echo "Run either git-github or git-bitbucket."
 | |
| 	echo
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| # Dirty repo?
 | |
| if [ "$(git status --porcelain 2>/dev/null)" ]; then
 | |
| 	if [ "$1" == "--force" ]; then
 | |
| 		echo "Commiting all changes..."
 | |
| 		git add .
 | |
| 		git commit -am "Last commit."
 | |
| 		echo
 | |
| 	else
 | |
| 		error "Repo is dirty."
 | |
| 		echo "Run archive-project --force to continue."
 | |
| 		echo
 | |
| 		git status
 | |
| 		exit 1
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| # Push to remove repo
 | |
| echo "Pushing changes to remote repo..."
 | |
| git push
 | |
| echo
 | |
| 
 | |
| # Clean
 | |
| echo "Cleaning..."
 | |
| 
 | |
| # Optimize repo
 | |
| git gc
 | |
| 
 | |
| # Remove node_modules
 | |
| find . -name node_modules -print0 | xargs -0 rm -rf
 | |
| 
 | |
| echo
 | |
| 
 | |
| # Zip
 | |
| zip="$archive_dir/$(date +'%Y-%m')_$project.zip"
 | |
| echo "Hardcore archiving action: $zip..."
 | |
| mkdir -p "$archive_dir"
 | |
| zip -rq $zip .
 | |
| echo
 | |
| 
 | |
| echo "Project archived to $zip. You can delete this folder."
 | |
| echo
 | 
