-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
116 lines (96 loc) · 3.04 KB
/
gulpfile.js
File metadata and controls
116 lines (96 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
const gulp = require('gulp');
const path = require('path');
const fs = require('fs');
const ts = require('gulp-typescript');
const sm = require('gulp-sourcemaps');
const rimraf = require('rimraf');
const webpack = require('webpack-stream');
const webpackConf = require('./webpack.config.js');
const DEFAULT_APP_NAME = 'MyApp';
function build() {
var tsProject = ts.createProject('tsconfig.json');
var tsResult = tsProject.src()
.pipe(sm.init())
.pipe(tsProject()).js
.pipe(sm.write('.'))
.pipe(gulp.dest('bin/js/'));
return tsResult;
};
function pack() {
return gulp.src('bin/js/**/*.js')
.pipe(webpack(webpackConf))
.pipe(gulp.dest('bin/'));
};
function clean(done) {
rimraf.sync('./bin/js');
rimraf.sync('./bin/Canvity');
rimraf.sync('./bin/pack');
done();
}
function init(done) {
let args = parseArgs();
let appName = DEFAULT_APP_NAME;
if (args[0]) appName = args[0];
else {
console.log("No app name given, defaulting to '" + DEFAULT_APP_NAME + "'");
console.log("To fix this, please specify an app name with the following syntax:");
console.log("gulp init <appName>");
}
fs.mkdirSync("src/" + appName);
let appCode = `import { App } from "../Canvity/App";
import { InputManager } from "../Canvity/InputManager";
import { SceneManager } from "../Canvity/SceneManager";
export class ${appName} extends App {
public constructor(canvas: HTMLCanvasElement) {
super(
canvas,
new InputManager(),
new SceneManager()
);
}
public PreInit(opts: any): void {
super.PreInit(opts);
console.log("PreInit");
// TODO: Add PreInit logic
}
public Init(drawDeltaTime: number, updateDeltaTime: number): void {
super.Init(drawDeltaTime, updateDeltaTime);
console.log("Init");
// TODO: Add Init logic
}
public PostInit(): void {
super.PostInit();
console.log("PostInit");
// TODO: Add PostInit logic
}
}`;
fs.writeFileSync(`src/${appName}/${appName}.ts`, appCode);
let runCode = `import { App } from "../Canvity/App";
import { StartApp } from "../Canvity/Main";
import { ${appName} } from "./${appName}";
window.addEventListener('load', function(ev: Event) {
let canvas: HTMLElement | null = document.getElementById('canvity-canvas');
if (canvas === null) {
console.error("Could not find canvas element with id 'canvity-canvas'!");
return;
}
if (!(canvas instanceof HTMLCanvasElement)) {
console.error("Element with id 'canvity-canvas' is not a HTML Canvas!");
return;
}
let app: App = new ${appName}(canvas);
StartApp(app);
});`;
fs.writeFileSync(`src/${appName}/Run${appName}.ts`, runCode);
done();
}
function parseArgs() {
let args = process.argv;
args.splice(0, 3);
return args;
}
exports.build = build;
exports.pack = pack;
exports.clean = clean;
exports.init = init;
exports.default = gulp.series(clean, build, pack);