Skip to content

Instantly share code, notes, and snippets.

@livtanong
Created May 5, 2014 04:05
Show Gist options
  • Save livtanong/8b23d95de83b85b23bea to your computer and use it in GitHub Desktop.
Save livtanong/8b23d95de83b85b23bea to your computer and use it in GitHub Desktop.
A fish shell script to quickly boostrap a mithril app. Included are components that I find indispensable. I'm new to shell scripting, so you'll probably see things that need improvement. Please don't hesitate to let me know if I'm doing anything stupid. :P
#!/opt/boxen/homebrew/bin/fish
echo Aye, smithing your app.
set PROJECT $argv[1]
set MAIN app
mkdir $PROJECT
if test -d $PROJECT
cd $PROJECT
mkdir styles
mkdir scripts
touch index.html
bower install mithril
bower install underscore
bower install font-awesome
git init
printf "<!doctype html>
<script src=\"bower_components/mithril/mithril.min.js\"></script>
<script src=\"bower_components/underscore/underscore.js\"></script>
<script src=\"scripts/$MAIN/model.js\"></script>
<script src=\"scripts/$MAIN/controller.js\"></script>
<script src=\"scripts/$MAIN/view.js\"></script>
<script src=\"scripts/routes/routes.js\"></script>" >> index.html
cd styles
mkdir sass
mkdir css
cd sass
bourbon install
neat install
cd ../../scripts
mkdir $MAIN
cd $MAIN
touch model.js
touch controller.js
touch view.js
printf "var $MAIN = {}" >> model.js
printf "$MAIN.controller = function(){\n\t//controller here\n}" >> controller.js
printf "$MAIN.view = function(ctrl){
return $MAIN.template(ctrl, [
m(\"div\", [
\"From the Mines of Moria!\"
])
]);
}" >> view.js
printf "
$MAIN.template = function(ctrl, options, content){
switch(arguments.length){
case 2:
ctrl = arguments[0];
content = arguments[1];
options = {};
break;
case 3:
ctrl = arguments[0];
options = arguments[1];
content = arguments[2];
break;
}
return m(\"html\", [
m(\"head\", [
m(\"link[href='styles/css/style.css'][rel='stylesheet'][type='text/css']\"),
m(\"link[href='bower_components/font-awesome/css/font-awesome.min.css'][rel='stylesheet'][type='text/css']\"),
]),
m(\"body\", options, content)
])
}" >> view.js
cd ..
mkdir routes
cd routes
touch routes.js
printf "m.route(document, '/', {\n\t'/': $MAIN\n})" >> routes.js
echo Smithing complete! Now go kill some orcs!
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment