gulpfile.js 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856
  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. name = ".."+file.path.replace(process.cwd(), "").replace(/\\/g, "/").substring("/source".length);
  496. content = "var csskey = encodeURIComponent(\""+name+"\");\no2.widget.css[csskey]="+content;
  497. file.contents = new Buffer.from(content);
  498. this.push(file);
  499. cb();
  500. });
  501. }
  502. function build_concat_basework_style(){
  503. return gulp.src([
  504. "o2web/source/x_component_process_Work/$Main/default/css.wcss",
  505. "o2web/source/x_component_process_Xform/$Form/default/css.wcss"
  506. ])
  507. .pipe(concat_Style())
  508. .pipe(concat('js/base_work_style_temp.js'))
  509. .pipe(gulp.dest('o2web/source/x_desktop/'));
  510. }
  511. function build_concat_basework_action(){
  512. return gulp.src([
  513. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.json",
  514. "o2web/source/o2_core/o2/xAction/services/x_processplatform_assemble_surface.json",
  515. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.json",
  516. "o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.json",
  517. "o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.json",
  518. "o2web/source/o2_core/o2/xAction/services/x_program_center.json",
  519. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.json"
  520. ])
  521. .pipe(concat_Actions())
  522. .pipe(concat('js/base_work_actions_temp.js'))
  523. .pipe(gulp.dest('o2web/source/x_desktop/'));
  524. }
  525. function build_concat_basework_clean(cb) {
  526. var dest = [
  527. 'o2web/source/x_desktop/js/base_work_actions_temp.js',
  528. 'o2web/source/x_desktop/js/base_work_style_temp.js'
  529. ];
  530. return del(dest, cb);
  531. }
  532. function build_concat_basework_body() {
  533. var src = [
  534. 'o2web/source/' + path + '/js/base_concat_head.js',
  535. 'o2web/source/o2_core/o2/lp/'+(options.lp || 'zh-cn')+'.js',
  536. 'o2web/source/x_component_process_Work/lp/'+(options.lp || 'zh-cn')+'.js',
  537. 'o2web/source/x_component_process_Xform/lp/'+(options.lp || 'zh-cn')+'.js',
  538. 'o2web/source/x_component_Selector/lp/'+(options.lp || 'zh-cn')+'.js',
  539. 'o2web/source/' + path + '/js/base_work_style_temp.js',
  540. 'o2web/source/o2_core/o2/widget/Common.js',
  541. 'o2web/source/o2_core/o2/widget/Dialog.js',
  542. 'o2web/source/o2_core/o2/widget/UUID.js',
  543. 'o2web/source/o2_core/o2/widget/Menu.js',
  544. 'o2web/source/o2_core/o2/widget/Toolbar.js',
  545. 'o2web/source/o2_core/o2/xDesktop/Common.js',
  546. 'o2web/source/o2_core/o2/xDesktop/Actions/RestActions.js',
  547. 'o2web/source/o2_core/o2/xAction/RestActions.js',
  548. 'o2web/source/o2_core/o2/xDesktop/Access.js',
  549. 'o2web/source/o2_core/o2/xDesktop/Dialog.js',
  550. 'o2web/source/o2_core/o2/xDesktop/Menu.js',
  551. 'o2web/source/o2_core/o2/xDesktop/UserData.js',
  552. 'o2web/source/x_component_Template/MPopupForm.js',
  553. 'o2web/source/o2_core/o2/xDesktop/Authentication.js',
  554. 'o2web/source/o2_core/o2/xDesktop/Dialog.js',
  555. 'o2web/source/o2_core/o2/xDesktop/Window.js',
  556. 'o2web/source/x_component_Common/Main.js',
  557. 'o2web/source/x_component_process_Work/Main.js',
  558. 'o2web/source/x_component_Selector/package.js',
  559. 'o2web/source/x_component_Selector/Person.js',
  560. 'o2web/source/x_component_Selector/Identity.js',
  561. 'o2web/source/x_component_Selector/Unit.js',
  562. 'o2web/source/x_component_Selector/IdentityWidthDuty.js',
  563. 'o2web/source/x_component_Selector/IdentityWidthDutyCategoryByUnit.js',
  564. 'o2web/source/x_component_Selector/UnitWithType.js',
  565. 'o2web/source/o2_core/o2/xScript/Actions/UnitActions.js',
  566. 'o2web/source/o2_core/o2/xScript/Actions/ScriptActions.js',
  567. 'o2web/source/o2_core/o2/xScript/Actions/CMSScriptActions.js',
  568. 'o2web/source/o2_core/o2/xScript/Actions/PortalScriptActions.js',
  569. 'o2web/source/o2_core/o2/xScript/Environment.js',
  570. 'o2web/source/x_component_Template/MTooltips.js',
  571. 'o2web/source/x_component_Template/MSelector.js',
  572. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.js',
  573. 'o2web/source/o2_core/o2/xAction/services/x_processplatform_assemble_surface.js',
  574. 'o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.js',
  575. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.js',
  576. 'o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.js',
  577. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.js',
  578. 'o2web/source/' + path + '/js/base_work_actions_temp.js',
  579. 'o2web/source/x_desktop/js/base.js'
  580. ];
  581. var dest = 'target/o2server/servers/webServer/x_desktop/js/';
  582. return gulp.src(src)
  583. .pipe(concat('base_work.js'))
  584. .pipe(gulp.dest(dest))
  585. .pipe(uglify())
  586. .pipe(rename({ extname: '.min.js' }))
  587. .pipe(gulp.dest(dest));
  588. }
  589. function build_concat_baseportal_style(){
  590. return gulp.src([
  591. "o2web/source/x_component_process_Work/$Main/default/css.wcss",
  592. "o2web/source/x_component_portal_Portal/$Main/default/css.wcss",
  593. "o2web/source/x_component_process_Xform/$Form/default/css.wcss"
  594. ])
  595. .pipe(concat_Style())
  596. .pipe(concat('js/base_portal_style_temp.js'))
  597. .pipe(gulp.dest('o2web/source/x_desktop/'));
  598. }
  599. function build_concat_baseportal_action(){
  600. return gulp.src([
  601. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.json",
  602. "o2web/source/o2_core/o2/xAction/services/x_portal_assemble_surface.json",
  603. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.json",
  604. "o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.json",
  605. "o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.json",
  606. "o2web/source/o2_core/o2/xAction/services/x_program_center.json",
  607. "o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.json"
  608. ])
  609. .pipe(concat_Actions())
  610. .pipe(concat('js/base_portal_actions_temp.js'))
  611. .pipe(gulp.dest('o2web/source/x_desktop/'));
  612. }
  613. function build_concat_baseportal_clean(cb) {
  614. var dest = [
  615. 'o2web/source/x_desktop/js/base_portal_actions_temp.js',
  616. 'o2web/source/x_desktop/js/base_portal_style_temp.js'
  617. ];
  618. return del(dest, cb);
  619. }
  620. function build_concat_baseportal_body() {
  621. var src = [
  622. 'o2web/source/x_desktop/js/base_concat_head.js',
  623. 'o2web/source/o2_core/o2/lp/'+(options.lp || 'zh-cn')+'.js',
  624. 'o2web/source/x_desktop/js/base_portal_style_temp.js',
  625. 'o2web/source/o2_core/o2/widget/Common.js',
  626. 'o2web/source/o2_core/o2/widget/Dialog.js',
  627. 'o2web/source/o2_core/o2/widget/UUID.js',
  628. 'o2web/source/o2_core/o2/widget/Menu.js',
  629. 'o2web/source/o2_core/o2/widget/Toolbar.js',
  630. 'o2web/source/o2_core/o2/xDesktop/Common.js',
  631. 'o2web/source/o2_core/o2/xDesktop/Actions/RestActions.js',
  632. 'o2web/source/o2_core/o2/xAction/RestActions.js',
  633. 'o2web/source/o2_core/o2/xDesktop/Access.js',
  634. 'o2web/source/o2_core/o2/xDesktop/Dialog.js',
  635. 'o2web/source/o2_core/o2/xDesktop/Menu.js',
  636. 'o2web/source/o2_core/o2/xDesktop/UserData.js',
  637. 'o2web/source/x_component_Template/MPopupForm.js',
  638. 'o2web/source/o2_core/o2/xDesktop/Authentication.js',
  639. 'o2web/source/o2_core/o2/xDesktop/Window.js',
  640. 'o2web/source/x_component_Common/Main.js',
  641. 'o2web/source/x_component_process_Work/lp/'+(options.lp || 'zh-cn')+'.js',
  642. 'o2web/source/x_component_portal_Portal/lp/'+(options.lp || 'zh-cn')+'.js',
  643. 'o2web/source/x_component_process_Xform/lp/'+(options.lp || 'zh-cn')+'.js',
  644. 'o2web/source/x_component_Selector/lp/'+(options.lp || 'zh-cn')+'.js',
  645. 'o2web/source/x_component_portal_Portal/Main.js',
  646. 'o2web/source/x_component_Selector/package.js',
  647. 'o2web/source/x_component_Selector/Person.js',
  648. 'o2web/source/x_component_Selector/Identity.js',
  649. 'o2web/source/x_component_Selector/Unit.js',
  650. 'o2web/source/x_component_Selector/IdentityWidthDuty.js',
  651. 'o2web/source/x_component_Selector/IdentityWidthDutyCategoryByUnit.js',
  652. 'o2web/source/x_component_Selector/UnitWithType.js',
  653. 'o2web/source/o2_core/o2/xScript/Actions/UnitActions.js',
  654. 'o2web/source/o2_core/o2/xScript/Actions/ScriptActions.js',
  655. 'o2web/source/o2_core/o2/xScript/Actions/CMSScriptActions.js',
  656. 'o2web/source/o2_core/o2/xScript/Actions/PortalScriptActions.js',
  657. 'o2web/source/o2_core/o2/xScript/PageEnvironment.js',
  658. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_authentication.js',
  659. 'o2web/source/o2_core/o2/xAction/services/x_cms_assemble_control.js',
  660. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_control.js',
  661. 'o2web/source/o2_core/o2/xAction/services/x_query_assemble_surface.js',
  662. 'o2web/source/o2_core/o2/xAction/services/x_organization_assemble_personal.js',
  663. 'o2web/source/x_desktop/js/base_portal_actions_temp.js',
  664. 'o2web/source/x_desktop/js/base.js'
  665. ];
  666. var dest = 'target/o2server/servers/webServer/x_desktop/js/';
  667. return gulp.src(src)
  668. .pipe(concat('base_portal.js'))
  669. .pipe(gulp.dest(dest))
  670. .pipe(uglify())
  671. .pipe(rename({ extname: '.min.js' }))
  672. .pipe(gulp.dest(dest));
  673. }
  674. exports.build_concat = gulp.parallel(
  675. build_concat_o2,
  676. build_concat_desktop,
  677. build_concat_xform,
  678. build_bundle,
  679. gulp.series(build_concat_basework_style, build_concat_basework_action, build_concat_basework_body,build_concat_basework_clean),
  680. gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean)
  681. );
  682. function build_web_v_html() {
  683. var src = 'o2web/source/x_desktop/*.html';
  684. var dest = 'target/o2server/servers/webServer/x_desktop/';
  685. return gulp.src(src)
  686. .pipe(assetRev())
  687. .pipe(gulp.dest(dest))
  688. .pipe(gutil.noop());
  689. }
  690. function build_web_v_o2() {
  691. var src = 'target/o2server/servers/webServer/o2_core//o2.js';
  692. var dest = 'target/o2server/servers/webServer/o2_core/';
  693. return gulp.src(src)
  694. .pipe(assetRev())
  695. .pipe(gulp.dest(dest))
  696. .pipe(uglify())
  697. .pipe(rename({ extname: '.min.js' }))
  698. .pipe(gulp.dest(dest))
  699. .pipe(gutil.noop());
  700. }
  701. function clear_build(cb){
  702. console.log(`---------------------------------------------------------------------
  703. . clear old build ...
  704. ---------------------------------------------------------------------`);
  705. var dest = 'target';
  706. del(dest, { force: true });
  707. cb();
  708. }
  709. function clear_deploy(cb){
  710. console.log(`---------------------------------------------------------------------
  711. . clear old deploy ...
  712. ---------------------------------------------------------------------`);
  713. var dest = ["target/o2server/store/", "target/o2server/commons/", "target/o2server/jvm/", "target/o2server/configSample/", "target/o2server/localSample/", "target/o2server/servers/"];
  714. dest = dest.concat(["target/o2server/*.sh", "target/o2server/*.jar", "target/o2server/*.html", "target/o2server/*.bat", "target/o2server/version.o2"]);
  715. del(dest, { force: true });
  716. cb();
  717. }
  718. exports.clear_build = clear_build;
  719. exports.clear_deploy = clear_deploy;
  720. function deploy_server(){
  721. console.log(`---------------------------------------------------------------------
  722. . deploy to target ...
  723. ---------------------------------------------------------------------`);
  724. var source = ["o2server/*store/**/*", "o2server/*commons/**/*", "o2server/*jvm/**/*", "o2server/*configSample/**/*", "o2server/*localSample/**/*"];
  725. source = source.concat(scriptSource);
  726. console.log(source)
  727. var dest = "target/o2server/"
  728. var entries = fg.sync(source, { dot: false});
  729. var size = entries.length;
  730. var pb = new ProgressBar('', 50);
  731. var doCount = 0;
  732. var stream = gulp.src(source);
  733. stream.on("end", ()=>{console.log();});
  734. return stream.pipe(gulp.dest(dest))
  735. .pipe(logger(function(){
  736. doCount++;
  737. if (doCount <= size) {pb.render({ completed: doCount, total: size, count: doCount})};
  738. }));
  739. }
  740. exports.preperation = gulp.series(download_commons_and_jvm, decompress_commons_and_jvm, move_commons, move_jvm, clear_commons_git, clear_jvm_git);
  741. var shell = require('gulp-shell')
  742. exports.build_server = function(){
  743. console.log(`---------------------------------------------------------------------
  744. . Start compiling the server ...
  745. ---------------------------------------------------------------------`);
  746. return (shell.task('npm run build_server_script'))();
  747. };
  748. function chmod_jvm(){
  749. return (shell.task('chmod 777 -R target/o2server/jvm'))();
  750. }
  751. function chmod_commons(){
  752. return (shell.task('chmod 777 -R target/o2server/commons'))();
  753. }
  754. function chmod_sh(){
  755. return (shell.task('chmod 777 target/o2server/*.sh'))();
  756. }
  757. function chmod_servers(){
  758. return (shell.task('chmod 777 -R target/o2server/servers'))();
  759. }
  760. exports.build_web = gulp.series(
  761. build_web_minimize,
  762. build_web_move,
  763. gulp.parallel(
  764. build_concat_o2,
  765. build_concat_desktop,
  766. build_concat_xform,
  767. gulp.series(build_concat_basework_style, build_concat_basework_action, build_concat_basework_body,build_concat_basework_clean),
  768. gulp.series(build_concat_baseportal_style, build_concat_baseportal_action, build_concat_baseportal_body,build_concat_baseportal_clean),
  769. build_bundle
  770. ),
  771. build_web_v_html,
  772. build_web_v_o2);
  773. if (os.platform().indexOf("win")==-1){
  774. exports.deploy = gulp.series(deploy_server, chmod_jvm, chmod_commons, chmod_sh, chmod_servers);
  775. }else{
  776. exports.deploy = gulp.series(deploy_server);
  777. }