1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
|
4 | const fs = require("fs");
|
5 | const xml2js = require("xml2js");
|
6 | const fileExtensions = {
|
7 | ".c.lua": "client",
|
8 | ".s.lua": "server",
|
9 | ".b.lua": "shared"
|
10 | };
|
11 | function readDirs(filepath) {
|
12 | let filePaths = [];
|
13 | fs.readdirSync(filepath).forEach((file) => {
|
14 | if (fs.lstatSync(filepath + "/" + file).isDirectory()) {
|
15 | filePaths = filePaths.concat(readDirs(filepath + "/" + file));
|
16 | }
|
17 | else {
|
18 | filePaths.push(filepath + "/" + file);
|
19 | }
|
20 | });
|
21 | return filePaths;
|
22 | }
|
23 | function generateMetaEntries(files, sourceMaps) {
|
24 | const clientScripts = files.filter((file) => /\.c.lua$/.test(file)).map((file) => {
|
25 | return {
|
26 | $: {
|
27 | src: file,
|
28 | type: "client"
|
29 | }
|
30 | };
|
31 | });
|
32 | const serverScripts = files.filter((file) => /\.s.lua$/.test(file)).map((file) => {
|
33 | return {
|
34 | $: {
|
35 | src: file,
|
36 | type: "server"
|
37 | }
|
38 | };
|
39 | });
|
40 | const sharedScripts = files.filter((file) => /\.b.lua$/.test(file)).map((file) => {
|
41 | return {
|
42 | $: {
|
43 | src: file,
|
44 | type: "shared"
|
45 | }
|
46 | };
|
47 | });
|
48 | let sourceMapperFilePaths = [];
|
49 | if (sourceMaps) {
|
50 | sourceMapperFilePaths = [
|
51 | {
|
52 | $: {
|
53 | src: 'TypeScriptHelpers/ClientSourceMapper.lua',
|
54 | type: 'client'
|
55 | }
|
56 | },
|
57 | {
|
58 | $: {
|
59 | src: 'TypeScriptHelpers/ServerSourceMapper.lua',
|
60 | type: 'server'
|
61 | }
|
62 | }
|
63 | ];
|
64 | }
|
65 | return clientScripts.concat(serverScripts).concat(clientScripts).concat(sharedScripts).concat(sourceMapperFilePaths);
|
66 | }
|
67 | exports.generateMetaEntries = generateMetaEntries;
|
68 | function buildMeta(answers) {
|
69 | const filePaths = readDirs("dist");
|
70 | const meta = {
|
71 | meta: {
|
72 | info: [
|
73 | {
|
74 | $: {
|
75 | author: answers.author,
|
76 | description: answers.description,
|
77 | type: answers.type,
|
78 | name: answers.name,
|
79 | version: answers.version
|
80 | }
|
81 | }
|
82 | ],
|
83 | oop: ['true'],
|
84 | script: [],
|
85 | file: [],
|
86 | }
|
87 | };
|
88 | console.log(filePaths);
|
89 | meta.meta.script = meta.meta.script.concat(generateMetaEntries(filePaths, answers.generateSourceMap));
|
90 | const builder = new xml2js.Builder();
|
91 | const newMeta = builder.buildObject(meta);
|
92 | fs.writeFileSync("meta.xml", newMeta);
|
93 | }
|
94 | exports.buildMeta = buildMeta;
|