@saltcorn/mobile-builder 0.7.3-beta.3 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docker/post-installer.d.ts +2 -0
- package/dist/docker/post-installer.d.ts.map +1 -0
- package/dist/docker/post-installer.js +19 -0
- package/dist/docker/post-installer.js.map +1 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/dist/mobile-builder.d.ts +41 -0
- package/dist/mobile-builder.d.ts.map +1 -0
- package/dist/mobile-builder.js +63 -0
- package/dist/mobile-builder.js.map +1 -0
- package/dist/utils/common-build-utils.d.ts +28 -0
- package/dist/utils/common-build-utils.d.ts.map +1 -0
- package/dist/utils/common-build-utils.js +110 -0
- package/dist/utils/common-build-utils.js.map +1 -0
- package/dist/utils/cordova-build-utils.d.ts +39 -0
- package/dist/utils/cordova-build-utils.d.ts.map +1 -0
- package/dist/utils/cordova-build-utils.js +101 -0
- package/dist/utils/cordova-build-utils.js.map +1 -0
- package/dist/utils/package-bundle-utils.d.ts +21 -0
- package/dist/utils/package-bundle-utils.d.ts.map +1 -0
- package/dist/utils/package-bundle-utils.js +72 -0
- package/dist/utils/package-bundle-utils.js.map +1 -0
- package/docker/Dockerfile +47 -0
- package/docker/entry.bash +18 -0
- package/docker/post-installer.js +20 -0
- package/package.json +30 -21
- package/webpack.config.js +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-installer.d.ts","sourceRoot":"","sources":["../../docker/post-installer.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { spawnSync } = require("child_process");
|
|
3
|
+
const { join } = require("path");
|
|
4
|
+
if (process.env.SKIP_DOCKER_IMAGE_INSTALL === "true") {
|
|
5
|
+
console.log("skipping build 'saltcorn/cordova-builder' docker image");
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
const result = spawnSync("docker", [
|
|
9
|
+
"build",
|
|
10
|
+
__dirname,
|
|
11
|
+
"-f",
|
|
12
|
+
join(__dirname, "Dockerfile"),
|
|
13
|
+
"-t",
|
|
14
|
+
"saltcorn/cordova-builder",
|
|
15
|
+
], { cwd: ".", stdio: "inherit" });
|
|
16
|
+
if (result.error)
|
|
17
|
+
console.log(result.error.toString());
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=post-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-installer.js","sourceRoot":"","sources":["../../docker/post-installer.js"],"names":[],"mappings":";AAAA,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjC,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,EAAE;IACpD,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;CACvE;KAAM;IACL,MAAM,MAAM,GAAG,SAAS,CACtB,QAAQ,EACR;QACE,OAAO;QACP,SAAS;QACT,IAAI;QACJ,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;QAC7B,IAAI;QACJ,0BAA0B;KAC3B,EACD,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAC/B,CAAC;IACF,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;CACxD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* This is the mobile builder package
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
export * as common_build_utils from "./utils/common-build-utils";
|
|
6
|
+
export * as cordova_build_utils from "./utils/cordova-build-utils";
|
|
7
|
+
export * as package_bundle_utils from "./utils/package-bundle-utils";
|
|
8
|
+
export * from "./mobile-builder";
|
|
3
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,KAAK,kBAAkB,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AAErE,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// For the typedoc documentation
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
27
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
28
|
+
};
|
|
2
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
30
|
+
exports.package_bundle_utils = exports.cordova_build_utils = exports.common_build_utils = void 0;
|
|
31
|
+
/**
|
|
32
|
+
* This is the mobile builder package
|
|
33
|
+
* @module
|
|
34
|
+
*/
|
|
35
|
+
exports.common_build_utils = __importStar(require("./utils/common-build-utils"));
|
|
36
|
+
exports.cordova_build_utils = __importStar(require("./utils/cordova-build-utils"));
|
|
37
|
+
exports.package_bundle_utils = __importStar(require("./utils/package-bundle-utils"));
|
|
38
|
+
__exportStar(require("./mobile-builder"), exports);
|
|
4
39
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhC;;;GAGG;AACH,iFAAiE;AACjE,mFAAmE;AACnE,qFAAqE;AAErE,mDAAiC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Plugin from "@saltcorn/data/models/plugin";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
export declare class MobileBuilder {
|
|
6
|
+
templateDir: string;
|
|
7
|
+
buildDir: string;
|
|
8
|
+
cliDir: string;
|
|
9
|
+
useDocker?: boolean;
|
|
10
|
+
platforms: string[];
|
|
11
|
+
localUserTables: string[];
|
|
12
|
+
entryPoint: string;
|
|
13
|
+
serverURL: string;
|
|
14
|
+
pluginManager: any;
|
|
15
|
+
plugins: Plugin[];
|
|
16
|
+
packageRoot: string;
|
|
17
|
+
copyTargetDir?: string;
|
|
18
|
+
copyFileName?: string;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param cfg
|
|
22
|
+
*/
|
|
23
|
+
constructor(cfg: {
|
|
24
|
+
templateDir: string;
|
|
25
|
+
buildDir: string;
|
|
26
|
+
cliDir: string;
|
|
27
|
+
useDocker?: boolean;
|
|
28
|
+
platforms: string[];
|
|
29
|
+
localUserTables?: string[];
|
|
30
|
+
entryPoint: string;
|
|
31
|
+
serverURL: string;
|
|
32
|
+
plugins: Plugin[];
|
|
33
|
+
copyTargetDir?: string;
|
|
34
|
+
copyFileName?: string;
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
build(): Promise<number | null>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=mobile-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-builder.d.ts","sourceRoot":"","sources":["../mobile-builder.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAmBlD;;GAEG;AACH,qBAAa,aAAa;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,GAAG,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,SAA0B;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,GAAG,EAAE;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IAkBD;;OAEG;IACG,KAAK;CAsBZ"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MobileBuilder = void 0;
|
|
4
|
+
const { PluginManager } = require("live-plugin-manager");
|
|
5
|
+
const { staticDependencies } = require("@saltcorn/server/load_plugins");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const common_build_utils_1 = require("./utils/common-build-utils");
|
|
8
|
+
const package_bundle_utils_1 = require("./utils/package-bundle-utils");
|
|
9
|
+
const cordova_build_utils_1 = require("./utils/cordova-build-utils");
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
class MobileBuilder {
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @param cfg
|
|
17
|
+
*/
|
|
18
|
+
constructor(cfg) {
|
|
19
|
+
this.packageRoot = (0, path_1.join)(__dirname, "../");
|
|
20
|
+
this.templateDir = cfg.templateDir;
|
|
21
|
+
this.buildDir = cfg.buildDir;
|
|
22
|
+
this.cliDir = cfg.cliDir;
|
|
23
|
+
this.useDocker = cfg.useDocker;
|
|
24
|
+
this.platforms = cfg.platforms;
|
|
25
|
+
this.localUserTables = cfg.localUserTables ? cfg.localUserTables : [];
|
|
26
|
+
this.entryPoint = cfg.entryPoint;
|
|
27
|
+
this.serverURL = cfg.serverURL;
|
|
28
|
+
this.pluginManager = new PluginManager({
|
|
29
|
+
pluginsPath: (0, path_1.join)(this.buildDir, "plugin_packages", "node_modules"),
|
|
30
|
+
staticDependencies,
|
|
31
|
+
});
|
|
32
|
+
this.plugins = cfg.plugins;
|
|
33
|
+
this.copyTargetDir = cfg.copyTargetDir;
|
|
34
|
+
this.copyFileName = cfg.copyFileName;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
async build() {
|
|
40
|
+
(0, cordova_build_utils_1.prepareBuildDir)(this.buildDir, this.templateDir);
|
|
41
|
+
(0, common_build_utils_1.copyStaticAssets)(this.buildDir);
|
|
42
|
+
(0, common_build_utils_1.copySbadmin2Deps)(this.buildDir);
|
|
43
|
+
(0, common_build_utils_1.writeCfgFile)({
|
|
44
|
+
buildDir: this.buildDir,
|
|
45
|
+
entryPoint: this.entryPoint,
|
|
46
|
+
serverPath: this.serverURL ? this.serverURL : "http://10.0.2.2:3000",
|
|
47
|
+
localUserTables: this.localUserTables,
|
|
48
|
+
});
|
|
49
|
+
await (0, package_bundle_utils_1.bundlePackagesAndPlugins)(this.buildDir, this.plugins);
|
|
50
|
+
await (0, package_bundle_utils_1.copyPublicDirs)(this.buildDir, this.pluginManager, this.plugins);
|
|
51
|
+
await (0, package_bundle_utils_1.installNpmPackages)(this.buildDir, this.pluginManager);
|
|
52
|
+
await (0, common_build_utils_1.buildTablesFile)(this.buildDir);
|
|
53
|
+
await (0, common_build_utils_1.createSqliteDb)(this.buildDir);
|
|
54
|
+
const resultCode = (0, cordova_build_utils_1.buildApp)(this.buildDir, this.platforms, this.useDocker);
|
|
55
|
+
if (resultCode === 0 && this.copyTargetDir) {
|
|
56
|
+
// copy file to 'copyTargetDir' (only apk)
|
|
57
|
+
await (0, cordova_build_utils_1.copyApp)(this.buildDir, this.copyTargetDir, this.copyFileName);
|
|
58
|
+
}
|
|
59
|
+
return resultCode;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.MobileBuilder = MobileBuilder;
|
|
63
|
+
//# sourceMappingURL=mobile-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-builder.js","sourceRoot":"","sources":["../mobile-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* copy files from 'server/public' into the www folder (with a version_tag prefix)
|
|
3
|
+
* @param buildDir directory where the app will be build
|
|
4
|
+
*/
|
|
5
|
+
export declare function copyStaticAssets(buildDir: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* copy files from 'startbootstrap-sb-admin-2-bs5' into the www directory
|
|
8
|
+
* @param buildDir directory where the app will be build
|
|
9
|
+
*/
|
|
10
|
+
export declare function copySbadmin2Deps(buildDir: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* create a cfg file, the app use this configs
|
|
13
|
+
* @param param0
|
|
14
|
+
*/
|
|
15
|
+
export declare function writeCfgFile({ buildDir, entryPoint, serverPath, localUserTables, }: any): void;
|
|
16
|
+
/**
|
|
17
|
+
* create a file with all data from the db
|
|
18
|
+
* the app updates its local db from this
|
|
19
|
+
* @param buildDir directory where the app will be build
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildTablesFile(buildDir: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* init an empty db
|
|
24
|
+
* after the first startup, this db will be updated from the tables.json
|
|
25
|
+
* @param buildDir directory where the app will be build
|
|
26
|
+
*/
|
|
27
|
+
export declare function createSqliteDb(buildDir: string): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=common-build-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-build-utils.d.ts","sourceRoot":"","sources":["../../utils/common-build-utils.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QAoBhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QA8BhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,GAChB,EAAE,GAAG,QASL;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,iBAmBrD;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,iBASpD"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createSqliteDb = exports.buildTablesFile = exports.writeCfgFile = exports.copySbadmin2Deps = exports.copyStaticAssets = void 0;
|
|
7
|
+
const index_1 = __importDefault(require("@saltcorn/data/db/index"));
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const fs_extra_1 = require("fs-extra");
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
/**
|
|
12
|
+
* copy files from 'server/public' into the www folder (with a version_tag prefix)
|
|
13
|
+
* @param buildDir directory where the app will be build
|
|
14
|
+
*/
|
|
15
|
+
function copyStaticAssets(buildDir) {
|
|
16
|
+
const wwwDir = (0, path_1.join)(buildDir, "www");
|
|
17
|
+
const assetsDst = (0, path_1.join)(wwwDir, "static_assets", index_1.default.connectObj.version_tag);
|
|
18
|
+
if (!(0, fs_extra_1.existsSync)(assetsDst)) {
|
|
19
|
+
(0, fs_extra_1.mkdirSync)(assetsDst, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
const serverRoot = (0, path_1.join)(require.resolve("@saltcorn/server"), "..");
|
|
22
|
+
const srcPrefix = (0, path_1.join)(serverRoot, "public");
|
|
23
|
+
const srcFiles = [
|
|
24
|
+
"jquery-3.6.0.min.js",
|
|
25
|
+
"saltcorn-common.js",
|
|
26
|
+
"saltcorn.js",
|
|
27
|
+
"saltcorn.css",
|
|
28
|
+
"codemirror.js",
|
|
29
|
+
"codemirror.css",
|
|
30
|
+
"socket.io.min.js",
|
|
31
|
+
];
|
|
32
|
+
for (const srcFile of srcFiles) {
|
|
33
|
+
(0, fs_extra_1.copySync)((0, path_1.join)(srcPrefix, srcFile), (0, path_1.join)(assetsDst, srcFile));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.copyStaticAssets = copyStaticAssets;
|
|
37
|
+
/**
|
|
38
|
+
* copy files from 'startbootstrap-sb-admin-2-bs5' into the www directory
|
|
39
|
+
* @param buildDir directory where the app will be build
|
|
40
|
+
*/
|
|
41
|
+
function copySbadmin2Deps(buildDir) {
|
|
42
|
+
const sbadmin2Dst = (0, path_1.join)(buildDir, "www", "plugins/pubdeps/sbadmin2/startbootstrap-sb-admin-2-bs5/4.1.5-beta.5");
|
|
43
|
+
if (!(0, fs_extra_1.existsSync)(sbadmin2Dst)) {
|
|
44
|
+
(0, fs_extra_1.mkdirSync)(sbadmin2Dst, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
const devPath = (0, path_1.join)(__dirname, "../../../..", "node_modules/startbootstrap-sb-admin-2-bs5");
|
|
47
|
+
const prodPath = (0, path_1.join)(require.resolve("@saltcorn/cli"), "../..", "node_modules/startbootstrap-sb-admin-2-bs5");
|
|
48
|
+
const srcPrefix = (0, fs_extra_1.existsSync)(devPath) ? devPath : prodPath;
|
|
49
|
+
const srcFiles = [
|
|
50
|
+
"vendor/fontawesome-free",
|
|
51
|
+
"vendor/bootstrap/js/bootstrap.bundle.min.js",
|
|
52
|
+
"vendor/jquery-easing/jquery.easing.min.js",
|
|
53
|
+
"css/sb-admin-2.css",
|
|
54
|
+
"js/sb-admin-2.min.js",
|
|
55
|
+
];
|
|
56
|
+
for (const srcFile of srcFiles) {
|
|
57
|
+
(0, fs_extra_1.copySync)((0, path_1.join)(srcPrefix, srcFile), (0, path_1.join)(sbadmin2Dst, srcFile));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.copySbadmin2Deps = copySbadmin2Deps;
|
|
61
|
+
/**
|
|
62
|
+
* create a cfg file, the app use this configs
|
|
63
|
+
* @param param0
|
|
64
|
+
*/
|
|
65
|
+
function writeCfgFile({ buildDir, entryPoint, serverPath, localUserTables, }) {
|
|
66
|
+
const wwwDir = (0, path_1.join)(buildDir, "www");
|
|
67
|
+
let cfg = {
|
|
68
|
+
version_tag: index_1.default.connectObj.version_tag,
|
|
69
|
+
entry_view: `get/view/${entryPoint}`,
|
|
70
|
+
server_path: serverPath,
|
|
71
|
+
localUserTables,
|
|
72
|
+
};
|
|
73
|
+
(0, fs_extra_1.writeFileSync)((0, path_1.join)(wwwDir, "config"), JSON.stringify(cfg));
|
|
74
|
+
}
|
|
75
|
+
exports.writeCfgFile = writeCfgFile;
|
|
76
|
+
/**
|
|
77
|
+
* create a file with all data from the db
|
|
78
|
+
* the app updates its local db from this
|
|
79
|
+
* @param buildDir directory where the app will be build
|
|
80
|
+
*/
|
|
81
|
+
async function buildTablesFile(buildDir) {
|
|
82
|
+
const wwwDir = (0, path_1.join)(buildDir, "www");
|
|
83
|
+
const scTables = (await index_1.default.listScTables()).filter((table) => ["_sc_migrations", "_sc_errors", "_sc_session"].indexOf(table.name) === -1);
|
|
84
|
+
const tablesWithData = await Promise.all(scTables.map(async (row) => {
|
|
85
|
+
const dbData = await index_1.default.select(row.name);
|
|
86
|
+
return { table: row.name, rows: dbData };
|
|
87
|
+
}));
|
|
88
|
+
(0, fs_extra_1.writeFileSync)((0, path_1.join)(wwwDir, "tables.json"), JSON.stringify({
|
|
89
|
+
created_at: new Date(),
|
|
90
|
+
sc_tables: tablesWithData,
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
exports.buildTablesFile = buildTablesFile;
|
|
94
|
+
/**
|
|
95
|
+
* init an empty db
|
|
96
|
+
* after the first startup, this db will be updated from the tables.json
|
|
97
|
+
* @param buildDir directory where the app will be build
|
|
98
|
+
*/
|
|
99
|
+
async function createSqliteDb(buildDir) {
|
|
100
|
+
const result = (0, child_process_1.spawnSync)("saltcorn", ["reset-schema", "-f"], {
|
|
101
|
+
env: {
|
|
102
|
+
...process.env,
|
|
103
|
+
FORCE_SQLITE: "true",
|
|
104
|
+
SQLITE_FILEPATH: (0, path_1.join)(buildDir, "www", "scdb.sqlite"),
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
console.log(result.output.toString());
|
|
108
|
+
}
|
|
109
|
+
exports.createSqliteDb = createSqliteDb;
|
|
110
|
+
//# sourceMappingURL=common-build-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-build-utils.js","sourceRoot":"","sources":["../../utils/common-build-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* copy saltcorn-mobile-app as a template to buildDir
|
|
3
|
+
* @param buildDir directory where the app will be build
|
|
4
|
+
* @param templateDir directory of the template code that will be copied to 'buildDir'
|
|
5
|
+
*/
|
|
6
|
+
export declare function prepareBuildDir(buildDir: string, templateDir: string): void;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param buildDir directory where the app will be build
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildApkInContainer(buildDir: string): number | null;
|
|
13
|
+
/**
|
|
14
|
+
* build '.apk / .ipa' files with cordova (only android is tested)
|
|
15
|
+
* @param flags
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildApp(buildDir: string, platforms: string[], useDocker?: boolean): number | null;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param buildDir directory where the app will be build
|
|
22
|
+
* @param platforms
|
|
23
|
+
*/
|
|
24
|
+
export declare function addPlatforms(buildDir: string, platforms: string[]): void;
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @param buildDir directory where the app will be build
|
|
28
|
+
* @param platforms
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
export declare function callBuild(buildDir: string, platforms: string[]): number | null;
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param buildDir directory where the app was build
|
|
35
|
+
* @param copyDir directory where the resulting app file will be copied to
|
|
36
|
+
* @param appFileName name of the copied app file
|
|
37
|
+
*/
|
|
38
|
+
export declare function copyApp(buildDir: string, copyDir: string, appFileName?: string): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=cordova-build-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cordova-build-utils.d.ts","sourceRoot":"","sources":["../../utils/cordova-build-utils.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAQpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,iBAcnD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,CAAC,EAAE,OAAO,iBAUpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAKjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAO9D;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,iBAmBrB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.copyApp = exports.callBuild = exports.addPlatforms = exports.buildApp = exports.buildApkInContainer = exports.prepareBuildDir = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const os_1 = require("os");
|
|
8
|
+
/**
|
|
9
|
+
* copy saltcorn-mobile-app as a template to buildDir
|
|
10
|
+
* @param buildDir directory where the app will be build
|
|
11
|
+
* @param templateDir directory of the template code that will be copied to 'buildDir'
|
|
12
|
+
*/
|
|
13
|
+
function prepareBuildDir(buildDir, templateDir) {
|
|
14
|
+
if ((0, fs_extra_1.existsSync)(buildDir))
|
|
15
|
+
(0, fs_extra_1.rmSync)(buildDir, { force: true, recursive: true });
|
|
16
|
+
(0, fs_extra_1.copySync)(templateDir, buildDir);
|
|
17
|
+
(0, fs_extra_1.rmSync)(`${buildDir}/node_modules`, { recursive: true, force: true });
|
|
18
|
+
const result = (0, child_process_1.spawnSync)("npm", ["install", "--legacy-peer-deps"], {
|
|
19
|
+
cwd: buildDir,
|
|
20
|
+
});
|
|
21
|
+
console.log(result.output.toString());
|
|
22
|
+
}
|
|
23
|
+
exports.prepareBuildDir = prepareBuildDir;
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param buildDir directory where the app will be build
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
function buildApkInContainer(buildDir) {
|
|
30
|
+
const info = (0, os_1.userInfo)();
|
|
31
|
+
const result = (0, child_process_1.spawnSync)("docker", [
|
|
32
|
+
"run",
|
|
33
|
+
"-v",
|
|
34
|
+
`${buildDir}:/saltcorn-mobile-app`,
|
|
35
|
+
"saltcorn/cordova-builder",
|
|
36
|
+
], { cwd: "." });
|
|
37
|
+
console.log(result.output.toString());
|
|
38
|
+
return result.status;
|
|
39
|
+
}
|
|
40
|
+
exports.buildApkInContainer = buildApkInContainer;
|
|
41
|
+
/**
|
|
42
|
+
* build '.apk / .ipa' files with cordova (only android is tested)
|
|
43
|
+
* @param flags
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
function buildApp(buildDir, platforms, useDocker) {
|
|
47
|
+
if (!useDocker) {
|
|
48
|
+
return callBuild(buildDir, platforms);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
let code = buildApkInContainer(buildDir);
|
|
52
|
+
if (code === 0 && platforms.indexOf("ios") > -1)
|
|
53
|
+
code = callBuild(buildDir, ["ios"]);
|
|
54
|
+
return code;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.buildApp = buildApp;
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @param buildDir directory where the app will be build
|
|
61
|
+
* @param platforms
|
|
62
|
+
*/
|
|
63
|
+
function addPlatforms(buildDir, platforms) {
|
|
64
|
+
const result = (0, child_process_1.spawnSync)("npm", ["run", "add-platform", "--", ...platforms], {
|
|
65
|
+
cwd: buildDir,
|
|
66
|
+
});
|
|
67
|
+
console.log(result.output.toString());
|
|
68
|
+
}
|
|
69
|
+
exports.addPlatforms = addPlatforms;
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @param buildDir directory where the app will be build
|
|
73
|
+
* @param platforms
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
function callBuild(buildDir, platforms) {
|
|
77
|
+
addPlatforms(buildDir, platforms);
|
|
78
|
+
const result = (0, child_process_1.spawnSync)("npm", ["run", "build-app", "--", ...platforms], {
|
|
79
|
+
cwd: buildDir,
|
|
80
|
+
});
|
|
81
|
+
console.log(result.output.toString());
|
|
82
|
+
return result.status;
|
|
83
|
+
}
|
|
84
|
+
exports.callBuild = callBuild;
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
* @param buildDir directory where the app was build
|
|
88
|
+
* @param copyDir directory where the resulting app file will be copied to
|
|
89
|
+
* @param appFileName name of the copied app file
|
|
90
|
+
*/
|
|
91
|
+
async function copyApp(buildDir, copyDir, appFileName) {
|
|
92
|
+
if (!(0, fs_extra_1.existsSync)(copyDir)) {
|
|
93
|
+
(0, fs_extra_1.mkdirSync)(copyDir);
|
|
94
|
+
}
|
|
95
|
+
const apkName = "app-debug.apk";
|
|
96
|
+
const apkFile = (0, path_1.join)(buildDir, "platforms", "android", "app", "build", "outputs", "apk", "debug", apkName);
|
|
97
|
+
const targetFile = appFileName ? appFileName : apkName;
|
|
98
|
+
(0, fs_extra_1.copySync)(apkFile, (0, path_1.join)(copyDir, targetFile));
|
|
99
|
+
}
|
|
100
|
+
exports.copyApp = copyApp;
|
|
101
|
+
//# sourceMappingURL=cordova-build-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cordova-build-utils.js","sourceRoot":"","sources":["../../utils/cordova-build-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Plugin from "@saltcorn/data/models/plugin";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param buildDir directory where the app will be build
|
|
5
|
+
* @param plugins saltcorn plugins to install
|
|
6
|
+
*/
|
|
7
|
+
export declare function bundlePackagesAndPlugins(buildDir: string, plugins: Plugin[]): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param buildDir directory where the app will be build
|
|
11
|
+
* @param manager live-plugin-manager to load a saltcorn-plugin
|
|
12
|
+
* @param plugins saltcorn plugins
|
|
13
|
+
*/
|
|
14
|
+
export declare function copyPublicDirs(buildDir: string, manager: any, plugins: Plugin[]): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* @param buildDir directory where the app will be build
|
|
18
|
+
* @param manager live-plugin-manager to load a npm pacakage (change to dependency??)
|
|
19
|
+
*/
|
|
20
|
+
export declare function installNpmPackages(buildDir: string, manager: any): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=package-bundle-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-bundle-utils.d.ts","sourceRoot":"","sources":["../../utils/package-bundle-utils.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAIlD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,iBAsBlB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,MAAM,EAAE,iBAgBlB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAkBtE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installNpmPackages = exports.copyPublicDirs = exports.bundlePackagesAndPlugins = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const { requirePlugin } = require("@saltcorn/server/load_plugins");
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param buildDir directory where the app will be build
|
|
11
|
+
* @param plugins saltcorn plugins to install
|
|
12
|
+
*/
|
|
13
|
+
async function bundlePackagesAndPlugins(buildDir, plugins) {
|
|
14
|
+
const result = (0, child_process_1.spawnSync)("npm", [
|
|
15
|
+
"run",
|
|
16
|
+
"build",
|
|
17
|
+
"--",
|
|
18
|
+
"--env",
|
|
19
|
+
`plugins=${JSON.stringify(plugins)}`,
|
|
20
|
+
"--env",
|
|
21
|
+
`output=${buildDir}/www/js/`,
|
|
22
|
+
], {
|
|
23
|
+
cwd: (0, path_1.join)(__dirname, "../../"),
|
|
24
|
+
});
|
|
25
|
+
console.log(result.output.toString());
|
|
26
|
+
(0, fs_extra_1.rmSync)((0, path_1.join)(__dirname, "../..", "plugin_packages"), {
|
|
27
|
+
force: true,
|
|
28
|
+
recursive: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.bundlePackagesAndPlugins = bundlePackagesAndPlugins;
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param buildDir directory where the app will be build
|
|
35
|
+
* @param manager live-plugin-manager to load a saltcorn-plugin
|
|
36
|
+
* @param plugins saltcorn plugins
|
|
37
|
+
*/
|
|
38
|
+
async function copyPublicDirs(buildDir, manager, plugins) {
|
|
39
|
+
const wwwDir = (0, path_1.join)(buildDir, "www");
|
|
40
|
+
for (const plugin of plugins) {
|
|
41
|
+
const required = await requirePlugin(plugin, false, manager);
|
|
42
|
+
const srcPublicDir = (0, path_1.join)(required.location, "public");
|
|
43
|
+
if ((0, fs_extra_1.existsSync)(srcPublicDir)) {
|
|
44
|
+
const dstPublicDir = (0, path_1.join)(wwwDir, "plugins", "public", plugin.name);
|
|
45
|
+
if (!(0, fs_extra_1.existsSync)(dstPublicDir)) {
|
|
46
|
+
(0, fs_extra_1.mkdirSync)(dstPublicDir, { recursive: true });
|
|
47
|
+
}
|
|
48
|
+
for (const dirEntry of (0, fs_extra_1.readdirSync)(srcPublicDir)) {
|
|
49
|
+
(0, fs_extra_1.copySync)((0, path_1.join)(srcPublicDir, dirEntry), (0, path_1.join)(dstPublicDir, dirEntry));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.copyPublicDirs = copyPublicDirs;
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @param buildDir directory where the app will be build
|
|
58
|
+
* @param manager live-plugin-manager to load a npm pacakage (change to dependency??)
|
|
59
|
+
*/
|
|
60
|
+
async function installNpmPackages(buildDir, manager) {
|
|
61
|
+
const npmTargetDir = (0, path_1.join)(buildDir, "www", "npm_packages");
|
|
62
|
+
if (!(0, fs_extra_1.existsSync)(npmTargetDir))
|
|
63
|
+
(0, fs_extra_1.mkdirSync)(npmTargetDir, { recursive: true });
|
|
64
|
+
const jwtInfo = await manager.install("jwt-decode", "3.1.2");
|
|
65
|
+
(0, fs_extra_1.copySync)((0, path_1.join)(jwtInfo.location, "build/jwt-decode.js"), (0, path_1.join)(npmTargetDir, "jwt-decode.js"));
|
|
66
|
+
const routerInfo = await manager.install("universal-router", "9.1.0");
|
|
67
|
+
(0, fs_extra_1.copySync)((0, path_1.join)(routerInfo.location, "universal-router.min.js"), (0, path_1.join)(npmTargetDir, "universal-router.min.js"));
|
|
68
|
+
const axiosInfo = await manager.install("axios", "0.27.2");
|
|
69
|
+
(0, fs_extra_1.copySync)((0, path_1.join)(axiosInfo.location, "dist", "axios.min.js"), (0, path_1.join)(npmTargetDir, "axios.min.js"));
|
|
70
|
+
}
|
|
71
|
+
exports.installNpmPackages = installNpmPackages;
|
|
72
|
+
//# sourceMappingURL=package-bundle-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-bundle-utils.js","sourceRoot":"","sources":["../../utils/package-bundle-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
FROM node:16
|
|
2
|
+
|
|
3
|
+
RUN apt update && apt install -y wget unzip \
|
|
4
|
+
openjdk-11-jdk openjdk-11-demo openjdk-11-doc openjdk-11-jre-headless openjdk-11-source
|
|
5
|
+
|
|
6
|
+
# install android commandline tools and sdk
|
|
7
|
+
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip
|
|
8
|
+
RUN unzip commandlinetools-linux-8512546_latest.zip
|
|
9
|
+
RUN mkdir android_sdk
|
|
10
|
+
RUN yes | cmdline-tools/bin/sdkmanager --sdk_root=android_sdk --install "cmdline-tools;latest"
|
|
11
|
+
RUN android_sdk/cmdline-tools/latest/bin/sdkmanager --list
|
|
12
|
+
RUN android_sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-11"
|
|
13
|
+
RUN android_sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;30.0.3"
|
|
14
|
+
|
|
15
|
+
# download gradle
|
|
16
|
+
RUN wget -q https://services.gradle.org/distributions/gradle-7.1.1-all.zip \
|
|
17
|
+
&& unzip gradle-7.1.1-all.zip -d /opt
|
|
18
|
+
|
|
19
|
+
RUN npm install -g cordova
|
|
20
|
+
|
|
21
|
+
# create an empty project, the first init seems to take longer
|
|
22
|
+
WORKDIR /init_project
|
|
23
|
+
RUN cordova create project
|
|
24
|
+
WORKDIR /init_project/project
|
|
25
|
+
RUN cordova platform add android
|
|
26
|
+
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
|
27
|
+
ENV ANDROID_SDK_ROOT=/android_sdk
|
|
28
|
+
ENV GRADLE_HOME=/opt/gradle-7.1.1
|
|
29
|
+
ENV PATH=$PATH:/opt/gradle-7.1.1/bin
|
|
30
|
+
# stop gradle from downloading itself
|
|
31
|
+
ENV CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file\:/gradle-7.1.1-all.zip
|
|
32
|
+
RUN cordova build
|
|
33
|
+
|
|
34
|
+
# due to a bug in npm that has been addressed since then
|
|
35
|
+
# some files in '/root/.npm' are owned by root
|
|
36
|
+
RUN chown -R 1000:1000 "/root/.npm"
|
|
37
|
+
RUN chmod -R o+rwx "/root/.npm"
|
|
38
|
+
|
|
39
|
+
# prepare entry point
|
|
40
|
+
WORKDIR /
|
|
41
|
+
COPY entry.bash ./
|
|
42
|
+
RUN chmod u+x entry.bash
|
|
43
|
+
|
|
44
|
+
RUN chmod o+rwx ~
|
|
45
|
+
RUN chmod -R o+rwx ~/.config
|
|
46
|
+
|
|
47
|
+
ENTRYPOINT ["./entry.bash"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
|
4
|
+
export ANDROID_SDK_ROOT=/android_sdk
|
|
5
|
+
export GRADLE_HOME=/opt/gradle-7.1.1
|
|
6
|
+
export PATH=$PATH:/opt/gradle-7.1.1/bin
|
|
7
|
+
# stop gradle from downloading itself
|
|
8
|
+
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file\:/gradle-7.1.1-all.zip
|
|
9
|
+
|
|
10
|
+
cd /saltcorn-mobile-app
|
|
11
|
+
echo "adding android platform"
|
|
12
|
+
npm run add-platform android
|
|
13
|
+
echo "calling cordova clean";
|
|
14
|
+
cordova clean
|
|
15
|
+
echo "calling cordova build";
|
|
16
|
+
cordova build android
|
|
17
|
+
|
|
18
|
+
chmod -R o+rwx /saltcorn-mobile-app
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const { spawnSync } = require("child_process");
|
|
2
|
+
const { join } = require("path");
|
|
3
|
+
|
|
4
|
+
if (process.env.SKIP_DOCKER_IMAGE_INSTALL === "true") {
|
|
5
|
+
console.log("skipping build 'saltcorn/cordova-builder' docker image");
|
|
6
|
+
} else {
|
|
7
|
+
const result = spawnSync(
|
|
8
|
+
"docker",
|
|
9
|
+
[
|
|
10
|
+
"build",
|
|
11
|
+
__dirname,
|
|
12
|
+
"-f",
|
|
13
|
+
join(__dirname, "Dockerfile"),
|
|
14
|
+
"-t",
|
|
15
|
+
"saltcorn/cordova-builder",
|
|
16
|
+
],
|
|
17
|
+
{ cwd: ".", stdio: "inherit" }
|
|
18
|
+
);
|
|
19
|
+
if (result.error) console.log(result.error.toString());
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -3,39 +3,48 @@
|
|
|
3
3
|
"description": "plugin to to build a mobile app from a tenant application",
|
|
4
4
|
"homepage": "https://saltcorn.com",
|
|
5
5
|
"repository": "github:saltcorn/saltcorn",
|
|
6
|
-
"version": "0.7.3
|
|
6
|
+
"version": "0.7.3",
|
|
7
7
|
"author": "Christian Hugo",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"build": "webpack --mode development"
|
|
9
|
+
"build": "webpack --mode development",
|
|
10
|
+
"postinstall": "node ./docker/post-installer.js"
|
|
10
11
|
},
|
|
11
12
|
"dependencies": {
|
|
12
|
-
"@
|
|
13
|
-
"@saltcorn/
|
|
14
|
-
"@saltcorn/
|
|
15
|
-
"@saltcorn/
|
|
16
|
-
"@saltcorn/
|
|
17
|
-
"@saltcorn/
|
|
18
|
-
"@saltcorn/
|
|
19
|
-
"@saltcorn/sbadmin2": "0.7.3-beta.3",
|
|
20
|
-
"@saltcorn/mobile-app": "0.7.3-beta.3",
|
|
13
|
+
"@saltcorn/markup": "0.7.3",
|
|
14
|
+
"@saltcorn/data": "0.7.3",
|
|
15
|
+
"@saltcorn/db-common": "0.7.3",
|
|
16
|
+
"@saltcorn/server": "0.7.3",
|
|
17
|
+
"@saltcorn/base-plugin": "0.7.3",
|
|
18
|
+
"@saltcorn/sbadmin2": "0.7.3",
|
|
19
|
+
"@saltcorn/mobile-app": "0.7.3",
|
|
21
20
|
"fs-extra": "^10.0.1",
|
|
22
21
|
"live-plugin-manager": "^0.16.0",
|
|
23
|
-
"xml2js": "0.4.23"
|
|
24
|
-
},
|
|
25
|
-
"devDependencies": {
|
|
26
|
-
"@types/node": "^16.11.7",
|
|
27
22
|
"webpack-merge": "^5.8.0",
|
|
28
23
|
"webpack": "5.68.0",
|
|
29
|
-
"webpack-cli": "4.9.2"
|
|
30
|
-
|
|
24
|
+
"webpack-cli": "4.9.2"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^16.11.7"
|
|
28
|
+
},
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"exports": {
|
|
31
|
+
".": "./dist/index.js",
|
|
32
|
+
"./*": "./dist/*.js"
|
|
33
|
+
},
|
|
34
|
+
"typesVersions": {
|
|
35
|
+
"*": {
|
|
36
|
+
"*": [
|
|
37
|
+
"dist/*"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
31
40
|
},
|
|
32
41
|
"files": [
|
|
33
|
-
"/dist"
|
|
42
|
+
"/dist",
|
|
43
|
+
"/docker",
|
|
44
|
+
"webpack.config.js",
|
|
45
|
+
"!dist/tsconfig.ref.tsbuildinfo"
|
|
34
46
|
],
|
|
35
47
|
"license": "MIT",
|
|
36
|
-
"oclif": {
|
|
37
|
-
"commands": "./dist/commands"
|
|
38
|
-
},
|
|
39
48
|
"publishConfig": {
|
|
40
49
|
"access": "public"
|
|
41
50
|
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const { mergeWithCustomize, merge } = require("webpack-merge");
|
|
2
|
+
const { join } = require("path");
|
|
3
|
+
const { PluginManager } = require("live-plugin-manager");
|
|
4
|
+
const {
|
|
5
|
+
staticDependencies,
|
|
6
|
+
requirePlugin,
|
|
7
|
+
} = require("@saltcorn/server/load_plugins");
|
|
8
|
+
|
|
9
|
+
const manager = new PluginManager({
|
|
10
|
+
pluginsPath: join(__dirname, "plugin_packages", "node_modules"),
|
|
11
|
+
staticDependencies,
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const dataCfg = require(join(
|
|
15
|
+
require.resolve("@saltcorn/data"),
|
|
16
|
+
"../..",
|
|
17
|
+
"webpack.config"
|
|
18
|
+
));
|
|
19
|
+
const markupCfg = require(join(
|
|
20
|
+
require.resolve("@saltcorn/markup"),
|
|
21
|
+
"../..",
|
|
22
|
+
"webpack.config"
|
|
23
|
+
));
|
|
24
|
+
const basePluginCfg = require(join(
|
|
25
|
+
require.resolve("@saltcorn/base-plugin"),
|
|
26
|
+
"../",
|
|
27
|
+
"webpack.config"
|
|
28
|
+
));
|
|
29
|
+
const sbAdmin2Cfg = require(join(
|
|
30
|
+
require.resolve("@saltcorn/sbadmin2"),
|
|
31
|
+
"../",
|
|
32
|
+
"webpack.config"
|
|
33
|
+
));
|
|
34
|
+
|
|
35
|
+
const addDependOn = (dataEntryPoint, b) => {
|
|
36
|
+
const copy = { ...dataEntryPoint };
|
|
37
|
+
copy.data.dependOn = "markup";
|
|
38
|
+
return merge({}, copy, b);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const buildPluginEntries = async (plugins) => {
|
|
42
|
+
let result = [];
|
|
43
|
+
for (plugin of JSON.parse(plugins)) {
|
|
44
|
+
const requireResult = await requirePlugin(plugin, false, manager);
|
|
45
|
+
const additionalDependencies = requireResult.plugin_module?.dependencies
|
|
46
|
+
? requireResult.plugin_module.dependencies
|
|
47
|
+
: [];
|
|
48
|
+
const genericEntry = {
|
|
49
|
+
[plugin.name]: {
|
|
50
|
+
import: requireResult.mainFile,
|
|
51
|
+
dependOn: ["markup", "data", ...additionalDependencies],
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
result.push({
|
|
55
|
+
entry: genericEntry,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
module.exports = async (env) => {
|
|
62
|
+
const pluginEntries = env.plugins ? await buildPluginEntries(env.plugins) : [];
|
|
63
|
+
return mergeWithCustomize({
|
|
64
|
+
customizeArray(a, b, key) {
|
|
65
|
+
if (key === "library") {
|
|
66
|
+
return _.uniq([...a, ...b]);
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
},
|
|
70
|
+
customizeObject(a, b, key) {
|
|
71
|
+
if (key === "output") {
|
|
72
|
+
const copy = { ...a };
|
|
73
|
+
copy.path = env.output;
|
|
74
|
+
return copy;
|
|
75
|
+
}
|
|
76
|
+
if (key === "entry") {
|
|
77
|
+
if (a.data) return addDependOn(a, b);
|
|
78
|
+
else if (b.data) return addDependOn(b, a);
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
},
|
|
82
|
+
})(dataCfg, markupCfg, basePluginCfg, sbAdmin2Cfg, ...pluginEntries);
|
|
83
|
+
};
|