APIs

Show:
  1. /**
  2. Web site tools and generator via index.html template files
  3. <!-- MAIN_CONTENT_START -->
  4. ...
  5. <!-- MAIN_CONTENT_END -->
  6. @method compileHeaderFooter
  7. **/
  8.  
  9. var gulp = require('gulp');
  10. var express = require('express');
  11. var gutil = require('gulp-util');
  12. var tsAbstractsGen = require('gulp-ts-abstracts-gen');
  13. var htmlmin = require('gulp-htmlmin');
  14. var browserSync = require('browser-sync');
  15. var runSequence = require('run-sequence');
  16. var shell = require('gulp-shell');
  17. var minifyHTML = require('gulp-minify-html');
  18. var rename = require("gulp-rename");
  19. var yuidoc = require("gulp-yuidoc");
  20. var sortJSON = require('gulp-sort-json');
  21. var Rsync = require('rsync');
  22.  
  23. var server;
  24.  
  25. var paths = [
  26. '_views/**/*.js',
  27. '_lang/**/*.js',
  28. '_models/**/*.js',
  29. '_controllers/**/*.js',
  30. '_templates/**/*.js',
  31. '_libs/**/*.js',
  32. './*.js'
  33. ];
  34.  
  35. // generate abstract definition files on public and protected members/methods for
  36. // typescript files that have a bookmark of "//GULP_ABSTRACT"
  37. gulp.task('TS_CreateAbstracts', function (done) {
  38. gulp.src('./**/*.ts')
  39. .pipe(tsAbstractsGen('TSLiteModules')).on('error', handleError)
  40. .pipe(gulp.dest('./'));
  41. done()
  42. });
  43.  
  44. gulp.task('release', function (done) {
  45. runSequence('_genDocs', '_uploadVersionFiles', '_uploadDocs', done);
  46. });
  47.  
  48. gulp.task('releaseDocs', function (done) {
  49. runSequence('_genDocs', '_uploadDocs', done);
  50. });
  51.  
  52. gulp.task('minifyHTML', function (done) {
  53. runSequence('_htmlMinify', '_htmlCopy', '_rsync', done);
  54. });
  55.  
  56. gulp.task('liveServer', ['watchTmpDir'], function () {
  57. server = express();
  58. server.use(express.static('C:/msweb/studiolite/studiolite.html'));
  59. server.listen(8002);
  60. browserSync({
  61. proxy: 'localhost:8002'
  62. });
  63. });
  64.  
  65.  
  66. gulp.task('sample', function () {
  67. gulp.src('./_source/*.html')
  68. .pipe(gulplocaltranslate('5')).on('error', handleError)
  69. .pipe(gulp.dest('./_tmp/'))
  70. .pipe(reload());
  71. });
  72.  
  73.  
  74. gulp.task('_uploadDocs', shell.task([
  75. 'uploadDocs.bat'
  76. ], {cwd: './_utils'}));
  77.  
  78.  
  79. gulp.task('_uploadVersionFiles', shell.task([
  80. 'scp /cygdrive/c/msweb/studiolite/package.json Sean@digitalsignage.com:/var/www/sites/dynasite/htdocs/_studiolite-dev/',
  81. 'scp /cygdrive/c/msweb/studiolite/studiolite.html Sean@digitalsignage.com:/var/www/sites/dynasite/htdocs/_studiolite-dev/'
  82. ]));
  83.  
  84. gulp.task('_genDocs', function () {
  85. var version = updVersion();
  86. gulp.src(paths)
  87. .pipe(yuidoc({
  88. project: {
  89. "name": "digitalsignage.com - open source docs",
  90. "description": "MediaSignage open source SignageStudio project",
  91. "version": version,
  92. "url": "http://digitalsignage.com",
  93. "logo": "http://www.digitalsignage.com/_images/logo.png",
  94. "themedir": "_doctheme/",
  95. "helpers": ["_doctheme/helpers/helpers.js"],
  96. "options": {
  97. "linkNatives": "true",
  98. "attributesEmit": "true",
  99. "paths": [
  100. "./lib"
  101. ],
  102. "outdir": "../_msdocs"
  103. }
  104. }
  105. }))
  106. .pipe(gulp.dest("../_msdocs"));
  107. });
  108.  
  109.  
  110. gulp.task('sortLocals', function () {
  111. gulp.src('_lang/*.json')
  112. .pipe(sortJSON())
  113. .pipe(gulp.dest("_lang/"))
  114. });
  115.  
  116.  
  117. function reload() {
  118. if (1) {
  119. return browserSync.reload({
  120. stream: true
  121. });
  122. }
  123. return gutil.noop();
  124. }
  125.  
  126. function handleError(err) {
  127. console.log(err.toString());
  128. this.emit('end');
  129. }
  130.  
  131. function updVersion() {
  132.  
  133. var fs = require('fs');
  134. var path = require('path');
  135.  
  136. var build = fs.readFileSync('./_utils/version.log', 'utf8');
  137. build = parseInt(build);
  138. build++;
  139. fs.writeFileSync('./_utils/version.log', build, 'utf8');
  140.  
  141. // add build number to docs page
  142. var doc = fs.readFileSync('./_utils/yuidoc.json', 'utf8');
  143. var expression = new RegExp(/version": "([0-9]+).([0-9]+).([0-9]+)(.*)",/i);
  144. var v = doc.match(expression);
  145.  
  146. var fullBuild = v[1] + '.' + v[2] + '.' + build;
  147. console.log(fullBuild);
  148. var rawVer = v[1] + '.' + v[2] + '.' + build;
  149. var version = 'version": "' + rawVer + '",';
  150. doc = doc.replace(/version": "[0-9]+.[0-9]+.[0-9]+",/g, version);
  151. fs.writeFileSync('./_utils/yuidoc.json', doc, 'utf8');
  152.  
  153. // add build number to studiolite page
  154. var footer = '<span class="reshid hiddenElement" id="footerText">&nbsp;MediaSignage Inc &#169; | version :BUILD: </span>';
  155. footer = footer.replace(/:BUILD:/gi, fullBuild);
  156.  
  157. var dashVersion = '<span class="dashboardBullets" data-localize="version"> Version :BUILD: </span>';
  158. dashVersion = dashVersion.replace(/:BUILD:/gi, fullBuild);
  159.  
  160. var studiolite = fs.readFileSync('studiolite.html', 'utf8');
  161. studiolite = studiolite.replace(/<span class="reshid hiddenElement" id="footerText">(.*)<\/span>/gi, footer);
  162. studiolite = studiolite.replace(/<span class="dashboardBullets" data-localize="version">(.*)<\/span>/gi, dashVersion);
  163. fs.writeFileSync('studiolite.html', studiolite, 'utf8');
  164.  
  165. // add build number to npm
  166. var git = fs.readFileSync('README.md', 'utf8');
  167. var gitver = 'current version: ' + fullBuild + ' dev-build';
  168. git = git.replace(/current version: (.*) dev-build/gi, gitver);
  169. fs.writeFileSync('README.md', git, 'utf8');
  170.  
  171. // add build number to github
  172. var git = fs.readFileSync('package.json', 'utf8');
  173. var npmVer = '"version": "' + fullBuild + '",';
  174. git = git.replace(/"version": ".*",/gi, npmVer);
  175. fs.writeFileSync('package.json', git, 'utf8');
  176.  
  177. return rawVer;
  178. }
  179.  
  180. gulp.task('_htmlMinify', function () {
  181. return gulp.src('studiolite.html')
  182. .pipe(htmlmin({collapseWhitespace: true}))
  183. .pipe(gulp.dest('temp/tmp_studiolite.html'))
  184. });
  185.  
  186. gulp.task('_htmlCopy', function () {
  187. return gulp.src("temp/tmp_studiolite.html")
  188. .pipe(rename("studiolite.html"))
  189. .pipe(gulp.dest("./"));
  190. });
  191.  
  192. gulp.task('_rsync', function () {
  193. var rsync = Rsync.build({
  194. source: '/cygdrive/c/msweb/studiolite/',
  195. destination: 'Sean@digitalsignage.com:/var/www/sites/dynasite/htdocs/_studiolite-dev/',
  196. exclude: ['*.bat', '*.iml', '.gitignore', 'gulpfile.js', '.git', '.idea/', '_common/', '_doctheme/', '_assets/', '_utils/', '*node_modules', '*SignageStudio/', '*Spotify/']
  197. });
  198. rsync.set('progress');
  199. rsync.flags('avz');
  200. console.log('running the command ' + rsync.command());
  201. rsync.output(
  202. function (data) {
  203. console.log('sync: ' + data);
  204. }, function (data) {
  205. console.log('sync: ' + data);
  206. }
  207. );
  208. rsync.execute(function (error, stdout, stderr) {
  209. console.log('completed ' + error + ' ' + stdout + ' ' + stderr)
  210. });
  211. });
  212.