dragonbones-runtime
Version:
the tools to build dragonbones file for diffrent framework
171 lines (152 loc) • 4.92 kB
text/typescript
/// <reference path="../lib/types.d.ts" />
import os = require('os');
import crypto = require('crypto');
import FileUtil = require('../lib/FileUtil');
class CompileOptions implements egret.ToolArgs {
command: string;
commands: string[];
platform: string;
projectDir: string;
compilerOptions: ts.CompilerOptions;
tsconfigError: string[];//tsconfig 配置文件的错误信息
get srcDir(): string {
return FileUtil.joinPath(this.projectDir, "src/");
}
private _debugDir: string;
get debugDir(): string {
return this._debugDir || FileUtil.joinPath(this.projectDir, "bin-debug/");
}
set debugDir(value: string) {
this._debugDir = value;
}
private _releaseDir: string;
get releaseDir(): string {
return this._releaseDir || FileUtil.joinPath(this.projectDir, "bin-release/");
}
set releaseDir(value: string) {
this._releaseDir = value;
}
get releaseRootDir(): string {
return FileUtil.joinPath(this.projectDir, "bin-release/");
}
get templateDir(): string {
return FileUtil.joinPath(this.projectDir, "template/");
}
private _host: string | null = null;
get host() {
return this._host;
}
set host(value: string | null) {
this._host = value;
}
private _port: number = NaN;
get port(): number {
return isNaN(this._port) ? this.getProject().port : this._port;
}
set port(value) {
this._port = value;
}
get websocketUrl(): string {
var url = "ws://" + (this.host || "localhost") + ':' + this.port;
return url;
}
get startUrl(): string {
var url = "http://" + (this.host || "localhost") + ':' + this.port + '/index.html';
return url;
}
getStartURL(host: string) {
var url = "http://" + host + ':' + this.port + '/index.html';
return url;
}
egretVersion: string;
publish: boolean;
sourceMap: boolean;
removeComments: boolean;
esTarget: string = 'ES5';
serverOnly: boolean;
autoCompile: boolean;
debug: boolean;
fileName: string;
modules: string[];
platforms: string[];
contentHeight: number;
contentWidth: number;
type: string;
scaleMode: string;
orientation: string;
background: string;
added: string[];
removed: string[];
modified: string[];
target: egret.target.Type = "web";
experimental: boolean;
version: string;
compile: boolean;
password: string;
keepEXMLTS: boolean;
log: boolean;
nativeTemplatePath: string;
all: boolean;
template: string;
ide: string;
exmlGenJs: boolean;
private _tmpDir: string | null = null;
private _tmpProj: egret.EgretProjectConfig;
getTmpDir() {
if (this._tmpDir == null) {
var sha1 = crypto.createHash('sha1');
sha1.update(this.projectDir);
var folder = sha1.digest('hex');
var systemTmp = os.tmpdir();
var dir = FileUtil.joinPath(systemTmp, "egret/" + folder + "/");
FileUtil.createDirectory(dir);
this._tmpDir = dir;
}
return this._tmpDir;
}
getProject(empty = false): egret.EgretProjectConfig {
if (this._tmpProj == null) {
var tmpFile = FileUtil.joinPath(this.getTmpDir(), "proj.json");
if (empty || !FileUtil.exists(tmpFile))
this._tmpProj = {
port: this._port || 3000,
type: this.type,
platforms: (this.platforms || []).map(p => { return { name: p } }),
modules: (this.modules || []).map(m => { return { name: m } }),
contentHeight: this.contentHeight,
contentWidth: this.contentWidth,
scaleMode: this.scaleMode,
orientationMode: this.orientation,
background: this.background
};
else {
var content = FileUtil.read(tmpFile);
this._tmpProj = JSON.parse(content);
}
}
return this._tmpProj;
}
static parse(option: egret.ToolArgs) {
var it = new CompileOptions();
for (var p in option) {
it[p] = option[p];
}
return it;
}
toJSON(): egret.ToolArgs {
var options = this;
var json: any = {};
for (var k in this) {
var disc = Object.getOwnPropertyDescriptor(options, k) || Object.getOwnPropertyDescriptor(CompileOptions.prototype, k);
if (!disc)
continue;
if (disc.enumerable == false)
continue;
if (typeof disc.value == 'function')
continue;
json[k] = options[k]
}
return json;
}
}
export = CompileOptions;