/
project.coffee
executable file
·67 lines (48 loc) · 1.93 KB
/
project.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#<< toaster/generators/question
#<< toaster/generators/config
class Project extends toaster.generators.Question
# requirements
path = require "path"
pn = path.normalize
fs = require "fs"
FsUtil = toaster.utils.FsUtil
constructor:(@basepath)->
create:(folderpath, name, src, release)->
if !folderpath || folderpath == true
return error "You need to inform a target path!\n" +
"\ttoaster -n myawesomeapp".green
if folderpath.substr( 0, 1 ) != "/"
target = "#{@basepath}/#{folderpath}"
else
target = folderpath
if name? && src? && release?
return @scaffold target, name, src, release
q1 = "Path to your src folder? [src] : "
q2 = "Path to your release file? [www/js/app.js] : "
q3 = "Starting from your webroot '/', what's the folderpath to "+
"reach your release file? (i.e. js) (optional) : "
@ask q1.magenta, /.*/, (src = null)=>
@ask q2.magenta, /.*/, (release = null)=>
@ask q3.cyan, /.*/, (httpfolder = null)=>
$src = src || "src"
$release = release || "www/js/app.js"
if src is '' and release is '' and httpfolder is ''
$httpfolder = 'js'
else
$httpfolder = httpfolder || ""
@scaffold target, $src, $release, $httpfolder
process.exit()
scaffold:(target, src, release, httpfolder)=>
srcdir = pn "#{target}/#{src}"
vendorsdir = pn "#{target}/vendors"
releasefile = pn "#{target}/#{release}"
releasedir = releasefile.split("/").slice(0, -1).join "/"
log "#{'Created'.green.bold} #{target}" if FsUtil.mkdir_p target
log "#{'Created'.green.bold} #{srcdir}" if FsUtil.mkdir_p srcdir
log "#{'Created'.green.bold} #{vendorsdir}" if FsUtil.mkdir_p vendorsdir
log "#{'Created'.green.bold} #{releasedir}" if FsUtil.mkdir_p releasedir
srcdir = srcdir.replace( target, "" ).substr 1
releasefile = releasefile.replace( target, "" ).substr 1
new toaster.generators.Config( target ).write srcdir,
releasefile,
httpfolder