generator-fatarrow
Version:
205 lines (180 loc) • 5.59 kB
text/coffeescript
_ = require 'underscore'
chalk = require 'chalk'
logo = require 'fatarrow-ascii-art'
path = require 'path'
pkg = require '../../package.json'
yeoman = require 'yeoman-generator'
Base = yeoman.generators.Base
check = chalk.green '✓'
class Generator extends Base
initializing: ->
= require '../../package.json'
install: ->
if
'npm', ['update']
else
end: ->
logo
chalk.magenta "Just type 'gulp' to fire up '#{@appname}'!"
splash: ->
logo
chalk.magenta 'Get ready to create your fatarrow app!'
prompting: ->
done =
prompts = [
name : 'appname'
message : 'What do you want to call your app?'
default : path.basename process.cwd()
,
name : 'appdescription'
message : 'Please provide a description for your app.'
default : 'a fatarrow app'
,
name : 'includeExamples'
type : 'confirm'
message : 'Would you like code examples?'
default : true
,
name : 'scriptLanguages'
type : 'checkbox'
message : 'What scripting languages in addition to JavaScript would you like?'
choices: [
value : 'coffeeScript'
name : 'CoffeeScript'
checked : true
,
value : 'babel'
name : 'Babel'
checked : false
,
value : 'liveScript'
name : 'LiveScript'
checked : false
,
value : 'typeScript'
name : 'TypeScript'
checked : false
]
,
name : 'styleLanguages'
type : 'checkbox'
message : 'What styling languages in addition to CSS would you like?'
choices: [
value : 'less'
name : 'Less'
checked : false
,
value : 'sass'
name : 'Sass'
checked : false
]
,
name : 'templateLanguages'
type : 'checkbox'
message : 'What templating languages in addition to HTML would you like?'
choices: [
value : 'haml'
name : 'Haml'
checked : false
,
value : 'jade'
name : 'Jade'
checked : false
,
value : 'markdown'
name : 'Markdown'
checked : false
]
]
upgradePrompt = [
name : 'upgrade'
message : 'It looks like you are upgrading your project. Continue?'
type : 'confirm'
]
= !!.get 'version'
if
upgradePrompt, (props) =>
console.log 'test'
done() if !!props.upgrade
= .get 'appdescription'
= .get 'appname'
= .get 'scriptLanguages'
= .get 'styleLanguages'
= .get 'templateLanguages'
.set 'version', pkg.version
.save()
done()
else
prompts, (props) =>
= props.appdescription
= props.appname
= true
= props.includeExamples
= props.scriptLanguages
= props.styleLanguages
= props.templateLanguages
.set 'appname',
.set 'appdescription',
.set 'scriptLanguages',
.set 'styleLanguages',
.set 'templateLanguages',
.set 'version', pkg.version
.save()
done()
scaffold: ->
return if
includeCoffeeScript = _.some , (x) -> x is 'coffeeScript'
if
if includeCoffeeScript
'coffeescript/src', 'src', true
else
'javascript/src', 'src', true
else
if includeCoffeeScript
'coffeescript/src/app', 'src/app', true
'coffeescript/src/components/markdown', 'src/components/markdown', true
'coffeescript/src/index.html', 'src/index.html', true
else
'javascript/src', 'src', true
if includeCoffeeScript
'coffeescript/e2e', 'e2e', true
else
'javascript/e2e', 'e2e', true
'_README.md', 'README.md'
config: ->
'jscsrc', '.jscsrc'
'jshintrc', '.jshintrc'
'karma.conf.coffee', 'karma.conf.coffee'
'karmadebug.conf.coffee', 'karmadebug.conf.coffee'
'protractor.conf.coffee', 'protractor.conf.coffee'
'config', 'config'
bower: ->
'bowerrc', '.bowerrc'
gulp: ->
'tasks', 'tasks'
'gulpfile.coffee', 'gulpfile.coffee'
npm: ->
context =
appdescription :
appname :
scriptLanguages :
includeCoffeeScript : _.some , (x) -> x is 'coffeeScript'
includeBabel : _.some , (x) -> x is 'babel'
includeTypeScript : _.some , (x) -> x is 'typeScript'
includeLiveScript : _.some , (x) -> x is 'liveScript'
includeLess : _.some , (x) -> x is 'less'
includeSass : _.some , (x) -> x is 'sass'
includeHaml : _.some , (x) -> x is 'haml'
includeJade : _.some , (x) -> x is 'jade'
includeMarkdown : _.some , (x) -> x is 'markdown'
'_package.json', 'package.json', context
git: ->
'gitignore', '.gitignore'
ci: ->
'travis.yml', '.travis.yml'
module.exports = Generator