| 
									
										
										
										
											2012-12-26 10:13:36 +04:00
										 |  |  | #!/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..." | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-10 14:56:34 +04:00
										 |  |  | # Optimize repo | 
					
						
							|  |  |  | git gc | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-26 10:13:36 +04:00
										 |  |  | # 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 |