No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

Cakefile 5.3 KiB

hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
hace 12 años
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. fs = require 'fs'
  2. path = require 'path'
  3. {exec} = require 'child_process'
  4. less = require 'less'
  5. handlebars = require 'handlebars'
  6. sourceFiles = [
  7. 'SwaggerUi'
  8. 'view/HeaderView'
  9. 'view/MainView'
  10. 'view/ResourceView'
  11. 'view/OperationView'
  12. 'view/StatusCodeView'
  13. 'view/ParameterView'
  14. 'view/SignatureView'
  15. 'view/ContentTypeView'
  16. 'view/ResponseContentTypeView'
  17. 'view/ParameterContentTypeView'
  18. ]
  19. task 'clean', 'Removes distribution', ->
  20. console.log 'Clearing dist...'
  21. exec 'rm -rf dist'
  22. task 'dist', 'Build a distribution', ->
  23. console.log "Build distribution in ./dist"
  24. fs.mkdirSync('dist') if not path.existsSync('dist')
  25. fs.mkdirSync('dist/lib') if not path.existsSync('dist/lib')
  26. appContents = new Array remaining = sourceFiles.length
  27. for file, index in sourceFiles then do (file, index) ->
  28. console.log " : Reading src/main/coffeescript/#{file}.coffee"
  29. fs.readFile "src/main/coffeescript/#{file}.coffee", 'utf8', (err, fileContents) ->
  30. throw err if err
  31. appContents[index] = fileContents
  32. precompileTemplates() if --remaining is 0
  33. precompileTemplates= ->
  34. console.log ' : Precompiling templates...'
  35. templateFiles = fs.readdirSync('src/main/template')
  36. templateContents = new Array remaining = templateFiles.length
  37. for file, index in templateFiles then do (file, index) ->
  38. console.log " : Compiling src/main/template/#{file}"
  39. fs.readFile "src/main/template/#{file}", 'utf8', (err, source) ->
  40. throw err if err
  41. compiled = handlebars.precompile(source)
  42. templateContents[index] = '(function() {\n var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};\ntemplates[\'' + file.replace('.handlebars', '') + '\'] = template(' + compiled + ');\n})();'
  43. fs.unlink 'dist/_' + file + '.js', (err) ->
  44. console.log "#{err.code}: #{err.path}" unless err.code == 'ENOENT'
  45. if --remaining is 0
  46. templateContents.push '\n\n'
  47. fs.writeFile 'dist/_swagger-ui-templates.js', templateContents.join('\n\n'), 'utf8', (err) ->
  48. throw err if err
  49. build()
  50. build = ->
  51. console.log ' : Collecting Coffeescript source...'
  52. appContents.push '\n\n'
  53. fs.writeFile 'dist/_swagger-ui.coffee', appContents.join('\n\n'), 'utf8', (err) ->
  54. throw err if err
  55. console.log ' : Compiling...'
  56. exec 'coffee --compile dist/_swagger-ui.coffee', (err, stdout, stderr) ->
  57. throw err if err
  58. fs.unlink 'dist/_swagger-ui.coffee'
  59. console.log ' : Combining with javascript...'
  60. fs.readFile 'package.json', 'utf8', (err, fileContents) ->
  61. obj = JSON.parse(fileContents)
  62. exec 'echo "// swagger-ui.js" > dist/swagger-ui.js'
  63. exec 'echo "// version ' + obj.version + '" >> dist/swagger-ui.js'
  64. exec 'cat src/main/javascript/doc.js dist/_swagger-ui-templates.js dist/_swagger-ui.js >> dist/swagger-ui.js', (err, stdout, stderr) ->
  65. throw err if err
  66. fs.unlink 'dist/_swagger-ui.js'
  67. fs.unlink 'dist/_swagger-ui-templates.js'
  68. console.log ' : Minifying all...'
  69. exec 'java -jar "./bin/yuicompressor-2.4.7.jar" --type js -o ' + 'dist/swagger-ui.min.js ' + 'dist/swagger-ui.js', (err, stdout, stderr) ->
  70. throw err if err
  71. lessc()
  72. lessc = ->
  73. # Someone who knows CoffeeScript should make this more Coffee-licious
  74. console.log ' : Compiling LESS...'
  75. less.render fs.readFileSync("src/main/less/screen.less", 'utf8'), (err, css) ->
  76. fs.writeFileSync("src/main/html/css/screen.css", css)
  77. less.render fs.readFileSync("src/main/less/reset.less", 'utf8'), (err, css) ->
  78. fs.writeFileSync("src/main/html/css/reset.css", css)
  79. pack()
  80. pack = ->
  81. console.log ' : Packaging...'
  82. exec 'cp -r lib dist'
  83. console.log ' : Copied swagger-ui libs'
  84. exec 'cp -r node_modules/swagger-client/lib/swagger.js dist/lib'
  85. console.log ' : Copied swagger dependencies'
  86. exec 'cp -r src/main/html/* dist'
  87. console.log ' : Copied html dependencies'
  88. console.log ' !'
  89. task 'spec', "Run the test suite", ->
  90. exec "open spec.html", (err, stdout, stderr) ->
  91. throw err if err
  92. task 'watch', 'Watch source files for changes and autocompile', ->
  93. # Function which watches all files in the passed directory
  94. watchFiles = (dir) ->
  95. files = fs.readdirSync(dir)
  96. for file, index in files then do (file, index) ->
  97. console.log " : " + dir + "/#{file}"
  98. fs.watchFile dir + "/#{file}", (curr, prev) ->
  99. if +curr.mtime isnt +prev.mtime
  100. invoke 'dist'
  101. notify "Watching source files for changes..."
  102. # Watch specific source files
  103. for file, index in sourceFiles then do (file, index) ->
  104. console.log " : " + "src/main/coffeescript/#{file}.coffee"
  105. fs.watchFile "src/main/coffeescript/#{file}.coffee", (curr, prev) ->
  106. if +curr.mtime isnt +prev.mtime
  107. invoke 'dist'
  108. # watch all files in these folders
  109. watchFiles("src/main/template")
  110. watchFiles("src/main/javascript")
  111. watchFiles("src/main/html")
  112. watchFiles("src/main/less")
  113. watchFiles("src/test")
  114. notify = (message) ->
  115. return unless message?
  116. console.log message
  117. # options =
  118. # title: 'CoffeeScript'
  119. # image: 'bin/CoffeeScript.png'
  120. # try require('growl') message, options