@metaverse-systems/the-seed 1.0.4 → 1.2.1
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/.eslintrc.json +1 -0
- package/.vscode/settings.json +14 -0
- package/README.md +530 -0
- package/dist/Build.d.ts +10 -0
- package/dist/Build.js +59 -16
- package/dist/Build.js.map +1 -1
- package/dist/Config.d.ts +1 -1
- package/dist/Config.js +2 -4
- package/dist/Config.js.map +1 -1
- package/dist/Dependencies.d.ts +14 -0
- package/dist/Dependencies.js +104 -0
- package/dist/Dependencies.js.map +1 -0
- package/dist/Package.d.ts +45 -0
- package/dist/Package.js +249 -0
- package/dist/Package.js.map +1 -0
- package/dist/ResourcePak.d.ts +2 -2
- package/dist/ResourcePak.js +19 -18
- package/dist/ResourcePak.js.map +1 -1
- package/dist/Scopes.d.ts +9 -6
- package/dist/Scopes.js.map +1 -1
- package/dist/Template.d.ts +2 -1
- package/dist/Template.js +18 -16
- package/dist/Template.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/scripts/DependenciesCLI.d.ts +3 -0
- package/dist/scripts/DependenciesCLI.js +58 -0
- package/dist/scripts/DependenciesCLI.js.map +1 -0
- package/dist/scripts/PackageCLI.d.ts +3 -0
- package/dist/scripts/PackageCLI.js +38 -0
- package/dist/scripts/PackageCLI.js.map +1 -0
- package/dist/scripts/the-seed.js +13 -0
- package/dist/scripts/the-seed.js.map +1 -1
- package/dist/types.d.ts +27 -3
- package/native/binding.gyp +20 -0
- package/native/src/addon.cpp +60 -0
- package/package.json +4 -1
- package/src/Build.ts +71 -17
- package/src/Config.ts +3 -5
- package/src/Dependencies.ts +107 -0
- package/src/Package.ts +287 -0
- package/src/ResourcePak.ts +12 -11
- package/src/Scopes.ts +4 -4
- package/src/Template.ts +10 -9
- package/src/index.ts +13 -2
- package/src/scripts/DependenciesCLI.ts +57 -0
- package/src/scripts/PackageCLI.ts +42 -0
- package/src/scripts/the-seed.ts +13 -0
- package/src/types.ts +29 -3
- package/test/Build.test.ts +223 -0
- package/test/Config.test.ts +1 -1
- package/test/Dependencies.test.ts +153 -0
- package/test/Package.test.ts +631 -0
- package/test/ResourcePak.test.ts +106 -24
- package/test/Template.test.ts +187 -0
package/dist/Scopes.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ScopeAnswersType, ScopeDefaultsType } from "./types";
|
|
1
2
|
import Config from "./Config";
|
|
2
3
|
declare class Scopes {
|
|
3
4
|
config: Config;
|
|
@@ -11,24 +12,26 @@ declare class Scopes {
|
|
|
11
12
|
askNewScope: () => ({
|
|
12
13
|
name: string;
|
|
13
14
|
message: string;
|
|
14
|
-
default:
|
|
15
|
+
default: string;
|
|
15
16
|
} | {
|
|
16
17
|
name: string;
|
|
17
18
|
message: string;
|
|
18
19
|
})[];
|
|
19
|
-
askEditScope: (defaults?:
|
|
20
|
+
askEditScope: (defaults?: ScopeDefaultsType | undefined) => {
|
|
20
21
|
name: string;
|
|
21
22
|
message: string;
|
|
22
|
-
default:
|
|
23
|
+
default: string;
|
|
23
24
|
}[];
|
|
24
|
-
createOrEditScope: (answers:
|
|
25
|
+
createOrEditScope: (answers: ScopeAnswersType) => void;
|
|
25
26
|
deleteScope: (scope: string) => void;
|
|
26
27
|
getScopes: () => string[];
|
|
27
28
|
getScope: (scope: string) => import("./types").ScopeType;
|
|
28
|
-
getQuestions: (defaults:
|
|
29
|
+
getQuestions: (defaults: {
|
|
30
|
+
scopeName?: string;
|
|
31
|
+
}) => {
|
|
29
32
|
name: string;
|
|
30
33
|
message: string;
|
|
31
|
-
default:
|
|
34
|
+
default: string | null;
|
|
32
35
|
}[];
|
|
33
36
|
}
|
|
34
37
|
export default Scopes;
|
package/dist/Scopes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scopes.js","sourceRoot":"","sources":["../src/Scopes.ts"],"names":[],"mappings":";;AAIA,MAAM,MAAM;IAGV,YAAY,MAAc;QAI1B,kBAAa,GAAG,GAAG,EAAE;YACnB,OAAO;gBACL;oBACE,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,cAAc;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;iBAC5B;aACF,CAAC;QACJ,CAAC,CAAC;QAEF,gBAAW,GAAG,GAAG,EAAE;YACjB,OAAO;gBACL;oBACE,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,iBAAiB;iBAC7B;gBACD,GAAG,IAAI,CAAC,YAAY,EAAE;aACvB,CAAC;QACJ,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"Scopes.js","sourceRoot":"","sources":["../src/Scopes.ts"],"names":[],"mappings":"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"}
|
package/dist/Template.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import Config from "./Config";
|
|
2
2
|
import Scopes from "./Scopes";
|
|
3
|
+
import { PackageType } from "./types";
|
|
3
4
|
declare class Template {
|
|
4
5
|
type: string;
|
|
5
6
|
packageDir: string;
|
|
6
7
|
config: Config;
|
|
7
8
|
scopes: Scopes;
|
|
8
|
-
package
|
|
9
|
+
package?: PackageType;
|
|
9
10
|
constructor(config: Config);
|
|
10
11
|
askName: () => ({
|
|
11
12
|
type: string;
|
package/dist/Template.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
6
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
7
|
const Scopes_1 = tslib_1.__importDefault(require("./Scopes"));
|
|
8
8
|
const build_command = "the-seed build native";
|
|
@@ -26,15 +26,16 @@ class Template {
|
|
|
26
26
|
];
|
|
27
27
|
};
|
|
28
28
|
this.copyTemplate = (scope, name) => {
|
|
29
|
-
const templateDir = path_1.default.join(
|
|
29
|
+
const templateDir = path_1.default.join(__dirname, "..", "templates", this.type);
|
|
30
30
|
const scopeDir = this.config.config.prefix + "/projects/" + scope;
|
|
31
31
|
const underscoreRegex = new RegExp("-", "g");
|
|
32
32
|
const underscoreName = name.replace(underscoreRegex, "_");
|
|
33
|
-
if (!
|
|
34
|
-
|
|
33
|
+
if (!fs_extra_1.default.existsSync(scopeDir)) {
|
|
34
|
+
fs_extra_1.default.mkdirSync(scopeDir, { recursive: true });
|
|
35
35
|
}
|
|
36
36
|
// Create package from template
|
|
37
|
-
|
|
37
|
+
console.log("Copying template from " + templateDir + " to " + this.packageDir);
|
|
38
|
+
fs_extra_1.default.copySync(templateDir, this.packageDir);
|
|
38
39
|
// Replace template variables with real values
|
|
39
40
|
const author = this.scopes.getScope(scope).author;
|
|
40
41
|
const variables = {
|
|
@@ -56,25 +57,24 @@ class Template {
|
|
|
56
57
|
files.push("SKELETON.pc.in");
|
|
57
58
|
}
|
|
58
59
|
files.forEach((file) => {
|
|
59
|
-
let temp =
|
|
60
|
+
let temp = fs_extra_1.default.readFileSync(this.packageDir + "/" + file).toString();
|
|
60
61
|
Object.keys(variables).forEach((variable) => {
|
|
61
62
|
const regex = new RegExp(variable, "g");
|
|
62
63
|
temp = temp.replace(regex, variables[variable]);
|
|
63
64
|
});
|
|
64
|
-
|
|
65
|
+
fs_extra_1.default.writeFileSync(this.packageDir + "/" + file, temp);
|
|
65
66
|
});
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
fs_extra_1.default.renameSync(this.packageDir + "/src/SKELETON.hpp", this.packageDir + "/src/" + name + ".hpp");
|
|
68
|
+
fs_extra_1.default.renameSync(this.packageDir + "/src/SKELETON.cpp", this.packageDir + "/src/" + name + ".cpp");
|
|
68
69
|
if (this.type != "program")
|
|
69
|
-
|
|
70
|
+
fs_extra_1.default.renameSync(this.packageDir + "/SKELETON.pc.in", this.packageDir + "/" + name + ".pc.in");
|
|
70
71
|
};
|
|
71
72
|
this.createPackage = (scope, name) => {
|
|
72
|
-
|
|
73
|
-
this.packageDir = scopeDir + "/" + name;
|
|
73
|
+
this.packageDir = name;
|
|
74
74
|
this.copyTemplate(scope, name);
|
|
75
75
|
// Create default package.json
|
|
76
|
-
execSync("npm init --yes", { cwd: this.packageDir });
|
|
77
|
-
this.package = JSON.parse(
|
|
76
|
+
(0, child_process_1.execSync)("npm init --yes", { cwd: this.packageDir });
|
|
77
|
+
this.package = JSON.parse(fs_extra_1.default.readFileSync(this.packageDir + "/package.json").toString());
|
|
78
78
|
this.package.author = this.scopes.getScope(scope).author;
|
|
79
79
|
this.package.license = "UNLICENSED";
|
|
80
80
|
this.package.name = scope + "/" + name;
|
|
@@ -88,7 +88,9 @@ class Template {
|
|
|
88
88
|
this.save();
|
|
89
89
|
};
|
|
90
90
|
this.save = () => {
|
|
91
|
-
|
|
91
|
+
if (!this.package)
|
|
92
|
+
return;
|
|
93
|
+
fs_extra_1.default.writeFileSync(this.packageDir + "/package.json", JSON.stringify(this.package, null, 2));
|
|
92
94
|
};
|
|
93
95
|
this.config = config;
|
|
94
96
|
this.scopes = new Scopes_1.default(config);
|
package/dist/Template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../src/Template.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../src/Template.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import Config from "./Config";
|
|
2
2
|
import Scopes from "./Scopes";
|
|
3
|
-
import
|
|
4
|
-
|
|
3
|
+
import Package from "./Package";
|
|
4
|
+
import Build from "./Build";
|
|
5
|
+
import { AuthorType, ConfigType, ScopeType, ScopesType, ScopeAnswersType, ScopeDefaultsType, ResourceType, PackageType, ScriptArgsType, DependencyResultType, BuildStep } from "./types";
|
|
6
|
+
export { Config, Scopes, Package, Build, AuthorType, ConfigType, ScopeType, ScopesType, ScopeAnswersType, ScopeDefaultsType, ResourceType, PackageType, ScriptArgsType, DependencyResultType, BuildStep };
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Scopes = exports.Config = void 0;
|
|
3
|
+
exports.Build = exports.Package = exports.Scopes = exports.Config = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const Config_1 = tslib_1.__importDefault(require("./Config"));
|
|
6
6
|
exports.Config = Config_1.default;
|
|
7
7
|
const Scopes_1 = tslib_1.__importDefault(require("./Scopes"));
|
|
8
8
|
exports.Scopes = Scopes_1.default;
|
|
9
|
+
const Package_1 = tslib_1.__importDefault(require("./Package"));
|
|
10
|
+
exports.Package = Package_1.default;
|
|
11
|
+
const Build_1 = tslib_1.__importDefault(require("./Build"));
|
|
12
|
+
exports.Build = Build_1.default;
|
|
9
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,8DAA8B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,8DAA8B;AAO5B,iBAPK,gBAAM,CAOL;AANR,8DAA8B;AAO5B,iBAPK,gBAAM,CAOL;AANR,gEAAgC;AAO9B,kBAPK,iBAAO,CAOL;AANT,4DAA4B;AAO1B,gBAPK,eAAK,CAOL"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const Dependencies_1 = require("../Dependencies");
|
|
5
|
+
const Config_1 = tslib_1.__importDefault(require("../Config"));
|
|
6
|
+
const DependenciesCLI = (scriptConfig) => {
|
|
7
|
+
const config = new Config_1.default(scriptConfig.configDir);
|
|
8
|
+
const command = scriptConfig.args[3];
|
|
9
|
+
const target = scriptConfig.args[4] ? scriptConfig.args[4] : "native";
|
|
10
|
+
switch (command) {
|
|
11
|
+
case "help":
|
|
12
|
+
console.log("\nUsage: the-seed dependencies <command>");
|
|
13
|
+
console.log("\nAvailable commands:");
|
|
14
|
+
console.log(" help - Show this help message");
|
|
15
|
+
console.log(" check - Check if dependencies are installed");
|
|
16
|
+
break;
|
|
17
|
+
case "check":
|
|
18
|
+
if ((0, Dependencies_1.checkLibEcs)(config, target)) {
|
|
19
|
+
console.log("libecs-cpp is installed.");
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log("libecs-cpp is not installed.");
|
|
23
|
+
}
|
|
24
|
+
if ((0, Dependencies_1.checkLibTheSeed)(config, target)) {
|
|
25
|
+
console.log("libthe-seed is installed.");
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log("libthe-seed is not installed.");
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
case "install":
|
|
32
|
+
if (!(0, Dependencies_1.checkLibEcs)(config, target)) {
|
|
33
|
+
console.log("Installing libecs-cpp...");
|
|
34
|
+
if ((0, Dependencies_1.installLibEcs)(config, target)) {
|
|
35
|
+
console.log("libecs-cpp installed successfully.");
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.error("Failed to install libecs-cpp.");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!(0, Dependencies_1.checkLibTheSeed)(config, target)) {
|
|
42
|
+
console.log("Installing libthe-seed...");
|
|
43
|
+
if ((0, Dependencies_1.installLibTheSeed)(config, target)) {
|
|
44
|
+
console.log("libthe-seed installed successfully.");
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error("Failed to install libthe-seed.");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
default:
|
|
52
|
+
console.log("Invalid command. Use 'the-seed dependencies help' for usage information.");
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
57
|
+
exports.default = DependenciesCLI;
|
|
58
|
+
//# sourceMappingURL=DependenciesCLI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependenciesCLI.js","sourceRoot":"","sources":["../../src/scripts/DependenciesCLI.ts"],"names":[],"mappings":";;;AAAA,kDAAiG;AACjG,+DAA+B;AAG/B,MAAM,eAAe,GAAG,CAAC,YAA4B,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEtE,QAAQ,OAAO,EAAE;QACf,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,MAAM;QACR,KAAK,OAAO;YACV,IAAI,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aACzC;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;aAC7C;YACD,IAAI,IAAA,8BAAe,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;aAC1C;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;aAC9C;YACD,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,CAAC,IAAA,0BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;gBAChC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACxC,IAAI,IAAA,4BAAa,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;oBACjC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;iBACnD;qBAAM;oBACL,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBAChD;aACF;YACD,IAAI,CAAC,IAAA,8BAAe,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;gBACpC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,IAAI,IAAA,gCAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE;oBACrC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;iBACpD;qBAAM;oBACL,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;iBACjD;aACF;YACD,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CACT,0EAA0E,CAC3E,CAAC;YACF,MAAM;KACT;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const Config_1 = tslib_1.__importDefault(require("../Config"));
|
|
5
|
+
const Package_1 = tslib_1.__importDefault(require("../Package"));
|
|
6
|
+
const PackageCLI = (scriptConfig) => {
|
|
7
|
+
const command = scriptConfig.args[3];
|
|
8
|
+
// No arguments or help subcommand
|
|
9
|
+
if (!command || command === "help") {
|
|
10
|
+
console.log("Usage: the-seed package <output-directory> <project-dir> [project-dir2] ...");
|
|
11
|
+
console.log("");
|
|
12
|
+
console.log("Package binaries with their shared library dependencies into a directory.");
|
|
13
|
+
console.log("");
|
|
14
|
+
console.log("Arguments:");
|
|
15
|
+
console.log(" output-directory Name of the output directory to create");
|
|
16
|
+
console.log(" project-dir Project directories containing src/Makefile.am");
|
|
17
|
+
console.log("");
|
|
18
|
+
console.log("The command reads src/Makefile.am to determine the binary type and name,");
|
|
19
|
+
console.log("resolves installed binaries for all build targets, uses DependencyLister");
|
|
20
|
+
console.log("to find shared library dependencies, and copies everything into the output directory.");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const outputDir = command;
|
|
24
|
+
const projectDirs = scriptConfig.args.slice(4);
|
|
25
|
+
// No project directories specified
|
|
26
|
+
if (projectDirs.length === 0) {
|
|
27
|
+
console.error("Usage: the-seed package <output-directory> <project-dir> [project-dir2] ...");
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const config = new Config_1.default(scriptConfig.configDir);
|
|
31
|
+
const pkg = new Package_1.default(config);
|
|
32
|
+
const success = pkg.run(outputDir, projectDirs);
|
|
33
|
+
if (!success) {
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.default = PackageCLI;
|
|
38
|
+
//# sourceMappingURL=PackageCLI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageCLI.js","sourceRoot":"","sources":["../../src/scripts/PackageCLI.ts"],"names":[],"mappings":";;;AAAA,+DAA+B;AAC/B,iEAAiC;AAGjC,MAAM,UAAU,GAAG,CAAC,YAA4B,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErC,kCAAkC;IAClC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;QACrG,OAAO;KACR;IAED,MAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE/C,mCAAmC;IACnC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
package/dist/scripts/the-seed.js
CHANGED
|
@@ -9,6 +9,8 @@ const ScopesCLI_1 = tslib_1.__importDefault(require("./ScopesCLI"));
|
|
|
9
9
|
const TemplateCLI_1 = tslib_1.__importDefault(require("./TemplateCLI"));
|
|
10
10
|
const BuildCLI_1 = tslib_1.__importDefault(require("./BuildCLI"));
|
|
11
11
|
const ResourcePakCLI_1 = tslib_1.__importDefault(require("./ResourcePakCLI"));
|
|
12
|
+
const DependenciesCLI_1 = tslib_1.__importDefault(require("./DependenciesCLI"));
|
|
13
|
+
const PackageCLI_1 = tslib_1.__importDefault(require("./PackageCLI"));
|
|
12
14
|
const homedir = os_1.default.homedir;
|
|
13
15
|
const scriptConfig = {
|
|
14
16
|
binName: path_1.default.basename(process.argv[1]),
|
|
@@ -18,10 +20,12 @@ const scriptConfig = {
|
|
|
18
20
|
const section = scriptConfig.args[2] || "help";
|
|
19
21
|
switch (section) {
|
|
20
22
|
case "help":
|
|
23
|
+
console.log(scriptConfig.binName + " dependencies");
|
|
21
24
|
console.log(scriptConfig.binName + " build");
|
|
22
25
|
console.log(scriptConfig.binName + " config");
|
|
23
26
|
console.log(scriptConfig.binName + " scopes");
|
|
24
27
|
console.log(scriptConfig.binName + " template");
|
|
28
|
+
console.log(scriptConfig.binName + " package");
|
|
25
29
|
console.log(scriptConfig.binName + " resource-pak");
|
|
26
30
|
break;
|
|
27
31
|
case "config":
|
|
@@ -39,5 +43,14 @@ switch (section) {
|
|
|
39
43
|
case "resource-pak":
|
|
40
44
|
(0, ResourcePakCLI_1.default)(scriptConfig);
|
|
41
45
|
break;
|
|
46
|
+
case "dependencies":
|
|
47
|
+
(0, DependenciesCLI_1.default)(scriptConfig);
|
|
48
|
+
break;
|
|
49
|
+
case "package":
|
|
50
|
+
(0, PackageCLI_1.default)(scriptConfig);
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
console.log("Invalid command. Use 'the-seed help' for usage information.");
|
|
54
|
+
break;
|
|
42
55
|
}
|
|
43
56
|
//# sourceMappingURL=the-seed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"the-seed.js","sourceRoot":"","sources":["../../src/scripts/the-seed.ts"],"names":[],"mappings":";;;;AACA,oDAAoB;AACpB,wDAAwB;AACxB,oEAAoC;AACpC,oEAAqC;AACrC,wEAAwC;AACxC,kEAAkC;AAClC,8EAA8C;
|
|
1
|
+
{"version":3,"file":"the-seed.js","sourceRoot":"","sources":["../../src/scripts/the-seed.ts"],"names":[],"mappings":";;;;AACA,oDAAoB;AACpB,wDAAwB;AACxB,oEAAoC;AACpC,oEAAqC;AACrC,wEAAwC;AACxC,kEAAkC;AAClC,8EAA8C;AAC9C,gFAAgD;AAChD,sEAAsC;AAGtC,MAAM,OAAO,GAAG,YAAE,CAAC,OAAO,CAAC;AAE3B,MAAM,YAAY,GAAmB;IACnC,OAAO,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,SAAS,EAAE,OAAO,GAAG,WAAW;CACjC,CAAC;AAEF,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAE/C,QAAO,OAAO,EACd;IACE,KAAK,MAAM;QACT,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC;QACpD,MAAM;IACR,KAAK,QAAQ;QACX,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC;QACxB,MAAM;IACR,KAAK,QAAQ;QACX,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC;QACxB,MAAM;IACR,KAAK,UAAU;QACb,IAAA,qBAAW,EAAC,YAAY,CAAC,CAAC;QAC1B,MAAM;IACR,KAAK,OAAO;QACV,IAAA,kBAAQ,EAAC,YAAY,CAAC,CAAC;QACvB,MAAM;IACR,KAAK,cAAc;QACjB,IAAA,wBAAc,EAAC,YAAY,CAAC,CAAC;QAC7B,MAAM;IACR,KAAK,cAAc;QACjB,IAAA,yBAAe,EAAC,YAAY,CAAC,CAAC;QAC9B,MAAM;IACR,KAAK,SAAS;QACZ,IAAA,oBAAU,EAAC,YAAY,CAAC,CAAC;QACzB,MAAM;IACR;QACE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,MAAM;CACT"}
|
package/dist/types.d.ts
CHANGED
|
@@ -10,7 +10,6 @@ export interface ScopesType {
|
|
|
10
10
|
[index: string]: ScopeType;
|
|
11
11
|
}
|
|
12
12
|
export interface ConfigType {
|
|
13
|
-
[index: string]: any;
|
|
14
13
|
prefix: string;
|
|
15
14
|
scopes: ScopesType;
|
|
16
15
|
}
|
|
@@ -23,7 +22,9 @@ export interface ResourceType {
|
|
|
23
22
|
name: string;
|
|
24
23
|
filename: string;
|
|
25
24
|
size: number;
|
|
26
|
-
attributes?:
|
|
25
|
+
attributes?: {
|
|
26
|
+
[key: string]: string;
|
|
27
|
+
};
|
|
27
28
|
}
|
|
28
29
|
export interface PackageType {
|
|
29
30
|
author: AuthorType;
|
|
@@ -34,5 +35,28 @@ export interface PackageType {
|
|
|
34
35
|
[index: string]: string;
|
|
35
36
|
};
|
|
36
37
|
resources: ResourceType[];
|
|
37
|
-
main?:
|
|
38
|
+
main?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ScopeAnswersType {
|
|
41
|
+
scopeName: string;
|
|
42
|
+
authorName: string;
|
|
43
|
+
authorEmail: string;
|
|
44
|
+
authorURL: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ScopeDefaultsType {
|
|
47
|
+
name?: string;
|
|
48
|
+
email?: string;
|
|
49
|
+
url?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface DependencyResultType {
|
|
52
|
+
dependencies: Record<string, string[]>;
|
|
53
|
+
errors: Record<string, string>;
|
|
54
|
+
}
|
|
55
|
+
export interface BuildStep {
|
|
56
|
+
/** Human-readable step name (e.g., 'autogen', 'configure', 'compile', 'install') */
|
|
57
|
+
label: string;
|
|
58
|
+
/** Shell command to execute */
|
|
59
|
+
command: string;
|
|
60
|
+
/** If true, non-zero exit codes do not abort the build (used for 'make distclean') */
|
|
61
|
+
ignoreExitCode?: boolean;
|
|
38
62
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"targets": [
|
|
3
|
+
{
|
|
4
|
+
"target_name": "dependency_lister",
|
|
5
|
+
"sources": ["src/addon.cpp"],
|
|
6
|
+
"include_dirs": [
|
|
7
|
+
"<!@(node -p \"require('node-addon-api').include\")",
|
|
8
|
+
"<!@(pkg-config --cflags-only-I the-seed | sed 's/-I//g')"
|
|
9
|
+
],
|
|
10
|
+
"libraries": [
|
|
11
|
+
"<!@(pkg-config --libs the-seed)",
|
|
12
|
+
"<!@(pkg-config --libs-only-L the-seed | sed 's/-L/-Wl,-rpath,/g')"
|
|
13
|
+
],
|
|
14
|
+
"cflags!": ["-fno-exceptions"],
|
|
15
|
+
"cflags_cc!": ["-fno-exceptions"],
|
|
16
|
+
"cflags_cc": ["-std=c++20"],
|
|
17
|
+
"defines": ["NAPI_DISABLE_CPP_EXCEPTIONS"]
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#include <napi.h>
|
|
2
|
+
#include <libthe-seed/DependencyLister.hpp>
|
|
3
|
+
#include <string>
|
|
4
|
+
#include <vector>
|
|
5
|
+
#include <map>
|
|
6
|
+
|
|
7
|
+
Napi::Value ListDependencies(const Napi::CallbackInfo& info) {
|
|
8
|
+
Napi::Env env = info.Env();
|
|
9
|
+
|
|
10
|
+
if (info.Length() < 2 || !info[0].IsArray() || !info[1].IsArray()) {
|
|
11
|
+
Napi::TypeError::New(env, "Expected two array arguments: binaryPaths, searchPaths")
|
|
12
|
+
.ThrowAsJavaScriptException();
|
|
13
|
+
return env.Null();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
Napi::Array jsBinaryPaths = info[0].As<Napi::Array>();
|
|
17
|
+
Napi::Array jsSearchPaths = info[1].As<Napi::Array>();
|
|
18
|
+
|
|
19
|
+
std::vector<std::string> binaryPaths;
|
|
20
|
+
for (uint32_t i = 0; i < jsBinaryPaths.Length(); i++) {
|
|
21
|
+
binaryPaths.push_back(jsBinaryPaths.Get(i).As<Napi::String>().Utf8Value());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
std::vector<std::string> searchPaths;
|
|
25
|
+
for (uint32_t i = 0; i < jsSearchPaths.Length(); i++) {
|
|
26
|
+
searchPaths.push_back(jsSearchPaths.Get(i).As<Napi::String>().Utf8Value());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
DependencyLister lister;
|
|
30
|
+
auto result = lister.ListDependencies(binaryPaths, searchPaths);
|
|
31
|
+
|
|
32
|
+
Napi::Object jsResult = Napi::Object::New(env);
|
|
33
|
+
|
|
34
|
+
// Convert dependencies map: Record<string, string[]>
|
|
35
|
+
Napi::Object jsDeps = Napi::Object::New(env);
|
|
36
|
+
for (const auto& [libPath, dependents] : result.dependencies) {
|
|
37
|
+
Napi::Array jsDependents = Napi::Array::New(env, dependents.size());
|
|
38
|
+
for (size_t i = 0; i < dependents.size(); i++) {
|
|
39
|
+
jsDependents.Set(i, Napi::String::New(env, dependents[i]));
|
|
40
|
+
}
|
|
41
|
+
jsDeps.Set(libPath, jsDependents);
|
|
42
|
+
}
|
|
43
|
+
jsResult.Set("dependencies", jsDeps);
|
|
44
|
+
|
|
45
|
+
// Convert errors map: Record<string, string>
|
|
46
|
+
Napi::Object jsErrors = Napi::Object::New(env);
|
|
47
|
+
for (const auto& [binaryPath, errorMsg] : result.errors) {
|
|
48
|
+
jsErrors.Set(binaryPath, Napi::String::New(env, errorMsg));
|
|
49
|
+
}
|
|
50
|
+
jsResult.Set("errors", jsErrors);
|
|
51
|
+
|
|
52
|
+
return jsResult;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
Napi::Object Init(Napi::Env env, Napi::Object exports) {
|
|
56
|
+
exports.Set("listDependencies", Napi::Function::New(env, ListDependencies));
|
|
57
|
+
return exports;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
NODE_API_MODULE(dependency_lister, Init)
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaverse-systems/the-seed",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "The Seed",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"lint": "./node_modules/eslint/bin/eslint.js src/*",
|
|
8
8
|
"lint-fix": "./node_modules/eslint/bin/eslint.js src/* --fix",
|
|
9
9
|
"build": "tsc",
|
|
10
|
+
"build-addon": "node-gyp rebuild --directory=native",
|
|
10
11
|
"test": "./node_modules/jest/bin/jest.js"
|
|
11
12
|
},
|
|
12
13
|
"repository": {
|
|
@@ -22,6 +23,7 @@
|
|
|
22
23
|
"dependencies": {
|
|
23
24
|
"fs-extra": "^10.0.1",
|
|
24
25
|
"inquirer": "^8.2.2",
|
|
26
|
+
"node-addon-api": "^5.0.0",
|
|
25
27
|
"tslib": "^2.3.1",
|
|
26
28
|
"typescript": "^4.6.2"
|
|
27
29
|
},
|
|
@@ -30,6 +32,7 @@
|
|
|
30
32
|
},
|
|
31
33
|
"keywords": [],
|
|
32
34
|
"devDependencies": {
|
|
35
|
+
"@types/fs-extra": "^11.0.4",
|
|
33
36
|
"@types/inquirer": "^8.2.0",
|
|
34
37
|
"@types/jest": "^27.4.1",
|
|
35
38
|
"@types/node": "^17.0.21",
|