UNPKG

coffee-toaster

Version:

Minimalist build system for CoffeeScript.

88 lines (66 loc) 2.23 kB
#<< toaster/generators/question class Config extends toaster.generators.Question # requirements path = require "path" pn = path.normalize fs = require "fs" # variables tpl: """ # => SRC FOLDER toast '%src%' # EXCLUDED FOLDERS (optional) # exclude: ['folder/to/exclude', 'another/folder/to/exclude', ... ] # => VENDORS (optional) # vendors: ['vendors/x.js', 'vendors/y.js', ... ] # => OPTIONS (optional, default values listed) # bare: false # packaging: true # expose: '' # minify: true # => HTTPFOLDER (optional), RELEASE / DEBUG (required) httpfolder: '%httpfolder%' release: '%release%' debug: '%debug%' """ constructor:(@basepath)-> create:(folderpath)=> if folderpath? and folderpath != true @basepath = "#{@basepath}/#{folderpath}" log "#{'Let\'s toast this sly little project! :)'.grey.bold}" log ". With this as your basepath: #{@basepath.cyan}" log ". Please, tell me:" q1 = "\tWhere's your src folder? (i.e. src): " q2 = "\tWhere do you want your release file? (i.e. www/js/app.js) : " q3 = "\tStarting from your webroot '/', what's the folderpath to "+ "reach your release file? (i.e. js) (optional) : " @ask q1.magenta, /.+/, (src)=> @ask q2.magenta, /.+/, (release)=> @ask q3.cyan, /.*/, (httpfolder)=> @write src, release, httpfolder write:(src, release, httpfolder)=> filepath = pn "#{@basepath}/toaster.coffee" rgx = /(\/)?((\w+)(\.*)(\w+$))/ parts = rgx.exec( release ) filename = parts[2] if filename.indexOf(".") > 0 debug = release.replace rgx, "$1$3-debug$4$5" else debug = "#{release}-debug" buffer = @tpl.replace "%src%", src buffer = buffer.replace "%release%", release buffer = buffer.replace "%debug%", debug buffer = buffer.replace "%httpfolder%", httpfolder if path.existsSync filepath question = "\tDo you want to overwrite the file: #{filepath.yellow}" question += " ? [y/N] : ".white @ask question, /.*?/, (overwrite)=> if overwrite.match /y/i @save filepath, buffer process.exit() else @save filepath, buffer process.exit() save:(filepath, contents)-> fs.writeFileSync filepath, contents log "#{'Created'.green.bold} #{filepath}" process.exit()