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