gulpfile.js 34 KB

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