-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathslushfile.coffee
143 lines (129 loc) · 3.76 KB
/
slushfile.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#
# * slush-static-site
# * https://github.com/awkward/slush-static-site
# *
# * Copyright (c) 2015, Awkward
# * Licensed under the MIT license.
#
"use strict"
gulp = require("gulp")
install = require("gulp-install")
conflict = require("gulp-conflict")
template = require("gulp-template")
rename = require("gulp-rename")
_string = require("underscore.string")
_ = require("lodash")
inquirer = require("inquirer")
merge = require("merge-stream")
format = (string) ->
username = string.toLowerCase()
username.replace /\s/g, ""
defaults = (->
homeDir = process.env.HOME or process.env.HOMEPATH or process.env.USERPROFILE
workingDirName = process.cwd().split("/").pop().split("\\").pop()
osUserName = homeDir and homeDir.split("/").pop() or "root"
configFile = homeDir + "/.gitconfig"
user = {}
user = require("iniparser").parseSync(configFile).user if require("fs").existsSync(configFile)
projectName: workingDirName
userName: format(user.name) or osUserName
authorEmail: user.email or ""
license: 'MIT'
s3Key: 'AKIAI3Z7CUAFHG53DMJA'
s3Secret: 'acYxWRu5RRa6CwzQuhdXEfTpbQA+1XQJ7Z1bGTCx'
s3Bucket: 'dev.example.com'
s3Region: 'us-east-1'
projectCss: 'bourbon/neat'
)()
gulp.task "default", (done) ->
prompts = [
{
name: "projectName"
message: "What is the name of your project?"
default: defaults.projectName
}
{
name: "projectDescription"
message: "What is the description?"
}
{
name: "projectVersion"
message: "What is the version of your project?"
default: "0.1.0"
}
{
type: "list"
name: "projectCss"
message: "What do you want to use as a base for styling?"
choices: ['bourbon/neat', 'bootstrap']
default: defaults.projectCss
}
{
name: "authorName"
message: "What is the author name?"
}
{
name: "authorEmail"
message: "What is the author email?"
default: defaults.authorEmail
}
{
name: "userName"
message: "What is the github username?"
default: defaults.userName
}
{
type: "confirm"
name: "useS3"
message: "do you want to enter your s3 credentials for deployment?"
}
{
type: "input"
name: "s3Key"
message: "What is your s3 key?"
default: defaults.s3Key
when: (answers) -> return answers.useS3
}
{
type: "input"
name: "s3Secret"
message: "What is your s3 secret key?"
default: defaults.s3Secret
when: (answers) -> return answers.useS3
}
{
type: "input"
name: "s3Bucket"
message: "What is the name of your s3 bucket?"
default: defaults.s3Bucket
when: (answers) -> return answers.useS3
}
{
type: "input"
name: "s3Region"
message: "What is the bucket's region?"
default: defaults.s3Region
when: (answers) -> return answers.useS3
}
{
name: "license"
message: "What is the license?"
default: defaults.license
}
{
type: "confirm"
name: "moveon"
message: "Continue?"
}
]
#Ask
inquirer.prompt prompts, (answers) ->
return done() unless answers.moveon
answers = _.extend defaults, answers
answers.projectNameSlug = _string.slugify(answers.projectName)
gulp.src([__dirname + "/templates/**"])
.pipe(template(answers)).pipe(rename((file) ->
file.basename = "." + file.basename.slice(1) if file.basename[0] is "_" and file.dirname is "."
file.basename = "_" + file.basename.slice(2) if file.basename[0] is "_" and file.basename[1] is "_"
return
)).pipe(conflict("./")).pipe(gulp.dest("./")).pipe(install()).on "end", done