gulpfile.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. var gulp = require('gulp'),
  2. gutil = require('gulp-util'),
  3. del = require('del'),
  4. fs = require("fs"),
  5. minimist = require('minimist'),
  6. targz = require('targz'),
  7. slog = require('single-line-log').stdout,
  8. dateFormat = require('dateformat'),
  9. progress = require('progress-stream'),
  10. request = require("request"),
  11. //uglify = require('gulp-tm-uglify'),
  12. uglify = require('gulp-uglify-es').default,
  13. rename = require('gulp-rename'),
  14. changed = require('gulp-changed'),
  15. gulpif = require('gulp-if'),
  16. http = require('http');
  17. concat = require('gulp-concat');
  18. var fg = require('fast-glob');
  19. var logger = require('gulp-logger');
  20. var assetRev = require('gulp-tm-asset-rev');
  21. const os = require('os');
  22. var through2 = require('through2');
  23. var path = require('path');
  24. var sourceMap = require('gulp-sourcemaps');
  25. //var downloadHost = "download.o2oa.net";
  26. // var downloadHost = "release.o2oa.net";
  27. // var protocol = "http";
  28. // var commonUrl = "/build/commons.tar.gz";
  29. // var jvmUrls = {
  30. // "all": "/build/jvm.tar.gz",
  31. // "linux": "/build/linux.tar.gz",
  32. // "aix": "/build/aix.tar.gz",
  33. // "arm": "/build/arm.tar.gz",
  34. // "macos": "/build/macos.tar.gz",
  35. // "risc": "/build/risc.tar.gz",
  36. // "raspberrypi": "/build/raspberrypi.tar.gz",
  37. // "windows": "/build/windows.tar.gz"
  38. // };
  39. var downloadHost = "git.o2oa.net";
  40. var protocol = "https";
  41. var commonUrl = "/o2oa/evn-o2server-commons/-/archive/master/evn-o2server-commons-master.tar.gz?path=commons";
  42. var jvmUrls = {
  43. "all": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm",
  44. "linux": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/linux",
  45. "aix": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/aix",
  46. "arm": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/arm",
  47. "macos": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/macos",
  48. "risc": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/risc",
  49. "raspi": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/raspi",
  50. "windows": "/o2oa/evn-o2server-jvm/-/archive/master/evn-o2server-jvm-master.tar.gz?path=jvm/windows"
  51. };
  52. var scripts = {
  53. "all": ["o2server/*.sh", "o2server/*.jar", "o2server/*.html", "o2server/*.bat", "o2server/version.o2"],
  54. "linux": ["o2server/*linux*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"],
  55. "aix": ["o2server/*aix*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"],
  56. "arm": ["o2server/*arm*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"],
  57. "macos": ["o2server/*macos*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"],
  58. "risc": ["o2server/*risc*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"],
  59. "raspi": ["o2server/*raspi*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"],
  60. "windows": ["o2server/*windows*", "o2server/*.jar", "o2server/*.html", "o2server/version.o2"]
  61. };
  62. var o_options = minimist(process.argv.slice(2), {//upload: local ftp or sftp
  63. string: ["e", "lp"]
  64. });
  65. var options = {};
  66. options.ev = o_options.e || "all";
  67. options.lp = o_options.lp || "zh-cn";
  68. var jvmUrl = jvmUrls[options.ev];
  69. var scriptSource = scripts[options.ev];
  70. function ProgressBar(description, bar_length){
  71. this.description = description || 'Progress';
  72. this.length = bar_length || 50;
  73. this.render = function (opts){
  74. var percent = (opts.completed / opts.total).toFixed(4);
  75. var cell_num = Math.floor(percent * this.length);
  76. var speed = "";
  77. if (opts.time){
  78. speed = (opts.completed/1024/1024)/(opts.time/1000);
  79. speed = speed.toFixed(2);
  80. speed = speed+"M/S";
  81. }
  82. var count = "";
  83. if (opts.count){
  84. count = "["+opts.count+"/"+opts.total+"]"
  85. }
  86. var cell = '';
  87. for (var i=0;i<cell_num;i++) { cell += '>'; }
  88. var empty = '';
  89. for (var i=0;i<this.length-cell_num;i++) { empty += '='; }
  90. if (opts.completed <= opts.total){
  91. var d = new Date();
  92. var cmdText = "["+dateFormat(d, "HH:MM:ss")+"]"+" "+this.description + ': ' + cell + empty + ' ' + (100*percent).toFixed(2) + '% '+speed+count;
  93. slog(cmdText);
  94. }
  95. };
  96. }
  97. function downloadFile_progress(path, filename, headcb, progresscb, cb){
  98. var dest = `o2server/${filename}`;
  99. // fs.exists(dest, function(exists) {
  100. // if (exists){
  101. // headcb(1);
  102. // progresscb({transferred:1});
  103. // cb();
  104. // }else{
  105. let stream = fs.createWriteStream(dest);
  106. var options = { url:protocol+"://"+downloadHost+path };
  107. var fileHost = downloadHost;
  108. var filePath = path;
  109. stream.on('finish', () => {
  110. //gutil.log("download", ":", gutil.colors.green(filename), " completed!");
  111. cb();
  112. });
  113. stream.on('error', (err) => {
  114. gutil.log(gutil.colors.red("download error"), ":", gutil.colors.red(filename), err);
  115. });
  116. var req = http.request({
  117. host:fileHost,
  118. path:filePath,
  119. method:'HEAD'
  120. },function (res){
  121. if (res.statusCode == 200) {
  122. res.setEncoding(null);
  123. var time = 0;
  124. var l = res.headers['content-length'];
  125. var str = progress({
  126. length: l,
  127. time: 100 /* ms */
  128. });
  129. headcb(l);
  130. str.on('progress', function(progress) {
  131. if (pb){
  132. progresscb(progress);
  133. pb.render({ completed: currentLength, total: totalLength, time: time+=100 });
  134. }
  135. });
  136. request.get(options).pipe(str).pipe(stream);
  137. } else {
  138. gutil.log(gutil.colors.red("download error"), ":", gutil.colors.red(filename), "statusCode:"+res.statusCode);
  139. }
  140. })
  141. req.on('error', (e) => {
  142. gutil.log(gutil.colors.red("download error"), ":", gutil.colors.red(filename), e);
  143. });
  144. req.end();
  145. // }
  146. //});
  147. }
  148. function downloadFile(path, filename, headcb, progresscb, cb){
  149. var dest = `o2server/${filename}`;
  150. // fs.exists(dest, function(exists) {
  151. // if (exists){
  152. // headcb(1);
  153. // progresscb({transferred:1});
  154. // cb();
  155. // }else{
  156. let stream = fs.createWriteStream(dest);
  157. var options = { url:protocol+"://"+downloadHost+path };
  158. var fileHost = downloadHost;
  159. var filePath = path;
  160. stream.on('finish', () => {
  161. //gutil.log("download", ":", gutil.colors.green(filename), " completed!");
  162. cb();
  163. });
  164. stream.on('error', (err) => {
  165. gutil.log(gutil.colors.red("download error"), ":", gutil.colors.red(filename), err);
  166. });
  167. // var req = http.request({
  168. // host:fileHost,
  169. // path:filePath,
  170. // method:'HEAD'
  171. // },function (res){
  172. // if (res.statusCode == 200) {
  173. // res.setEncoding(null);
  174. // var time = 0;
  175. // var l = res.headers['content-length'];
  176. // var str = progress({
  177. // length: l,
  178. // time: 100 /* ms */
  179. // });
  180. // headcb(l);
  181. //
  182. // str.on('progress', function(progress) {
  183. // if (pb){
  184. // progresscb(progress);
  185. // pb.render({ completed: currentLength, total: totalLength, time: time+=100 });
  186. // }
  187. //
  188. // });
  189. request.get(options).pipe(stream);
  190. // } else {
  191. // gutil.log(gutil.colors.red("download error"), ":", gutil.colors.red(filename), "statusCode:"+res.statusCode);
  192. // }
  193. // })
  194. // req.on('error', (e) => {
  195. // gutil.log(gutil.colors.red("download error"), ":", gutil.colors.red(filename), e);
  196. // });
  197. // req.end();
  198. // }
  199. //});
  200. }
  201. var commonsLength = 0;
  202. var jvmLenght = 0;
  203. var totalLength = 0;
  204. var currentLength = 0;
  205. var commonsCurrentLength = 0;
  206. var jvmCurrentLength = 0;
  207. var pb = null;
  208. function initProgress(){
  209. if (commonsLength && jvmLenght){
  210. totalLength = +commonsLength + jvmLenght;
  211. var t = (totalLength/1024/1024).toFixed(2);
  212. pb = new ProgressBar('total: '+t+"M", 50);
  213. }
  214. }
  215. function download_commons_and_jvm(cb){
  216. gutil.log(gutil.colors.green("begin download commons and jvm"));
  217. console.log(`---------------------------------------------------------------------
  218. . Start to download the dependencies needed for compilation ...
  219. ---------------------------------------------------------------------`);
  220. var downloader = new Promise((resolve, reject) => {
  221. var commonLoaded = false;
  222. var jvmLoaded = false;
  223. downloadFile(commonUrl, "commons_git.tar.gz", (length)=>{
  224. commonsLength = +length;
  225. initProgress();
  226. }, (progress)=>{
  227. commonsCurrentLength = progress.transferred;
  228. currentLength = +commonsCurrentLength+jvmCurrentLength;
  229. }, ()=>{
  230. commonLoaded = true;
  231. if (jvmLoaded && commonLoaded) resolve();
  232. });
  233. // var jvmName = jvmUrl.substr(jvmUrl.lastIndexOf("/"+1, jvmUrl.length));
  234. // console.log(jvmName);
  235. // console.log(jvmUrl);
  236. downloadFile(jvmUrl, "jvm_git.tar.gz", (length)=>{
  237. jvmLenght = +length;
  238. initProgress();
  239. }, (progress)=>{
  240. jvmCurrentLength = progress.transferred;
  241. currentLength = +commonsCurrentLength+jvmCurrentLength;
  242. }, ()=>{
  243. jvmLoaded = true;
  244. if (jvmLoaded && commonLoaded) resolve();
  245. });
  246. });
  247. downloader.then(()=>{
  248. //console.log();
  249. gutil.log(gutil.colors.green("download commons and jvm completed"));
  250. cb();
  251. });
  252. }
  253. function decompress_commons_and_jvm(cb){
  254. console.log(`---------------------------------------------------------------------
  255. . Start to decompress the dependencies needed for compilation ...
  256. ---------------------------------------------------------------------`);
  257. gutil.log(gutil.colors.green("begin decompress commons and jvm"));
  258. var count =0;
  259. var decompressor = new Promise((resolve, reject) => {
  260. var commonUnziped = false;
  261. var jvmUnziped = false;
  262. targz.decompress({
  263. src: 'o2server/commons_git.tar.gz',
  264. dest: 'o2server',
  265. tar: {map: function(header){
  266. count++;
  267. var d = new Date();
  268. slog("["+dateFormat(d, "HH:MM:ss")+"] " + count +" "+ header.name+" ...");
  269. //gutil.log(gutil.colors.cyan(header.name), gutil.colors.yellow("..."));
  270. }}
  271. }, function(err){
  272. if(err) {
  273. gutil.log(gutil.colors.red("decompress error"), ":", gutil.colors.red("common.tar.gz "), err);
  274. } else {
  275. commonUnziped = true;
  276. if (jvmUnziped && commonUnziped) resolve();
  277. }
  278. });
  279. targz.decompress({
  280. src: 'o2server/jvm_git.tar.gz',
  281. dest: 'o2server',
  282. tar: {map: function(header){
  283. count++;
  284. var d = new Date();
  285. slog("["+dateFormat(d, "HH:MM:ss")+"] " + count +" "+ header.name+" ...");
  286. //slog(count +" "+ header.name+" ...");
  287. //gutil.log(gutil.colors.cyan(header.name), gutil.colors.yellow("..."));
  288. }}
  289. }, function(err){
  290. if(err) {
  291. gutil.log(gutil.colors.red("decompress error"), ":", gutil.colors.red("jvm.tar.gz "), err);
  292. } else {
  293. jvmUnziped = true;
  294. if (jvmUnziped && commonUnziped) resolve();
  295. }
  296. });
  297. });
  298. decompressor.then(()=>{
  299. gutil.log(gutil.colors.green("decompress commons and jvm completed. " + count+" files"));
  300. cb();
  301. });
  302. }
  303. function move_commons(){
  304. console.log(`---------------------------------------------------------------------
  305. . move commons files to o2server/commons ...
  306. ---------------------------------------------------------------------`);
  307. return gulp.src("o2server/evn-o2server-commons-master-commons/commons/**/*")
  308. .pipe(gulp.dest("o2server/commons/"));
  309. }
  310. function move_jvm(){
  311. console.log(`---------------------------------------------------------------------
  312. . move jvm files to o2server/jvm ...
  313. ---------------------------------------------------------------------`);
  314. var path;
  315. if (options.ev=="all"){
  316. path = "o2server/evn-o2server-jvm-master-jvm/jvm/**/*"
  317. }else{
  318. path = "o2server/evn-o2server-jvm-master-jvm-"+options.ev+"/jvm/**/*"
  319. }
  320. return gulp.src(path)
  321. .pipe(gulp.dest("o2server/jvm/"));
  322. }
  323. function clear_commons_git(cb){
  324. var dest = ['o2server/evn-o2server-commons-master-commons/', 'o2server/commons_git.tar.gz'];
  325. del(dest, { force: true });
  326. cb();
  327. }
  328. function clear_jvm_git(cb){
  329. var path;
  330. if (options.ev=="all"){
  331. path = "o2server/evn-o2server-jvm-master-jvm/"
  332. }else{
  333. path = "o2server/evn-o2server-jvm-master-jvm-"+options.ev+"/"
  334. }
  335. del([path, 'o2server/jvm_git.tar.gz'], { force: true });
  336. cb();
  337. }
  338. function build_web_minimize(cb) {
  339. console.log(`---------------------------------------------------------------------
  340. . Start compiling the web ...
  341. ---------------------------------------------------------------------`);
  342. var dest = 'target/o2server/servers/webServer/';
  343. var src_min = ['o2web/source/**/*.js', '!o2web/source/o2_core/o2.js', '!**/*.spec.js', '!**/test/**', '!o2web/source/o2_lib/**/*'];
  344. var entries = fg.sync(src_min, { dot: false});
  345. var size = entries.length;
  346. var pb = new ProgressBar('', 50);
  347. var doCount = 0;
  348. var stream = gulp.src(src_min);
  349. stream.on("end", ()=>{console.log();});
  350. return stream.pipe(uglify())
  351. .pipe(rename({ extname: '.min.js' }))
  352. .pipe(gulp.dest(dest))
  353. .pipe(logger(function(){
  354. doCount++;
  355. if (doCount <= size){pb.render({ completed: doCount, total: size, count: doCount})};
  356. }))
  357. .pipe(gutil.noop());
  358. }
  359. function build_web_move() {
  360. var dest = 'target/o2server/servers/webServer/';
  361. var src_move = ['o2web/source/**/*', '!o2web/source/o2_core/o2.js', '!**/*.spec.js', '!**/test/**'];
  362. var entries = fg.sync(src_move, { dot: false});
  363. var size = entries.length;
  364. var pb = new ProgressBar('', 50);
  365. var doCount = 0;
  366. var stream = gulp.src(src_move);
  367. stream.on("end", ()=>{console.log();});
  368. return stream.pipe(gulp.dest(dest))
  369. .pipe(logger(function(){
  370. doCount++;
  371. if (doCount <= size) {pb.render({ completed: doCount, total: size, count: doCount})};
  372. }))
  373. .pipe(gutil.noop());
  374. }
  375. exports.build_web_move = build_web_move;
  376. function build_concat_o2(){
  377. var src = [
  378. 'o2web/source/o2_lib/mootools/mootools-1.6.0_all.js',
  379. 'o2web/source/o2_lib/mootools/plugin/mBox.js',
  380. 'o2web/source/o2_core/o2.js'
  381. ];
  382. var dest = 'target/o2server/servers/webServer/o2_core/';
  383. return gulp.src(src)
  384. .pipe(sourceMap.init())
  385. .pipe(concat('o2.js'))
  386. .pipe(gulp.dest(dest))
  387. .pipe(concat('o2.min.js'))
  388. .pipe(uglify())
  389. //.pipe(rename({ extname: '.min.js' }))
  390. .pipe(sourceMap.write(""))
  391. .pipe(gulp.dest(dest))
  392. }
  393. function build_concat_base(){
  394. var src = [
  395. 'o2web/source/x_desktop/js/base.js'
  396. ];
  397. var dest = 'target/o2server/servers/webServer/x_desktop/js/';
  398. return gulp.src(src)
  399. .pipe(sourceMap.init())
  400. //.pipe(concat('o2.js'))
  401. .pipe(gulp.dest(dest))
  402. .pipe(concat('base.min.js'))
  403. .pipe(uglify())
  404. //.pipe(rename({ extname: '.min.js' }))
  405. .pipe(sourceMap.write(""))
  406. .pipe(gulp.dest(dest))
  407. }
  408. function build_concat_desktop(){
  409. let path = "o2_core";
  410. var src = [
  411. 'o2web/source/'+path+'/o2/widget/Common.js',
  412. 'o2web/source/'+path+'/o2/widget/Dialog.js',
  413. 'o2web/source/'+path+'/o2/widget/UUID.js',
  414. 'o2web/source/'+path+'/o2/xDesktop/Common.js',
  415. 'o2web/source/'+path+'/o2/xDesktop/Actions/RestActions.js',
  416. 'o2web/source/'+path+'/o2/xAction/RestActions.js',
  417. 'o2web/source/'+path+'/o2/xDesktop/Access.js',
  418. 'o2web/source/'+path+'/o2/xDesktop/Dialog.js',
  419. 'o2web/source/'+path+'/o2/xDesktop/Menu.js',
  420. 'o2web/source/'+path+'/o2/xDesktop/UserData.js',
  421. 'o2web/source/x_component_Template/MPopupForm.js',
  422. 'o2web/source/'+path+'/o2/xDesktop/Authentication.js',
  423. 'o2web/source/'+path+'/o2/xDesktop/Dialog.js',
  424. 'o2web/source/'+path+'/o2/xDesktop/Window.js',
  425. 'o2web/source/x_component_Common/Main.js'
  426. ];
  427. var dest = 'target/o2server/servers/webServer/o2_core/o2/xDesktop/';
  428. return gulp.src(src)
  429. .pipe(sourceMap.init())
  430. .pipe(concat('$all.js'))
  431. .pipe(gulp.dest(dest))
  432. .pipe(concat('$all.min.js'))
  433. .pipe(uglify())
  434. //.pipe(rename({ extname: '.min.js' }))
  435. .pipe(sourceMap.write(""))
  436. .pipe(gulp.dest(dest))
  437. }
  438. function build_concat_xform(){
  439. let path = "x_component_process_Xform";
  440. var src = [
  441. 'o2web/source/o2_core/o2/widget/AttachmentController.js',
  442. 'o2web/source/o2_core/o2/xScript/Macro.js',
  443. 'o2web/source/o2_core/o2/widget/Tab.js',
  444. 'o2web/source/o2_core/o2/widget/O2Identity.js',
  445. 'o2web/source/' + path + '/Form.js',
  446. 'o2web/source/' + path + '/$Module.js',
  447. 'o2web/source/' + path + '/$Input.js',
  448. 'o2web/source/' + path + '/Div.js',
  449. 'o2web/source/' + path + '/Combox.js',
  450. 'o2web/source/' + path + '/DatagridMobile.js',
  451. 'o2web/source/' + path + '/DatagridPC.js',
  452. 'o2web/source/' + path + '/Textfield.js',
  453. 'o2web/source/' + path + '/Personfield.js',
  454. 'o2web/source/' + path + '/Button.js',
  455. 'o2web/source/' + path + '/ViewSelector.js',
  456. 'o2web/source/' + path + '/*.js',
  457. 'o2web/source/x_component_process_Work/Processor.js',
  458. '!o2web/source/' + path + '/Office.js'
  459. ];
  460. var dest = 'target/o2server/servers/webServer/'+path+'/';
  461. return gulp.src(src)
  462. .pipe(sourceMap.init())
  463. .pipe(concat('$all.js'))
  464. .pipe(gulp.dest(dest))
  465. .pipe(concat('$all.min.js'))
  466. .pipe(uglify())
  467. //.pipe(rename({ extname: '.min.js' }))
  468. .pipe(sourceMap.write(""))
  469. .pipe(gulp.dest(dest))
  470. }
  471. function build_bundle(){
  472. let path = "o2_core";
  473. var src = [
  474. 'o2web/source/o2_lib/mootools/mootools-1.6.0_all.js',
  475. 'o2web/source/o2_lib/mootools/plugin/mBox.js',
  476. 'o2web/source/o2_core/o2.js',
  477. 'o2web/source/x_desktop/js/base.js',
  478. "o2web/source/o2_core/o2/framework.js"
  479. ];
  480. var dest = 'target/o2server/servers/webServer/'+path+'/';
  481. return gulp.src(src)
  482. .pipe(sourceMap.init())
  483. .pipe(concat('bundle.js'))
  484. .pipe(gulp.dest(dest))
  485. .pipe(concat('bundle.min.js'))
  486. .pipe(uglify())
  487. //.pipe(rename({ extname: '.min.js' }))
  488. .pipe(sourceMap.write(""))
  489. .pipe(gulp.dest(dest))
  490. }
  491. function concat_Actions(){
  492. return through2.obj(function (file, enc, cb) {
  493. if (file.isNull()) {
  494. this.push(file);
  495. return cb();
  496. }
  497. if (file.isStream()) {
  498. this.emit('error', new gutil.PluginError(PLUGIN_NAME, 'Streaming not supported'));
  499. return cb();
  500. }
  501. var content = file.contents.toString();
  502. var o = path.parse(file.path);
  503. var name = o.name;
  504. content = "var actionJson = "+content;
  505. content = content+"\nif (!o2.xAction.RestActions.Action[\""+name+"\"]) o2.xAction.RestActions.Action[\""+name+"\"] = new Class({Extends: o2.xAction.RestActions.Action});";
  506. content = content+"\no2.Actions.actions[\""+name+"\"] = new o2.xAction.RestActions.Action[\""+name+"\"](\""+name+"\", actionJson);";
  507. file.contents = new Buffer.from(content);
  508. this.push(file);
  509. cb();
  510. });
  511. }
  512. function concat_Style(){
  513. return through2.obj(function (file, enc, cb) {
  514. if (file.isNull()) {
  515. this.push(file);
  516. return cb();
  517. }
  518. if (file.isStream()) {
  519. this.emit('error', new gutil.PluginError(PLUGIN_NAME, 'Streaming not supported'));
  520. return cb();
  521. }
  522. var content = file.contents.toString();
  523. var name = file.path.replace(process.cwd(), "").replace(/\\/g, "/")
  524. name = ".."+name.substring(name.indexOf("/source")+7);
  525. content = "var csskey = encodeURIComponent(\""+name+"\");\no2.widget.css[csskey]="+content;
  526. file.contents = new Buffer.from(content);
  527. this.push(file);
  528. cb();
  529. });
  530. }
  531. function build_concat_basework_style(){
  532. return gulp.src([
  533. "o2web/source/x_component_process_Work/$Main/default/css.wcss",
  534. "o2web/source/x_component_process_Xform/$Form/default/css.wcss",
  535. "o2web/source/o2_core/o2/widget/$Tab/mobileForm/css.wcss",
  536. "o2web/source/o2_core/o2/widget/$Menu/tab/css.wcss",
  537. "o2web/source/o2_core/o2/widget/$Tab/form/css.wcss",
  538. "o2web/source/x_component_process_Xform/$Form/default/doc.wcss",
  539. "o2web/source/o2_core/o2/widget/$Toolbar/documentEdit/css.wcss",
  540. "o2web/source/o2_core/o2/widget/$Toolbar/documentEdit_side/css.wcss",
  541. "o2web/source/x_component_process_Xform/$Form/default/css.wcss"
  542. ])
  543. .pipe(concat_Style())
  544. .pipe(concat('js/base_work_style_temp.js'))
  545. .pipe(gulp.dest('o2web/source/x_desktop/'));
  546. }
  547. function build_concat_basework_action(){
  548. return gulp.src([
  549. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.json",
  550. "o2web/source/o2_core/o2/xAction/services/x_processplatform_assemble_surface.json",
  551. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.json",
  552. "o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.json",
  553. "o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.json",
  554. "o2web/source/o2_core/o2/xAction/services/x_program_center.json",
  555. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.json"
  556. ])
  557. .pipe(concat_Actions())
  558. .pipe(concat('js/base_work_actions_temp.js'))
  559. .pipe(gulp.dest('o2web/source/x_desktop/'));
  560. }
  561. function build_concat_basework_clean(cb) {
  562. var dest = [
  563. 'o2web/source/x_desktop/js/base_work_actions_temp.js',
  564. 'o2web/source/x_desktop/js/base_work_style_temp.js'
  565. ];
  566. return del(dest, cb);
  567. }
  568. function build_concat_basework_body() {
  569. var src = [
  570. 'o2web/source/x_desktop/js/base_concat_head.js',
  571. 'o2web/source/o2_core/o2/lp/'+(options.lp || 'zh-cn')+'.js',
  572. 'o2web/source/x_desktop/js/base_work_style_temp.js',
  573. 'o2web/source/o2_core/o2/widget/Common.js',
  574. 'o2web/source/o2_core/o2/widget/Dialog.js',
  575. 'o2web/source/o2_core/o2/widget/UUID.js',
  576. 'o2web/source/o2_core/o2/widget/Menu.js',
  577. 'o2web/source/o2_core/o2/widget/Toolbar.js',
  578. 'o2web/source/o2_core/o2/xDesktop/Common.js',
  579. 'o2web/source/o2_core/o2/xDesktop/Actions/RestActions.js',
  580. 'o2web/source/o2_core/o2/xAction/RestActions.js',
  581. 'o2web/source/o2_core/o2/xDesktop/Access.js',
  582. 'o2web/source/o2_core/o2/xDesktop/Dialog.js',
  583. 'o2web/source/o2_core/o2/xDesktop/Menu.js',
  584. 'o2web/source/o2_core/o2/xDesktop/UserData.js',
  585. 'o2web/source/x_component_Template/MPopupForm.js',
  586. 'o2web/source/o2_core/o2/xDesktop/Authentication.js',
  587. 'o2web/source/o2_core/o2/xDesktop/Dialog.js',
  588. 'o2web/source/o2_core/o2/xDesktop/Window.js',
  589. 'o2web/source/x_component_Common/Main.js',
  590. 'o2web/source/o2_core/o2/lp/'+(options.lp || 'zh-cn')+'.js',
  591. 'o2web/source/x_component_process_Work/lp/'+(options.lp || 'zh-cn')+'.js',
  592. 'o2web/source/x_component_process_Xform/lp/'+(options.lp || 'zh-cn')+'.js',
  593. 'o2web/source/x_component_Selector/lp/'+(options.lp || 'zh-cn')+'.js',
  594. 'o2web/source/x_component_process_Work/Main.js',
  595. 'o2web/source/x_component_Selector/package.js',
  596. 'o2web/source/x_component_Selector/Person.js',
  597. 'o2web/source/x_component_Selector/Identity.js',
  598. 'o2web/source/x_component_Selector/Unit.js',
  599. 'o2web/source/x_component_Selector/IdentityWidthDuty.js',
  600. 'o2web/source/x_component_Selector/IdentityWidthDutyCategoryByUnit.js',
  601. 'o2web/source/x_component_Selector/UnitWithType.js',
  602. 'o2web/source/o2_core/o2/xScript/Actions/UnitActions.js',
  603. 'o2web/source/o2_core/o2/xScript/Actions/ScriptActions.js',
  604. 'o2web/source/o2_core/o2/xScript/Actions/CMSScriptActions.js',
  605. 'o2web/source/o2_core/o2/xScript/Actions/PortalScriptActions.js',
  606. 'o2web/source/o2_core/o2/xScript/Environment.js',
  607. 'o2web/source/x_component_Template/MTooltips.js',
  608. 'o2web/source/x_component_Template/MSelector.js',
  609. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.js',
  610. 'o2web/source/o2_core/o2/xAction/services/x_processplatform_assemble_surface.js',
  611. 'o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.js',
  612. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.js',
  613. 'o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.js',
  614. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.js',
  615. 'o2web/source/x_desktop/js/base_work_actions_temp.js',
  616. 'o2web/source/x_desktop/js/base.js'
  617. ];
  618. var dest = 'target/o2server/servers/webServer/x_desktop/js/';
  619. return gulp.src(src)
  620. .pipe(sourceMap.init())
  621. .pipe(concat('base_work.js'))
  622. .pipe(gulp.dest(dest))
  623. .pipe(concat('base_work.min.js'))
  624. .pipe(uglify())
  625. //.pipe(rename({ extname: '.min.js' }))
  626. .pipe(sourceMap.write(""))
  627. .pipe(gulp.dest(dest));
  628. }
  629. function build_concat_baseportal_style(){
  630. return gulp.src([
  631. "o2web/source/x_component_process_Work/$Main/default/css.wcss",
  632. "o2web/source/x_component_portal_Portal/$Main/default/css.wcss",
  633. "o2web/source/x_component_process_Xform/$Form/default/css.wcss",
  634. "o2web/source/o2_core/o2/widget/$Tab/mobileForm/css.wcss",
  635. "o2web/source/o2_core/o2/widget/$Menu/tab/css.wcss",
  636. ])
  637. .pipe(concat_Style())
  638. .pipe(concat('js/base_portal_style_temp.js'))
  639. .pipe(gulp.dest('o2web/source/x_desktop/'));
  640. }
  641. function build_concat_baseportal_action(){
  642. return gulp.src([
  643. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.json",
  644. "o2web/source/o2_core/o2/xAction/services/x_portal_assemble_surface.json",
  645. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.json",
  646. "o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.json",
  647. "o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.json",
  648. "o2web/source/o2_core/o2/xAction/services/x_program_center.json",
  649. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.json"
  650. ])
  651. .pipe(concat_Actions())
  652. .pipe(concat('js/base_portal_actions_temp.js'))
  653. .pipe(gulp.dest('o2web/source/x_desktop/'));
  654. }
  655. function build_concat_baseportal_clean(cb) {
  656. var dest = [
  657. 'o2web/source/x_desktop/js/base_portal_actions_temp.js',
  658. 'o2web/source/x_desktop/js/base_portal_style_temp.js'
  659. ];
  660. return del(dest, cb);
  661. }
  662. function build_concat_baseportal_body() {
  663. var src = [
  664. 'o2web/source/x_desktop/js/base_concat_head.js',
  665. 'o2web/source/o2_core/o2/lp/'+(options.lp || 'zh-cn')+'.js',
  666. 'o2web/source/x_desktop/js/base_portal_style_temp.js',
  667. 'o2web/source/o2_core/o2/widget/Common.js',
  668. 'o2web/source/o2_core/o2/widget/Dialog.js',
  669. 'o2web/source/o2_core/o2/widget/UUID.js',
  670. 'o2web/source/o2_core/o2/widget/Menu.js',
  671. 'o2web/source/o2_core/o2/widget/Toolbar.js',
  672. 'o2web/source/o2_core/o2/xDesktop/Common.js',
  673. 'o2web/source/o2_core/o2/xDesktop/Actions/RestActions.js',
  674. 'o2web/source/o2_core/o2/xAction/RestActions.js',
  675. 'o2web/source/o2_core/o2/xDesktop/Access.js',
  676. 'o2web/source/o2_core/o2/xDesktop/Dialog.js',
  677. 'o2web/source/o2_core/o2/xDesktop/Menu.js',
  678. 'o2web/source/o2_core/o2/xDesktop/UserData.js',
  679. 'o2web/source/x_component_Template/MPopupForm.js',
  680. 'o2web/source/o2_core/o2/xDesktop/Authentication.js',
  681. 'o2web/source/o2_core/o2/xDesktop/Window.js',
  682. 'o2web/source/x_component_Common/Main.js',
  683. 'o2web/source/x_component_process_Work/lp/'+(options.lp || 'zh-cn')+'.js',
  684. 'o2web/source/x_component_portal_Portal/lp/'+(options.lp || 'zh-cn')+'.js',
  685. 'o2web/source/x_component_process_Xform/lp/'+(options.lp || 'zh-cn')+'.js',
  686. 'o2web/source/x_component_Selector/lp/'+(options.lp || 'zh-cn')+'.js',
  687. 'o2web/source/x_component_portal_Portal/Main.js',
  688. 'o2web/source/x_component_Selector/package.js',
  689. 'o2web/source/x_component_Selector/Person.js',
  690. 'o2web/source/x_component_Selector/Identity.js',
  691. 'o2web/source/x_component_Selector/Unit.js',
  692. 'o2web/source/x_component_Selector/IdentityWidthDuty.js',
  693. 'o2web/source/x_component_Selector/IdentityWidthDutyCategoryByUnit.js',
  694. 'o2web/source/x_component_Selector/UnitWithType.js',
  695. 'o2web/source/o2_core/o2/xScript/Actions/UnitActions.js',
  696. 'o2web/source/o2_core/o2/xScript/Actions/ScriptActions.js',
  697. 'o2web/source/o2_core/o2/xScript/Actions/CMSScriptActions.js',
  698. 'o2web/source/o2_core/o2/xScript/Actions/PortalScriptActions.js',
  699. 'o2web/source/o2_core/o2/xScript/PageEnvironment.js',
  700. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.js',
  701. 'o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.js',
  702. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.js',
  703. 'o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.js',
  704. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.js',
  705. 'o2web/source/x_desktop/js/base_portal_actions_temp.js',
  706. 'o2web/source/x_desktop/js/base.js'
  707. ];
  708. var dest = 'target/o2server/servers/webServer/x_desktop/js/';
  709. return gulp.src(src)
  710. .pipe(sourceMap.init())
  711. .pipe(concat('base_portal.js'))
  712. .pipe(gulp.dest(dest))
  713. .pipe(concat('base_portal.min.js'))
  714. .pipe(uglify())
  715. //.pipe(rename({ extname: '.min.js' }))
  716. .pipe(sourceMap.write(""))
  717. .pipe(gulp.dest(dest));
  718. }
  719. exports.build_concat = gulp.parallel(
  720. build_concat_o2,
  721. build_concat_base,
  722. build_concat_desktop,
  723. build_concat_xform,
  724. build_bundle,
  725. gulp.series(build_concat_basework_style, build_concat_basework_action, build_concat_basework_body,build_concat_basework_clean),
  726. gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean)
  727. );
  728. function build_web_v_html() {
  729. var src = 'o2web/source/x_desktop/*.html';
  730. var dest = 'target/o2server/servers/webServer/x_desktop/';
  731. return gulp.src(src)
  732. .pipe(assetRev())
  733. .pipe(gulp.dest(dest))
  734. .pipe(gutil.noop());
  735. }
  736. function build_web_v_o2() {
  737. var src = 'target/o2server/servers/webServer/o2_core//o2.js';
  738. var dest = 'target/o2server/servers/webServer/o2_core/';
  739. return gulp.src(src)
  740. .pipe(assetRev())
  741. .pipe(gulp.dest(dest))
  742. .pipe(uglify())
  743. .pipe(rename({ extname: '.min.js' }))
  744. .pipe(gulp.dest(dest))
  745. .pipe(gutil.noop());
  746. }
  747. function clear_build(cb){
  748. console.log(`---------------------------------------------------------------------
  749. . clear old build ...
  750. ---------------------------------------------------------------------`);
  751. var dest = 'target';
  752. del(dest, { force: true });
  753. cb();
  754. }
  755. function clear_deploy(cb){
  756. console.log(`---------------------------------------------------------------------
  757. . clear old deploy ...
  758. ---------------------------------------------------------------------`);
  759. var dest = ["target/o2server/store/", "target/o2server/commons/", "target/o2server/jvm/", "target/o2server/configSample/", "target/o2server/localSample/", "target/o2server/servers/"];
  760. dest = dest.concat(["target/o2server/*.sh", "target/o2server/*.jar", "target/o2server/*.html", "target/o2server/*.bat", "target/o2server/version.o2"]);
  761. del(dest, { force: true });
  762. cb();
  763. }
  764. exports.clear_build = clear_build;
  765. exports.clear_deploy = clear_deploy;
  766. function deploy_server(){
  767. console.log(`---------------------------------------------------------------------
  768. . deploy to target ...
  769. ---------------------------------------------------------------------`);
  770. var source = ["o2server/*store/**/*", "o2server/*commons/**/*", "o2server/*jvm/**/*", "o2server/*configSample/**/*", "o2server/*localSample/**/*"];
  771. source = source.concat(scriptSource);
  772. console.log(source)
  773. var dest = "target/o2server/"
  774. var entries = fg.sync(source, { dot: false});
  775. var size = entries.length;
  776. var pb = new ProgressBar('', 50);
  777. var doCount = 0;
  778. var stream = gulp.src(source);
  779. stream.on("end", ()=>{console.log();});
  780. return stream.pipe(gulp.dest(dest))
  781. .pipe(logger(function(){
  782. doCount++;
  783. if (doCount <= size) {pb.render({ completed: doCount, total: size, count: doCount})};
  784. }));
  785. }
  786. exports.preperation = gulp.series(download_commons_and_jvm, decompress_commons_and_jvm, move_commons, move_jvm, clear_commons_git, clear_jvm_git);
  787. var shell = require('gulp-shell')
  788. exports.build_server = function(){
  789. console.log(`---------------------------------------------------------------------
  790. . Start compiling the server ...
  791. ---------------------------------------------------------------------`);
  792. return (shell.task('npm run build_server_script'))();
  793. };
  794. function chmod_jvm(){
  795. return (shell.task('chmod 777 -R target/o2server/jvm'))();
  796. }
  797. function chmod_commons(){
  798. return (shell.task('chmod 777 -R target/o2server/commons'))();
  799. }
  800. function chmod_sh(){
  801. return (shell.task('chmod 777 target/o2server/*.sh'))();
  802. }
  803. function chmod_servers(){
  804. return (shell.task('chmod 777 -R target/o2server/servers'))();
  805. }
  806. exports.build_web = gulp.series(
  807. build_web_minimize,
  808. build_web_move,
  809. gulp.parallel(
  810. build_concat_o2,
  811. build_concat_base,
  812. build_concat_desktop,
  813. build_concat_xform,
  814. gulp.series(build_concat_basework_style, build_concat_basework_action, build_concat_basework_body,build_concat_basework_clean),
  815. gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean),
  816. build_bundle
  817. ),
  818. build_web_v_html,
  819. build_web_v_o2);
  820. if (os.platform().indexOf("win")==-1){
  821. exports.deploy = gulp.series(deploy_server, chmod_jvm, chmod_commons, chmod_sh, chmod_servers);
  822. }else{
  823. exports.deploy = gulp.series(deploy_server);
  824. }