-
-
Save daveWid/469645 to your computer and use it in GitHub Desktop.
| #!/bin/bash | |
| dir="/Users/dave/Sites/" | |
| project="" | |
| # Check for Git | |
| type -P git &>/dev/null || { echo "Git is not installed. Exiting." >&2; exit 1; } | |
| # Get a project name | |
| while [ -z "$project" ] | |
| do | |
| echo "Please enter your project name" | |
| read project | |
| done | |
| # Move over into the directory | |
| cd "$dir" | |
| # Check for the project already | |
| if [ -d $project ] | |
| then | |
| echo "$project already exists. Exiting." | |
| exit 1 | |
| else | |
| mkdir "$project" && cd "$project" | |
| # Initialize Git Repository | |
| git init | |
| # Make directories | |
| mkdir -p htdocs/{css,images,js} | |
| mkdir -p kohana/application/classes/{controller,model} | |
| mkdir -p kohana/application/{config,views} | |
| mkdir -m 0777 -p kohana/application/{cache,logs} | |
| # Add ignore rule for .DS_Store files (only necessary on OS X) | |
| echo ".DS_Store" > .gitignore | |
| # Make ignore files for the cache and logs directories | |
| echo '[^.]*' > kohana/application/{logs,cache}/.gitignore | |
| # Add in Kohana modules | |
| # Add git repos that you use across all projects below - | |
| # This is just the core and database. | |
| git submodule add git://github.com/kohana/core.git kohana/system | |
| git submodule add git://github.com/kohana/database.git kohana/modules/database | |
| git submodule init | |
| # Add in the index.php, .htaccess and bootstrap.php files | |
| curl -o htdocs/index.php http://github.com/kohana/kohana/raw/master/index.php | |
| curl -o htdocs/.htaccess http://github.com/kohana/kohana/raw/master/example.htaccess | |
| curl -o kohana/application/bootstrap.php http://github.com/kohana/kohana/raw/master/application/bootstrap.php | |
| git add . | |
| git commit -m 'Initial Commit.' | |
| # Send success message | |
| echo "------------" | |
| echo "$project created successfully!" | |
| fi |
Dave, just wondering, what does the &>/dev/null part do? As well as >&2.
type -P git &>/dev/null || { echo "Git is not installed. Exiting." >&2; exit 1; }
I just wanted to run a check to make sure that git was installed and I found an answer over on StackOverflow
http://stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script
I think the &>/dev/null just makes sure that git is available on the system. As for the >&2, I have no idea, but it works so I left it as is. You might be able to pull the & before the >/dev/null and the >&2 part out, but my bash knowledge is pretty basic.
To make things even easier, I saved Geert's fork and put the script in my /Users/dave/shell directory.
Then I added this line to alias to my ~/.bash_profile
alias kreate="sh /Users/dave/shell/create_kohana_project.sh"
Then I can just run kreate from the CL and everything runs in the current directory. (You can use something else then kreate as the alias, it is just short and something I will remember is for Kohana)
I pulled the "unknown" parts out, and simply changed it to type -P git || { echo 'Git is not installed. Exiting.'; exit 1; }, which seems to work fine.
Good script. What about setting dir to the current directory by default? Optionally let it be set by a --dir flag. See my fork.