Skip to content

Commit cf6d571

Browse files
authored
Merge pull request #4 from HSG-Library/develop
Release 2021.11.23-1
2 parents b76aa7f + a5a13a2 commit cf6d571

33 files changed

+16897
-40
lines changed

.ci/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
temp/
3+
*.zip

.ci/.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
16

.ci/gulp/config.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
'use strict';
2+
3+
let customJsFile = 'custom.js';
4+
let customMapFile = 'custom.js.map';
5+
let customCssFile = 'custom1.css';
6+
let mainFile = 'main.js';
7+
8+
let view;
9+
10+
function getView() {
11+
return view;
12+
}
13+
14+
function setView(_view) {
15+
view = _view;
16+
}
17+
18+
function viewRootDir() {
19+
return `../`;
20+
}
21+
22+
/* CSS */
23+
function viewCssDir() {
24+
return viewRootDir() + `css`;
25+
}
26+
27+
function customCssMainPath() {
28+
return viewCssDir() + '/*.css';
29+
}
30+
31+
function customCssPath() {
32+
return viewCssDir() + `/custom1.css`;
33+
}
34+
35+
/* HTML */
36+
function viewHtmlDir() {
37+
return viewRootDir() + `html`;
38+
}
39+
40+
/* JS */
41+
function viewJsDir() {
42+
return viewRootDir() + `js`;
43+
}
44+
45+
function customJsPath() {
46+
return viewJsDir() + '/' + customJsFile;
47+
}
48+
49+
function customMapPath() {
50+
return viewJsDir() + '/' + customMapFile;
51+
}
52+
53+
function mainJsPath() {
54+
return viewJsDir() + '/' + mainFile;
55+
}
56+
57+
let buildParams = {
58+
customJsFile: customJsFile,
59+
customCssFile: customCssFile,
60+
customJsPath: customJsPath,
61+
customMapPath: customMapPath,
62+
mainJsPath: mainJsPath,
63+
viewJsDir: viewJsDir,
64+
viewHtmlDir: viewHtmlDir,
65+
viewCssDir: viewCssDir,
66+
customCssPath: customCssPath,
67+
customCssMainPath: customCssMainPath,
68+
};
69+
70+
module.exports = {
71+
buildParams: buildParams,
72+
setView: setView,
73+
view: getView,
74+
};

.ci/gulp/tasks/00-clean.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
const gulp = require('gulp');
3+
const del = require('del');
4+
const config = require('../config.js');
5+
6+
gulp.task('clean', function () {
7+
console.log('task: clean');
8+
let buildParams = config.buildParams;
9+
let css = buildParams.customCssPath();
10+
let js = buildParams.customJsPath();
11+
let map = buildParams.customMapPath();
12+
console.log('removing:', css, js, map);
13+
return del([css, js, map], { force: true });
14+
});

.ci/gulp/tasks/01-select-view.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict';
2+
const gulp = require('gulp');
3+
const config = require('../config.js');
4+
5+
gulp.task('select-view', (cb) => {
6+
console.log('task: select-view');
7+
return new Promise(resolve => {
8+
if (!config.view()) {
9+
let code = "41SLSP_HSG-sandbox_jfu"
10+
console.log('view not set, using fallback view', code);
11+
config.setView(code);
12+
console.log('view is set to ', config.view());
13+
resolve();
14+
}
15+
console.log('view was already set to ', config.view());
16+
resolve();
17+
})
18+
});
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
'use strict';
2+
const gulp = require('gulp');
3+
const templateCache = require('gulp-angular-templatecache');
4+
const config = require('../config.js');
5+
const fs = require('fs');
6+
7+
let buildParams = config.buildParams;
8+
9+
gulp.task('custom-html-templates', gulp.series('select-view', (cb) => {
10+
console.log('task: custom-html-templates');
11+
prepareTemplates().on('end', cb);
12+
}));
13+
14+
function parseModuleName() {
15+
16+
let mainJsContent = fs.readFileSync(buildParams.mainJsPath(), 'utf8');
17+
let moduleString = "angular.module('";
18+
let index = mainJsContent.indexOf(moduleString) + moduleString.length;
19+
mainJsContent = mainJsContent.slice(index);
20+
index = mainJsContent.indexOf("'");
21+
let module = mainJsContent.slice(0, index);
22+
return module;
23+
}
24+
25+
function prepareTempltesWithBrowserify() {
26+
let module = parseModuleName();
27+
return gulp.src(buildParams.viewHtmlDir() + '/templates/**/*.html')
28+
.pipe(templateCache({
29+
filename: 'customTemplates.js',
30+
module: module,
31+
transformUrl: function (url) {
32+
return url.replace(/^\/+/g, '');
33+
}
34+
}))
35+
.pipe(gulp.dest(buildParams.viewJsDir()));
36+
}
37+
38+
function prepareTemplates() {
39+
return prepareTempltesWithBrowserify();
40+
}

.ci/gulp/tasks/03-custom-js.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
'use strict';
2+
3+
const gulp = require('gulp');
4+
const config = require('../config.js');
5+
const browserify = require("browserify");
6+
const source = require('vinyl-source-stream');
7+
const buffer = require('vinyl-buffer');
8+
const sourcemaps = require('gulp-sourcemaps');
9+
10+
let buildParams = config.buildParams;
11+
12+
gulp.task('custom-js', gulp.series('select-view', 'custom-html-templates', (cb) => {
13+
console.log('task: custom-js');
14+
buildByBrowserify().on('end', cb);
15+
}));
16+
17+
function getBrowserifyBabelPlugins() {
18+
return [
19+
"transform-html-import-to-string", ["angularjs-annotate", { "explicitOnly": true }]
20+
];
21+
}
22+
23+
function getDefaultBabelPlugins() {
24+
return [
25+
["transform-define", {
26+
"process.env.NODE_ENV": process.env.NODE_ENV,
27+
}]
28+
];
29+
}
30+
31+
const getBabelConfig = () => {
32+
return ({
33+
presets: ["@babel/preset-env"],
34+
plugins: getDefaultBabelPlugins().concat(getBrowserifyBabelPlugins()),
35+
sourceMaps: true,
36+
});
37+
}
38+
39+
function buildByBrowserify() {
40+
return browserify({
41+
debug: true,
42+
entries: buildParams.mainJsPath(),
43+
paths: [
44+
buildParams.viewJsDir() + '/node_modules'
45+
]
46+
})
47+
.transform("babelify", getBabelConfig())
48+
.bundle()
49+
.pipe(source(buildParams.customJsFile))
50+
.pipe(buffer())
51+
.pipe(sourcemaps.init({ loadMaps: true }))
52+
.pipe(sourcemaps.write('./'))
53+
.pipe(gulp.dest(buildParams.viewJsDir()));
54+
}

.ci/gulp/tasks/04-custom-css.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict';
2+
3+
let gulp = require('gulp');
4+
let config = require('../config.js');
5+
let concat = require("gulp-concat");
6+
7+
let buildParams = config.buildParams;
8+
9+
gulp.task('custom-css', gulp.series('select-view', () => {
10+
console.log('task: custom-css');
11+
return gulp.src([buildParams.customCssMainPath(), '!' + buildParams.customCssPath()])
12+
.pipe(concat(buildParams.customCssFile))
13+
.pipe(gulp.dest(buildParams.viewCssDir()));
14+
}));
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
'use strict';
2+
const gulp = require('gulp');
3+
const zip = require('gulp-zip');
4+
const config = require('../config.js');
5+
6+
gulp.task('prepare-package', gulp.series('clean', 'select-view', 'custom-js', 'custom-css', function () {
7+
console.log('task: prepare-package');
8+
const code = config.view();
9+
const tempDir = 'temp/';
10+
const viewDir = tempDir + code;
11+
gulp.src('*.*', { read: false })
12+
.pipe(gulp.dest(viewDir));
13+
console.log('copy files to temp view directory:', viewDir)
14+
return gulp.src(['../', '../html/**', '../img/**', '../css/custom1.css', '../js/custom.js'], { base: '..' })
15+
.pipe(gulp.dest(viewDir));
16+
}));
17+
18+
gulp.task('zip-package', function () {
19+
console.log('task: zip-package');
20+
const code = config.view();
21+
const tempDir = 'temp/';
22+
const viewDir = tempDir + code;
23+
const packagename = code + '.zip';
24+
console.log('creating zip package form', viewDir);
25+
console.log('packagename:', packagename);
26+
return gulp.src(viewDir + '/**', { base: tempDir })
27+
.pipe(zip(packagename))
28+
.pipe(gulp.dest('.'));
29+
});
30+
31+
gulp.task('create-package', gulp.series('prepare-package', 'zip-package', async function () {
32+
console.log('task: create-package');
33+
const code = config.view();
34+
console.log('Package for ' + code + ' ready.');
35+
console.log('do cleanup/post processing');
36+
// cleanup
37+
return;
38+
}));

.ci/gulpfile-ci.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
'use-strict'
2+
const minimist = require('minimist');
3+
const requireDir = require('require-dir');
4+
requireDir('./gulp/tasks', { recurse: true });
5+
const config = require('./gulp/config.js');
6+
7+
8+
let options = minimist(process.argv.slice(2));
9+
config.setView(options.view);
10+
process.env.NODE_ENV = process.env.NODE_ENV || 'production';

0 commit comments

Comments
 (0)