Finish "gulp" command

This commit is contained in:
Mohsen Azimi
2015-01-29 16:33:14 -08:00
parent a161942c03
commit 030cea26d8
10 changed files with 1958 additions and 7154 deletions

176
Cakefile
View File

@@ -1,176 +0,0 @@
fs = require 'fs'
{exec} = require 'child_process'
less = require 'less'
handlebars = require 'handlebars'
ncp = require 'ncp'
sourceFiles = [
'SwaggerUi'
'view/HeaderView'
'view/MainView'
'view/ResourceView'
'view/OperationView'
'view/StatusCodeView'
'view/ParameterView'
'view/SignatureView'
'view/ContentTypeView'
'view/ResponseContentTypeView'
'view/ParameterContentTypeView'
'view/ApiKeyButton'
'view/BasicAuthButton'
]
task 'clean', 'Removes distribution', ->
console.log 'Clearing dist...'
rmDir('dist') if fs.existsSync('dist')
task 'dist', 'Build a distribution', ->
console.log "Build distribution in ./dist"
fs.mkdirSync('dist') if not fs.existsSync('dist')
fs.mkdirSync('dist/lib') if not fs.existsSync('dist/lib')
appContents = new Array remaining = sourceFiles.length
for file, index in sourceFiles then do (file, index) ->
console.log " : Reading src/main/coffeescript/#{file}.coffee"
fs.readFile "src/main/coffeescript/#{file}.coffee", 'utf8', (err, fileContents) ->
throw err if err
appContents[index] = fileContents
precompileTemplates() if --remaining is 0
precompileTemplates= ->
console.log ' : Precompiling templates...'
templateFiles = fs.readdirSync('src/main/template')
templateContents = new Array remaining = templateFiles.length
for file, index in templateFiles then do (file, index) ->
console.log " : Compiling src/main/template/#{file}"
fs.readFile "src/main/template/#{file}", 'utf8', (err, source) ->
throw err if err
compiled = handlebars.precompile(source)
templateContents[index] = '(function() {\n var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};\ntemplates[\'' + file.replace('.handlebars', '') + '\'] = template(' + compiled + ');\n})();'
fs.unlink 'dist/_' + file + '.js', (err) ->
console.log "#{err.code}: #{err.path}" unless err.code == 'ENOENT'
if --remaining is 0
templateContents.push '\n\n'
fs.writeFile 'dist/_swagger-ui-templates.js', templateContents.join('\n\n'), 'utf8', (err) ->
throw err if err
build()
build = ->
console.log ' : Collecting Coffeescript source...'
appContents.push '\n\n'
fs.writeFile 'dist/_swagger-ui.coffee', appContents.join('\n\n'), 'utf8', (err) ->
throw err if err
console.log ' : Compiling...'
exec 'coffee --compile dist/_swagger-ui.coffee', (err, stdout, stderr) ->
throw err if err
fs.unlink 'dist/_swagger-ui.coffee'
console.log ' : Combining with javascript...'
fs.readFile 'package.json', 'utf8', (err, fileContents) ->
obj = JSON.parse(fileContents)
exec 'echo "// swagger-ui.js" > dist/swagger-ui.js'
exec 'echo "// version ' + obj.version + '" >> dist/swagger-ui.js'
exec 'cat src/main/javascript/doc.js dist/_swagger-ui-templates.js dist/_swagger-ui.js >> dist/swagger-ui.js', (err, stdout, stderr) ->
throw err if err
fs.unlink 'dist/_swagger-ui.js'
fs.unlink 'dist/_swagger-ui-templates.js'
console.log ' : Minifying all...'
exec 'java -jar "./bin/yuicompressor-2.4.7.jar" --type js -o ' + 'dist/swagger-ui.min.js ' + 'dist/swagger-ui.js', (err, stdout, stderr) ->
throw err if err
lessc()
lessc = ->
# Someone who knows CoffeeScript should make this more Coffee-licious
console.log ' : Compiling LESS...'
less.render fs.readFileSync("src/main/less/screen.less", 'utf8'), (err, css) ->
fs.writeFileSync("src/main/html/css/screen.css", css)
less.render fs.readFileSync("src/main/less/reset.less", 'utf8'), (err, css) ->
fs.writeFileSync("src/main/html/css/reset.css", css)
pack()
pack = ->
console.log ' : Packaging...'
ncp.ncp 'lib', 'dist/lib', (err) ->
reportNcpErrors err
console.log ' : Copied swagger-ui libs'
fs.mkdirSync('dist/lib') if not fs.existsSync('dist/lib')
fs.createReadStream('node_modules/swagger-client/lib/swagger-client.js');
console.log ' : Copied swagger dependencies'
ncp.ncp 'src/main/html', 'dist', (err) ->
reportNcpErrors err
console.log ' : Copied html dependencies'
console.log ' !'
task 'spec', "Run the test suite", ->
exec "open spec.html", (err, stdout, stderr) ->
throw err if err
task 'watch', 'Watch source files for changes and autocompile', ->
# Function which watches all files in the passed directory
watchFiles = (dir) ->
files = fs.readdirSync(dir)
for file, index in files then do (file, index) ->
console.log " : " + dir + "/#{file}"
fs.watchFile dir + "/#{file}", (curr, prev) ->
if +curr.mtime isnt +prev.mtime
invoke 'dist'
notify "Watching source files for changes..."
# Watch specific source files
for file, index in sourceFiles then do (file, index) ->
console.log " : " + "src/main/coffeescript/#{file}.coffee"
fs.watchFile "src/main/coffeescript/#{file}.coffee", (curr, prev) ->
if +curr.mtime isnt +prev.mtime
invoke 'dist'
# watch all files in these folders
watchFiles("src/main/template")
watchFiles("src/main/javascript")
watchFiles("src/main/html")
watchFiles("src/main/less")
watchFiles("src/test")
notify = (message) ->
return unless message?
console.log message
# options =
# title: 'CoffeeScript'
# image: 'bin/CoffeeScript.png'
# try require('growl') message, options
cat = (dest, files) ->
for file in files
body = fs.readFileSync(file);
fs.appendFileSync(dest, body);
fs.appendFileSync(dest, "\n");
rmDir = (dirPath) ->
try
files = fs.readdirSync(dirPath)
catch e
return
if files.length > 0
i = 0
while i < files.length
filePath = dirPath + "/" + files[i]
if fs.statSync(filePath).isFile()
fs.unlinkSync filePath
else
rmDir filePath
i++
fs.rmdirSync dirPath
reportNcpErrors = (err) ->
if Array.isArray(err)
console.error "There were errors during the copy."
err.forEach (err) ->
console.error err.stack or err.message
process.exit 1
else if err
console.error "An error has occurred."
console.error err.stack or err.message
process.exit 1

2
dist/index.html vendored
View File

@@ -12,7 +12,7 @@
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script> <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script> <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script> <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
<script src='lib/handlebars-1.0.0.js' type='text/javascript'></script> <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
<script src='lib/underscore-min.js' type='text/javascript'></script> <script src='lib/underscore-min.js' type='text/javascript'></script>
<script src='lib/backbone-min.js' type='text/javascript'></script> <script src='lib/backbone-min.js' type='text/javascript'></script>
<script src='lib/swagger-client.js' type='text/javascript'></script> <script src='lib/swagger-client.js' type='text/javascript'></script>

File diff suppressed because it is too large Load Diff

28
dist/lib/handlebars-2.0.0.js vendored Normal file

File diff suppressed because one or more lines are too long

2413
dist/swagger-ui.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -54,7 +54,11 @@ function coffeescript () {
*/ */
gulp.task('dist', function() { gulp.task('dist', function() {
return es.merge(coffeescript(), templates()) return es.merge(
gulp.src('./src/main/javascript/doc.js'),
coffeescript(),
templates()
)
.pipe(concat('swagger-ui.js')) .pipe(concat('swagger-ui.js'))
.pipe(gulp.dest('./dist')) .pipe(gulp.dest('./dist'))
.pipe(uglify()) .pipe(uglify())
@@ -88,13 +92,13 @@ gulp.task('copy', function() {
gulp gulp
.src(['./lib/**/*.js']) .src(['./lib/**/*.js'])
.pipe(gulp.dest('./dist/lib')) .pipe(gulp.dest('./dist/lib'))
.on('error', gutil.log); .on('error', gutil.log)
// copy all files inside html folder // copy all files inside html folder
gulp gulp
.src(['./src/main/html/**/*']) .src(['./src/main/html/**/*'])
.pipe(gulp.dest('./dist')) .pipe(gulp.dest('./dist'))
.on('error', gutil.log); .on('error', gutil.log)
}); });

File diff suppressed because it is too large Load Diff

28
lib/handlebars-2.0.0.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script> <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script> <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script> <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
<script src='lib/handlebars-1.0.0.js' type='text/javascript'></script> <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
<script src='lib/underscore-min.js' type='text/javascript'></script> <script src='lib/underscore-min.js' type='text/javascript'></script>
<script src='lib/backbone-min.js' type='text/javascript'></script> <script src='lib/backbone-min.js' type='text/javascript'></script>
<script src='lib/swagger-client.js' type='text/javascript'></script> <script src='lib/swagger-client.js' type='text/javascript'></script>