@microtronics/studio-cli 0.6.0 → 0.7.0
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/CHANGELOG.md +17 -0
- package/dist/studio-cli.d.ts +112 -0
- package/out/FS.d.ts.map +1 -1
- package/out/FS.js +14 -0
- package/out/api.d.ts.map +1 -1
- package/out/api.js +3 -1
- package/out/cliFS.d.ts.map +1 -1
- package/out/cliFS.js +16 -2
- package/out/dde/dde.d.ts.map +1 -1
- package/out/dde/dde.js +13 -2
- package/out/dde/fileGenerators/dlo.d.ts.map +1 -1
- package/out/dde/fileGenerators/dlo.js +0 -1
- package/out/defaultFiles.d.ts.map +1 -1
- package/out/defaultFiles.js +5 -2
- package/out/dlo/compiler.d.ts.map +1 -0
- package/out/dlo/compiler.js +237 -0
- package/out/dlo/dlo.d.ts.map +1 -0
- package/out/dlo/dlo.js +30 -0
- package/out/dlo/dlocc.d.ts.map +1 -0
- package/out/dlo/dlocc.js +3904 -0
- package/out/dlo/fileSequencer.d.ts.map +1 -0
- package/out/dlo/fileSequencer.js +40 -0
- package/out/dlo/preCompiler.d.ts.map +1 -0
- package/out/dlo/preCompiler.js +321 -0
- package/out/main.js +10 -3
- package/package.json +73 -71
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## 0.7.0 (2024-12-16)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **studio-cli:** dlo compiler returns errors as diagnostic information ([eb14ac9](https://bitbucket.org/microtronics-core/vscode-studio/commits/eb14ac9460d3dfd3be9221adde0a87e15eb13cd9))
|
|
9
|
+
* **studio-cli:** first working version of dlo compiler ([158e85f](https://bitbucket.org/microtronics-core/vscode-studio/commits/158e85f3e51a9288835017b928e8306896f5655e))
|
|
10
|
+
* **studio-cli:** implement `findFiles` function ([984ab83](https://bitbucket.org/microtronics-core/vscode-studio/commits/984ab83aacb1fbbd06b8b4ce7a88095a346470a1))
|
|
11
|
+
* **studio-cli:** moved dlo precompiler to the cli ([3087cbc](https://bitbucket.org/microtronics-core/vscode-studio/commits/3087cbcbe9fb494bf368ee50f6774be80c80987d))
|
|
12
|
+
|
|
13
|
+
## 0.6.1 (2024-12-12)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **studio-cli:** prevent `default.inc` to be removed due to race condition ([fbf3fcf](https://bitbucket.org/microtronics-core/vscode-studio/commits/fbf3fcfa2ef0af6ec2359aa99ccb90768d7a25ec))
|
|
19
|
+
|
|
3
20
|
## 0.6.0 (2024-12-11)
|
|
4
21
|
|
|
5
22
|
|
package/dist/studio-cli.d.ts
CHANGED
|
@@ -1037,6 +1037,13 @@ export declare namespace DDE {
|
|
|
1037
1037
|
* @param ddeJSON
|
|
1038
1038
|
*/
|
|
1039
1039
|
export function exportHistoryJson(cwd: URI, fs: LocalFS, ddeJSON: DDEJson): Promise<void>;
|
|
1040
|
+
/**
|
|
1041
|
+
* Clean up the .studio/auto/dlo directory
|
|
1042
|
+
* @param cwd
|
|
1043
|
+
* @param fs
|
|
1044
|
+
* @internal
|
|
1045
|
+
*/
|
|
1046
|
+
export function clearAutoDloDir(cwd: URI, fs: LocalFS): Promise<any>;
|
|
1040
1047
|
/**
|
|
1041
1048
|
* Generate all dde related dlo files
|
|
1042
1049
|
* @param cwd
|
|
@@ -1055,6 +1062,7 @@ export declare namespace DDE {
|
|
|
1055
1062
|
* Generate and export the default.inc file
|
|
1056
1063
|
* @param cwd
|
|
1057
1064
|
* @param fs
|
|
1065
|
+
* @internal
|
|
1058
1066
|
*/
|
|
1059
1067
|
export function exportDefaultInc(cwd: URI, fs: LocalFS): Promise<void>;
|
|
1060
1068
|
}
|
|
@@ -1336,6 +1344,7 @@ export declare namespace DefaultFiles {
|
|
|
1336
1344
|
legacyAutoDdeInc: string;
|
|
1337
1345
|
legacyAutoUplinkInc: string;
|
|
1338
1346
|
reportTemplate: string;
|
|
1347
|
+
dloCfg: string;
|
|
1339
1348
|
};
|
|
1340
1349
|
const filePaths: {
|
|
1341
1350
|
studio: {
|
|
@@ -1352,12 +1361,14 @@ export declare namespace DefaultFiles {
|
|
|
1352
1361
|
legacyAutoInc: string;
|
|
1353
1362
|
legacyAutoDdeInc: string;
|
|
1354
1363
|
legacyAutoUplinkInc: string;
|
|
1364
|
+
cfg: string;
|
|
1355
1365
|
};
|
|
1356
1366
|
};
|
|
1357
1367
|
libdeps: string;
|
|
1358
1368
|
};
|
|
1359
1369
|
dist: {
|
|
1360
1370
|
path: string;
|
|
1371
|
+
dloPath: string;
|
|
1361
1372
|
mainAmxPath: string;
|
|
1362
1373
|
mainAmxReportPath: string;
|
|
1363
1374
|
ddeXmlPath: string;
|
|
@@ -1513,6 +1524,73 @@ export declare namespace Diagnostics {
|
|
|
1513
1524
|
}
|
|
1514
1525
|
}
|
|
1515
1526
|
|
|
1527
|
+
export declare namespace DLO {
|
|
1528
|
+
const FileSequencer: typeof DloFileSequencer;
|
|
1529
|
+
export type FileSequencer = DloFileSequencer;
|
|
1530
|
+
const PreCompiler: typeof DloPreCompiler;
|
|
1531
|
+
export type PreCompiler = DloPreCompiler;
|
|
1532
|
+
/**
|
|
1533
|
+
* The DLO Compiler
|
|
1534
|
+
*/
|
|
1535
|
+
const Compiler: typeof DloCompiler;
|
|
1536
|
+
export type Compiler = DloCompiler;
|
|
1537
|
+
/**
|
|
1538
|
+
* Generate the dlo.cfg file and write it to the .studio/auto/dlo directory
|
|
1539
|
+
* @param cwd
|
|
1540
|
+
* @param fs
|
|
1541
|
+
*/
|
|
1542
|
+
export function exportDloConfig(cwd: URI, fs: LocalFS): Promise<void>;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
declare class DloCompiler {
|
|
1546
|
+
private preCompiler;
|
|
1547
|
+
private pawnCC;
|
|
1548
|
+
private stdout;
|
|
1549
|
+
private stderr;
|
|
1550
|
+
constructor();
|
|
1551
|
+
private initPawnCC;
|
|
1552
|
+
private get MEMFS();
|
|
1553
|
+
compile(cwd: URI, fs: LocalFS): Promise<{
|
|
1554
|
+
code: number;
|
|
1555
|
+
stdout: string[];
|
|
1556
|
+
stderr: string[];
|
|
1557
|
+
diagnostics: Diagnostics.File[];
|
|
1558
|
+
}>;
|
|
1559
|
+
private persistGeneratedFiles;
|
|
1560
|
+
private readConfigFile;
|
|
1561
|
+
/**
|
|
1562
|
+
* Precompile the given file and pass it to the MEMFS
|
|
1563
|
+
* @param cwd
|
|
1564
|
+
* @param fs
|
|
1565
|
+
* @param manifest
|
|
1566
|
+
* @private
|
|
1567
|
+
*/
|
|
1568
|
+
private memFSwriteFile;
|
|
1569
|
+
private memFSmkdir;
|
|
1570
|
+
private memFSstat;
|
|
1571
|
+
private parseWarningsAndErrors;
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
declare class DloFileSequencer {
|
|
1575
|
+
private readonly dloFileMap;
|
|
1576
|
+
private rootUri;
|
|
1577
|
+
constructor();
|
|
1578
|
+
set workspacePath(workspacePath: URI);
|
|
1579
|
+
getSequenceForFile(filePath: string): string;
|
|
1580
|
+
getFilePathForSequence(sequenceId: string): string | null;
|
|
1581
|
+
}
|
|
1582
|
+
|
|
1583
|
+
declare class DloPreCompiler {
|
|
1584
|
+
private pragmaDynamic;
|
|
1585
|
+
private dloFileSequencer;
|
|
1586
|
+
constructor();
|
|
1587
|
+
get pragmaDynamicFlag(): string | null;
|
|
1588
|
+
preCompileDloFile(cwd: URI, manifest: Manifest.Manifest, fileUri: URI, fileBlob: string[]): Promise<{
|
|
1589
|
+
diagnostics: Diagnostics.File[];
|
|
1590
|
+
data: string;
|
|
1591
|
+
}>;
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1516
1594
|
/**
|
|
1517
1595
|
* Permissions of a file.
|
|
1518
1596
|
*/
|
|
@@ -1603,6 +1681,24 @@ export declare namespace Globals {
|
|
|
1603
1681
|
export function read(cwd: URI, fs: LocalFS): Promise<Defines>;
|
|
1604
1682
|
}
|
|
1605
1683
|
|
|
1684
|
+
/**
|
|
1685
|
+
* A file glob pattern to match file paths against. This can either be a glob pattern string
|
|
1686
|
+
*
|
|
1687
|
+
* Glob patterns can have the following syntax:
|
|
1688
|
+
* * `*` to match zero or more characters in a path segment
|
|
1689
|
+
* * `?` to match on one character in a path segment
|
|
1690
|
+
* * `**` to match any number of path segments, including none
|
|
1691
|
+
* * `{}` to group conditions matches all TypeScript and JavaScript files)
|
|
1692
|
+
* * `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
|
|
1693
|
+
* * `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
|
|
1694
|
+
*
|
|
1695
|
+
* Note: a backslash (`\`) is not valid within a glob pattern. If you have an existing file
|
|
1696
|
+
* path to match against, consider to use the {@link RelativePattern relative pattern} support
|
|
1697
|
+
* that takes care of converting any backslash into slash. Otherwise, make sure to convert
|
|
1698
|
+
* any backslash to slash when creating the glob pattern.
|
|
1699
|
+
*/
|
|
1700
|
+
declare type GlobPattern = string;
|
|
1701
|
+
|
|
1606
1702
|
export declare namespace Helper {
|
|
1607
1703
|
/**
|
|
1608
1704
|
* Convert yaml range to an valid vscode line information
|
|
@@ -1645,6 +1741,22 @@ declare interface LocalFS {
|
|
|
1645
1741
|
*/
|
|
1646
1742
|
readFile: (path: URI) => Promise<Uint8Array>;
|
|
1647
1743
|
stat: (path: URI) => Promise<FileStat | null>;
|
|
1744
|
+
/**
|
|
1745
|
+
* Find files across all folders
|
|
1746
|
+
*
|
|
1747
|
+
*
|
|
1748
|
+
* @param include A {@link GlobPattern glob pattern} that defines the files to search for. The glob pattern
|
|
1749
|
+
* will be matched against the file paths of resulting matches relative to their workspace. Use a {@link RelativePattern relative pattern}
|
|
1750
|
+
* to restrict the search results to a {@link WorkspaceFolder workspace folder}.
|
|
1751
|
+
* @param exclude A {@link GlobPattern glob pattern} that defines files and folders to exclude. The glob pattern
|
|
1752
|
+
* will be matched against the file paths of resulting matches relative to their workspace. When `undefined`, default file-excludes (e.g. the `files.exclude`-setting
|
|
1753
|
+
* but not `search.exclude`) will apply. When `null`, no excludes will apply.
|
|
1754
|
+
* @param maxResults An upper-bound for the result.
|
|
1755
|
+
* @param token A token that can be used to signal cancellation to the underlying search engine.
|
|
1756
|
+
* @return A thenable that resolves to an array of resource identifiers. Will return no results if no
|
|
1757
|
+
* {@link workspace.workspaceFolders workspace folders} are opened.
|
|
1758
|
+
*/
|
|
1759
|
+
findFiles: (cwd: URI, include: GlobPattern, exclude?: GlobPattern) => Promise<URI[]>;
|
|
1648
1760
|
}
|
|
1649
1761
|
|
|
1650
1762
|
export declare namespace Manifest {
|
package/out/FS.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FS.d.ts","sourceRoot":"","sources":["../src/FS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,WAAW,OAAO;IACvB;;;OAGG;IACH,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FS.d.ts","sourceRoot":"","sources":["../src/FS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,WAAW,OAAO;IACvB;;;OAGG;IACH,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC9C;;;;;;;;;;;;;;OAcG;IACH,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CACrF;AACD;;;;GAIG;AACH,oBAAY,QAAQ;IACnB;;OAEG;IACH,OAAO,IAAI;IACX;;OAEG;IACH,IAAI,IAAI;IACR;;OAEG;IACH,SAAS,IAAI;IACb;;OAEG;IACH,YAAY,KAAK;CACjB;AAED;;GAEG;AACH,oBAAY,cAAc;IACzB;;;;;;;OAOG;IACH,QAAQ,IAAI;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,UAazD;AACD,wBAAgB,WAAW,CAAC,iBAAiB,GAAE,MAAW,UAEzD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,GAAG,MAAM,EAAE,CAOzE"}
|
package/out/FS.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FilePermission = exports.FileType = void 0;
|
|
4
4
|
exports.convertBlobToString = convertBlobToString;
|
|
5
|
+
exports.normalizeLF = normalizeLF;
|
|
6
|
+
exports.convertBlobToStringArray = convertBlobToStringArray;
|
|
5
7
|
/**
|
|
6
8
|
* Enumeration of file types. The types `File` and `Directory` can also be
|
|
7
9
|
* a symbolic links, in that case use `FileType.File | FileType.SymbolicLink` and
|
|
@@ -57,4 +59,16 @@ function convertBlobToString(blob) {
|
|
|
57
59
|
return '';
|
|
58
60
|
}
|
|
59
61
|
}
|
|
62
|
+
function normalizeLF(stringToNormalize = '') {
|
|
63
|
+
return stringToNormalize.replace(/\r\n|\n\r|\r/g, '\n');
|
|
64
|
+
}
|
|
65
|
+
function convertBlobToStringArray(blob) {
|
|
66
|
+
try {
|
|
67
|
+
const textData = convertBlobToString(blob).trim();
|
|
68
|
+
return normalizeLF(textData).split('\n');
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
60
74
|
//# sourceMappingURL=FS.js.map
|
package/out/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,OAAO,EACN,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,MAAM,EACN,WAAW,EACX,YAAY,EACZ,cAAc,EACd,OAAO,EACP,GAAG,EACH,CAAC"}
|
package/out/api.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Globals = exports.DeviceProfiles = exports.DefaultFiles = exports.Diagnostics = exports.Helper = exports.DDE = exports.DDE_Core = exports.Registry = exports.Manifest = exports.Dependencies = void 0;
|
|
3
|
+
exports.DLO = exports.Globals = exports.DeviceProfiles = exports.DefaultFiles = exports.Diagnostics = exports.Helper = exports.DDE = exports.DDE_Core = exports.Registry = exports.Manifest = exports.Dependencies = void 0;
|
|
4
4
|
const dependencies_1 = require("./dependencies");
|
|
5
5
|
Object.defineProperty(exports, "Dependencies", { enumerable: true, get: function () { return dependencies_1.Dependencies; } });
|
|
6
6
|
const manifest_1 = require("./manifest");
|
|
@@ -21,4 +21,6 @@ const DeviceProfiles_1 = require("./DeviceProfiles");
|
|
|
21
21
|
Object.defineProperty(exports, "DeviceProfiles", { enumerable: true, get: function () { return DeviceProfiles_1.DeviceProfiles; } });
|
|
22
22
|
const globals_1 = require("./globals");
|
|
23
23
|
Object.defineProperty(exports, "Globals", { enumerable: true, get: function () { return globals_1.Globals; } });
|
|
24
|
+
const dlo_1 = require("./dlo/dlo");
|
|
25
|
+
Object.defineProperty(exports, "DLO", { enumerable: true, get: function () { return dlo_1.DLO; } });
|
|
24
26
|
//# sourceMappingURL=api.js.map
|
package/out/cliFS.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliFS.d.ts","sourceRoot":"","sources":["../src/cliFS.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"cliFS.d.ts","sourceRoot":"","sources":["../src/cliFS.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,OAAO,EAAE,MAAM,MAAM,CAAC;AAIhE,eAAO,MAAM,KAAK,EAAE,OAkDnB,CAAC"}
|
package/out/cliFS.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.cliFS = void 0;
|
|
|
7
7
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
8
|
const FS_1 = require("./FS");
|
|
9
9
|
const vscode_uri_1 = require("vscode-uri");
|
|
10
|
-
|
|
10
|
+
const glob_1 = require("glob");
|
|
11
11
|
exports.cliFS = {
|
|
12
12
|
readFile(path) {
|
|
13
13
|
return promises_1.default.readFile(path.fsPath);
|
|
@@ -39,9 +39,23 @@ exports.cliFS = {
|
|
|
39
39
|
if (typeof content === 'string') {
|
|
40
40
|
content = new TextEncoder().encode(content);
|
|
41
41
|
}
|
|
42
|
-
const dirPath = dirname(path);
|
|
42
|
+
const dirPath = vscode_uri_1.Utils.dirname(path);
|
|
43
43
|
await promises_1.default.mkdir(dirPath.fsPath, { recursive: true });
|
|
44
44
|
return promises_1.default.writeFile(path.fsPath, content, { flag: 'w' });
|
|
45
|
+
},
|
|
46
|
+
async findFiles(cwd, include, exclude) {
|
|
47
|
+
const options = {
|
|
48
|
+
ignore: exclude,
|
|
49
|
+
nodir: true,
|
|
50
|
+
absolute: true,
|
|
51
|
+
dot: true,
|
|
52
|
+
cwd: vscode_uri_1.Utils.dirname(cwd).fsPath
|
|
53
|
+
};
|
|
54
|
+
const files = await (0, glob_1.glob)(include, options);
|
|
55
|
+
return files.map(file => {
|
|
56
|
+
const posix = file.replace(/\\/g, '/');
|
|
57
|
+
return vscode_uri_1.URI.parse(`file:///${posix}`);
|
|
58
|
+
});
|
|
45
59
|
}
|
|
46
60
|
};
|
|
47
61
|
//# sourceMappingURL=cliFS.js.map
|
package/out/dde/dde.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dde.d.ts","sourceRoot":"","sources":["../../src/dde/dde.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EAAuB,OAAO,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAc7C,eAAO,MAAM,QAAQ,QAAkC,CAAC;AAKxD,yBAAiB,GAAG,CAAC;IACpB,OAAO,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC;;OAEG;IACI,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAmB,CAAC;IAE3C,SAAsB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9E;IACD;;;;;OAKG;IACH,SAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAuC;;;;;;;OAoBtG;IAED;;;;;OAKG;IACH,SAAsB,UAAU,CAC/B,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,OAAO,EACX,QAAQ,GAAE,MAAuC,GAC/C,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,CAAA;KAAE,CAAC,CAWvE;IAaD;;;;OAIG;IACH,SAAsB,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,iBAStE;IAED;;;;;;OAMG;IACI,MAAM,WAAW,aACb,QAAQ,CAAC,QAAQ,aAChB,QAAQ,CAAC,WAAW,EAAE,cACrB,GAAG,KACb,eAAe,CAAC,WAElB,CAAC;IAEF;;OAEG;IACH;;;OAGG;IACH,SAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,UAEpD;IAED;;;;;OAKG;IACH,SAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,iBAK/E;IAED;;;;OAIG;IACH,SAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,gBAUzD;IAED;;;;;OAKG;IACH,SAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,MAclG;IAED;;;;;OAKG;IACH,SAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,iBAO9E;IAED;;;;;OAKG;IACH,SAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,iBA6C/E;IAED;;;;;OAKG;IACH,SAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,iBAqBzE;IAED
|
|
1
|
+
{"version":3,"file":"dde.d.ts","sourceRoot":"","sources":["../../src/dde/dde.ts"],"names":[],"mappings":"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"}
|
package/out/dde/dde.js
CHANGED
|
@@ -213,6 +213,16 @@ var DDE;
|
|
|
213
213
|
console.log('Generated', defaultFiles_1.DefaultFiles.filePaths.dist.historyJson);
|
|
214
214
|
}
|
|
215
215
|
DDE.exportHistoryJson = exportHistoryJson;
|
|
216
|
+
/**
|
|
217
|
+
* Clean up the .studio/auto/dlo directory
|
|
218
|
+
* @param cwd
|
|
219
|
+
* @param fs
|
|
220
|
+
* @internal
|
|
221
|
+
*/
|
|
222
|
+
async function clearAutoDloDir(cwd, fs) {
|
|
223
|
+
return fs.rm(vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.path));
|
|
224
|
+
}
|
|
225
|
+
DDE.clearAutoDloDir = clearAutoDloDir;
|
|
216
226
|
/**
|
|
217
227
|
* Generate all dde related dlo files
|
|
218
228
|
* @param cwd
|
|
@@ -220,14 +230,13 @@ var DDE;
|
|
|
220
230
|
* @param ddeJSON
|
|
221
231
|
*/
|
|
222
232
|
async function exportAutoDloFiles(cwd, fs, ddeJSON) {
|
|
233
|
+
await clearAutoDloDir(cwd, fs);
|
|
223
234
|
const manifest = await manifest_1.Manifest.read(cwd, fs);
|
|
224
235
|
const dependencies = await getDependencies(cwd, fs, manifest);
|
|
225
236
|
const globalDefines = await globals_1.Globals.read(cwd, fs);
|
|
226
237
|
const autoInc = (0, dlo_1.generateAutoIncFromMap)(ddeJSON, globalDefines, manifest);
|
|
227
238
|
const appAutoDDE = new dlo_1.AutoDDEGenerator(ddeJSON, null);
|
|
228
239
|
const appDDEInc = appAutoDDE.generate();
|
|
229
|
-
// clean the .studio/auto/dlo directory
|
|
230
|
-
await fs.rm(vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.path));
|
|
231
240
|
// generate AutoDDe Files for the libraries:
|
|
232
241
|
for (const dependency of dependencies) {
|
|
233
242
|
const libAutoDDE = new dlo_1.AutoDDEGenerator(ddeJSON, dependency.libraryName);
|
|
@@ -254,6 +263,7 @@ var DDE;
|
|
|
254
263
|
const autoDdeMainPath = vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.autoDdeInc.replace('X', 'main'));
|
|
255
264
|
await fs.writeFile(autoDdeMainPath, mainDDEInc);
|
|
256
265
|
console.log('Generated', defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.autoDdeInc.replace('X', 'main'));
|
|
266
|
+
await exportDefaultInc(cwd, fs);
|
|
257
267
|
}
|
|
258
268
|
DDE.exportAutoDloFiles = exportAutoDloFiles;
|
|
259
269
|
/**
|
|
@@ -286,6 +296,7 @@ var DDE;
|
|
|
286
296
|
* Generate and export the default.inc file
|
|
287
297
|
* @param cwd
|
|
288
298
|
* @param fs
|
|
299
|
+
* @internal
|
|
289
300
|
*/
|
|
290
301
|
async function exportDefaultInc(cwd, fs) {
|
|
291
302
|
const defaultIncPaht = vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.defaultInc);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dlo.d.ts","sourceRoot":"","sources":["../../../src/dde/fileGenerators/dlo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAUlC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAuBnC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,UA+LlH;AAED,qBAAa,gBAAgB;IAWhB,OAAO,CAAC,MAAM;IAAW,OAAO,CAAC,OAAO;IAVpD,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAA+F;gBAC7F,MAAM,EAAE,OAAO,EAAU,OAAO,EAAE,IAAI,GAAG,MAAM;IAGnE,OAAO,CAAC,IAAI;IAiBL,QAAQ;;;;IAoCf,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,8BAA8B;IAoEtC,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,uBAAuB;IA8D/B,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,2BAA2B;IAmBnC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,0BAA0B;IA8BlC,OAAO,CAAC,mBAAmB;IAiD3B;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,iBAAiB;IAoDzB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;CA6B7B;AAGD,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,OAAO;AACf;;GAEG;AACH,gBAAgB,EAAE,MAAM,EAAE,UAsI1B;AAID,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,UAqExD;AAqBD;;GAEG;AAEH
|
|
1
|
+
{"version":3,"file":"dlo.d.ts","sourceRoot":"","sources":["../../../src/dde/fileGenerators/dlo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAUlC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAuBnC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,UA+LlH;AAED,qBAAa,gBAAgB;IAWhB,OAAO,CAAC,MAAM;IAAW,OAAO,CAAC,OAAO;IAVpD,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAA+F;gBAC7F,MAAM,EAAE,OAAO,EAAU,OAAO,EAAE,IAAI,GAAG,MAAM;IAGnE,OAAO,CAAC,IAAI;IAiBL,QAAQ;;;;IAoCf,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,8BAA8B;IAoEtC,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,uBAAuB;IA8D/B,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,2BAA2B;IAmBnC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,0BAA0B;IA8BlC,OAAO,CAAC,mBAAmB;IAiD3B;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,iBAAiB;IAoDzB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;CA6B7B;AAGD,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,OAAO;AACf;;GAEG;AACH,gBAAgB,EAAE,MAAM,EAAE,UAsI1B;AAID,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,UAqExD;AAqBD;;GAEG;AAEH;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,mBAmB1D"}
|
|
@@ -891,7 +891,6 @@ function generateMainDDEFunctionBody(pawnSource, containerDefinition, readWrite)
|
|
|
891
891
|
* Generate the default.inc file
|
|
892
892
|
* @param cwd
|
|
893
893
|
* @param fs
|
|
894
|
-
* @param dependencies
|
|
895
894
|
*/
|
|
896
895
|
async function buildDefaultInc(cwd, fs) {
|
|
897
896
|
const fileContent = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultFiles.d.ts","sourceRoot":"","sources":["../src/defaultFiles.ts"],"names":[],"mappings":"AAMA,yBAAiB,YAAY,CAAC;IACtB,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"defaultFiles.d.ts","sourceRoot":"","sources":["../src/defaultFiles.ts"],"names":[],"mappings":"AAMA,yBAAiB,YAAY,CAAC;IACtB,MAAM,SAAS;;;;;;;;;;;;;;;;;;KAmBrB,CAAC;IAIK,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoDrB,CAAC;CACF"}
|
package/out/defaultFiles.js
CHANGED
|
@@ -25,7 +25,8 @@ var DefaultFiles;
|
|
|
25
25
|
legacyAutoInc: 'legacy-auto.inc',
|
|
26
26
|
legacyAutoDdeInc: 'legacy-auto-dde.inc',
|
|
27
27
|
legacyAutoUplinkInc: 'legacy-auto-uplink.inc',
|
|
28
|
-
reportTemplate: 'mdn_report_template.json'
|
|
28
|
+
reportTemplate: 'mdn_report_template.json',
|
|
29
|
+
dloCfg: 'dlo.cfg'
|
|
29
30
|
};
|
|
30
31
|
const studioAutoPath = `${studioDirectoryName}auto/`;
|
|
31
32
|
const studioAutoDloPath = `${studioAutoPath}dlo/`;
|
|
@@ -45,13 +46,15 @@ var DefaultFiles;
|
|
|
45
46
|
mainDdeInc: `${studioAutoDloPath}${DefaultFiles.fileNames.mainDdeInc}`,
|
|
46
47
|
legacyAutoInc: `${studioAutoDloPath}${DefaultFiles.fileNames.legacyAutoInc}`,
|
|
47
48
|
legacyAutoDdeInc: `${studioAutoDloPath}${DefaultFiles.fileNames.legacyAutoDdeInc}`,
|
|
48
|
-
legacyAutoUplinkInc: `${studioAutoDloPath}${DefaultFiles.fileNames.legacyAutoUplinkInc}
|
|
49
|
+
legacyAutoUplinkInc: `${studioAutoDloPath}${DefaultFiles.fileNames.legacyAutoUplinkInc}`,
|
|
50
|
+
cfg: `${studioAutoDloPath}${DefaultFiles.fileNames.dloCfg}`
|
|
49
51
|
}
|
|
50
52
|
},
|
|
51
53
|
libdeps: `${studioDirectoryName}libdeps/`
|
|
52
54
|
},
|
|
53
55
|
dist: {
|
|
54
56
|
path: deployDirectoryName,
|
|
57
|
+
dloPath: `${deployDirectoryName}dlo/`,
|
|
55
58
|
mainAmxPath: `${deployDirectoryName}dlo/${DefaultFiles.fileNames.mainAmx}`,
|
|
56
59
|
mainAmxReportPath: `${deployDirectoryName}dlo/${DefaultFiles.fileNames.mainAmxReport}`,
|
|
57
60
|
ddeXmlPath: `${deployDirectoryName}dde/${DefaultFiles.fileNames.ddeXml}`,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/dlo/compiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EAA4B,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C,qBAAa,WAAW;IACvB,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAgB;;YAKhB,UAAU;IAiBxB,OAAO,KAAK,KAAK,GAEhB;IAEY,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO;;;;;;YAkC5B,qBAAqB;YAarB,cAAc;IAS5B;;;;;;OAMG;YACW,cAAc;IAkB5B,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,sBAAsB;CA+C9B;AAMD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;;;GAwB1F"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.DloCompiler = void 0;
|
|
27
|
+
exports.generateConfigFile = generateConfigFile;
|
|
28
|
+
const preCompiler_1 = require("./preCompiler");
|
|
29
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
30
|
+
const FS_1 = require("../FS");
|
|
31
|
+
const manifest_1 = require("../manifest");
|
|
32
|
+
const defaultFiles_1 = require("../defaultFiles");
|
|
33
|
+
const dependencies_1 = require("../dependencies");
|
|
34
|
+
const iconv = __importStar(require("iconv-lite"));
|
|
35
|
+
const PAWN_MODULE = require('./dlocc.js');
|
|
36
|
+
class DloCompiler {
|
|
37
|
+
preCompiler = new preCompiler_1.DloPreCompiler();
|
|
38
|
+
pawnCC;
|
|
39
|
+
stdout = [];
|
|
40
|
+
stderr = [];
|
|
41
|
+
constructor() {
|
|
42
|
+
this.pawnCC = null;
|
|
43
|
+
}
|
|
44
|
+
async initPawnCC() {
|
|
45
|
+
this.stdout.length = 0;
|
|
46
|
+
this.stderr.length = 0;
|
|
47
|
+
this.pawnCC = await PAWN_MODULE({
|
|
48
|
+
noExitRuntime: true,
|
|
49
|
+
print: (data) => {
|
|
50
|
+
console.log(data);
|
|
51
|
+
this.stdout.push(data);
|
|
52
|
+
},
|
|
53
|
+
printErr: (err) => {
|
|
54
|
+
console.error(err);
|
|
55
|
+
this.stderr.push(err);
|
|
56
|
+
this.stdout.push(err);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
get MEMFS() {
|
|
61
|
+
return this.pawnCC.FS;
|
|
62
|
+
}
|
|
63
|
+
async compile(cwd, fs) {
|
|
64
|
+
const manifest = await manifest_1.Manifest.read(cwd, fs);
|
|
65
|
+
await this.initPawnCC();
|
|
66
|
+
const precompilerDiagnostics = await this.memFSwriteFile(cwd, fs, manifest);
|
|
67
|
+
const mainFile = vscode_uri_1.Utils.joinPath(cwd, manifest.dlo?.mainFile || defaultFiles_1.DefaultFiles.filePaths.dlo.mainDLO);
|
|
68
|
+
const options = [];
|
|
69
|
+
// todo only add cfg file to options if not already set!
|
|
70
|
+
const configFilePath = vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.cfg);
|
|
71
|
+
options.push(...(await this.readConfigFile(fs, configFilePath)));
|
|
72
|
+
if (this.preCompiler.pragmaDynamicFlag) {
|
|
73
|
+
options.push(this.preCompiler.pragmaDynamicFlag);
|
|
74
|
+
}
|
|
75
|
+
let exitCode = 0;
|
|
76
|
+
try {
|
|
77
|
+
exitCode = await this.pawnCC.callMain([uriToMemFsPath(mainFile), ...options]);
|
|
78
|
+
// compiler doesn't have any errors
|
|
79
|
+
if (exitCode === 0) {
|
|
80
|
+
await this.persistGeneratedFiles(cwd, fs, mainFile);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
console.error(e);
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
code: exitCode,
|
|
88
|
+
stdout: this.stdout,
|
|
89
|
+
stderr: this.stderr,
|
|
90
|
+
diagnostics: [...precompilerDiagnostics, ...this.parseWarningsAndErrors(this.stderr, mainFile)]
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
async persistGeneratedFiles(cwd, fs, mainFile) {
|
|
94
|
+
const baseName = vscode_uri_1.Utils.basename(mainFile).split('.')[0];
|
|
95
|
+
const possibleFiles = this.MEMFS.readdir('/');
|
|
96
|
+
for (const fileName of possibleFiles) {
|
|
97
|
+
if (fileName.startsWith(baseName)) {
|
|
98
|
+
const blob = this.MEMFS.readFile(fileName);
|
|
99
|
+
const distPath = vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.dist.dloPath, fileName);
|
|
100
|
+
await fs.writeFile(distPath, blob);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async readConfigFile(fs, configPath) {
|
|
105
|
+
if (await fs.stat(configPath)) {
|
|
106
|
+
const content = await fs.readFile(configPath);
|
|
107
|
+
return (0, FS_1.convertBlobToStringArray)(content);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Precompile the given file and pass it to the MEMFS
|
|
115
|
+
* @param cwd
|
|
116
|
+
* @param fs
|
|
117
|
+
* @param manifest
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
async memFSwriteFile(cwd, fs, manifest) {
|
|
121
|
+
const files = await fs.findFiles(cwd, '**/*.{dlo,inc}');
|
|
122
|
+
const precompilerDiagnostics = [];
|
|
123
|
+
// add dlo.cfg file to the file list
|
|
124
|
+
for (const file of files) {
|
|
125
|
+
if (await fs.stat(file)) {
|
|
126
|
+
const content = await fs.readFile(file);
|
|
127
|
+
const stringBlob = (0, FS_1.convertBlobToStringArray)(content);
|
|
128
|
+
const preCompiled = await this.preCompiler.preCompileDloFile(cwd, manifest, file, stringBlob);
|
|
129
|
+
precompilerDiagnostics.push(...preCompiled.diagnostics);
|
|
130
|
+
this.memFSmkdir(file);
|
|
131
|
+
this.MEMFS.writeFile(uriToMemFsPath(file), iconv.encode(preCompiled.data, 'cp1252'));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return precompilerDiagnostics;
|
|
135
|
+
}
|
|
136
|
+
memFSmkdir(uri) {
|
|
137
|
+
const split = uriToMemFsPath(vscode_uri_1.Utils.dirname(uri)).split('/');
|
|
138
|
+
let dirname = '';
|
|
139
|
+
split.forEach(folder => {
|
|
140
|
+
if (!folder) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
dirname += `${folder}/`;
|
|
145
|
+
if (!this.memFSstat(dirname)) {
|
|
146
|
+
this.MEMFS.mkdir(dirname);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
console.error('ensureDir', e);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
memFSstat(dirname) {
|
|
155
|
+
try {
|
|
156
|
+
this.MEMFS.stat(dirname);
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
parseWarningsAndErrors(stderr, relatedFile) {
|
|
164
|
+
const compilerDiagnostics = [];
|
|
165
|
+
const messages = stderr.filter(line => !!line.trim());
|
|
166
|
+
for (const message of messages) {
|
|
167
|
+
if ((message.includes('Assertion failed:') || message.includes('Compilation aborted.')) && relatedFile) {
|
|
168
|
+
compilerDiagnostics.push({
|
|
169
|
+
file: relatedFile,
|
|
170
|
+
level: 'error',
|
|
171
|
+
line: 0,
|
|
172
|
+
message: message
|
|
173
|
+
});
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
// regular error/warning - such as:
|
|
177
|
+
// C:\Users\aai\rmstudio\apmparts\dlo-pawn\stdlib\rm-dde.inc(392) : error 036: empty statement
|
|
178
|
+
// main.p(138) : warning 203: symbol is never used: "log_str"
|
|
179
|
+
// main.p(6) : fatal error 100: cannot read from file: "oTests/module_t"
|
|
180
|
+
const i0 = message.indexOf(' : ');
|
|
181
|
+
const i1 = message.indexOf(': ', i0 + 3);
|
|
182
|
+
const fileNameAndLineNumber = message.substring(0, i0).trim();
|
|
183
|
+
const levelAndCode = message.substring(i0 + 3, i1).trim();
|
|
184
|
+
const msg = message.substring(i1 + 2).trim();
|
|
185
|
+
// ignore lines which do not contain err/warn msg (or are empty)
|
|
186
|
+
if (!fileNameAndLineNumber || !levelAndCode || !msg) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
const [fileName, lineNumber] = fileNameAndLineNumber.split(/[()(-)]/);
|
|
190
|
+
const decodeLevelAndCode = levelAndCode.split(' ');
|
|
191
|
+
const level = decodeLevelAndCode[decodeLevelAndCode.length - 2]; //lvl is always the second last
|
|
192
|
+
let posix = fileName.replace(/\\/g, '/');
|
|
193
|
+
if (posix.startsWith('/')) {
|
|
194
|
+
posix = posix.substring(1);
|
|
195
|
+
}
|
|
196
|
+
compilerDiagnostics.push({
|
|
197
|
+
file: vscode_uri_1.URI.parse(`file:///${posix}`),
|
|
198
|
+
level,
|
|
199
|
+
line: Number(lineNumber) - 1,
|
|
200
|
+
message: msg
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
return compilerDiagnostics;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.DloCompiler = DloCompiler;
|
|
207
|
+
function uriToMemFsPath(path) {
|
|
208
|
+
return path.fsPath.replace(/\\/g, '/');
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Generates the DLO .cfg file for the dlo compiler
|
|
212
|
+
* @param cwd
|
|
213
|
+
* @param fs
|
|
214
|
+
* @param manifest
|
|
215
|
+
*/
|
|
216
|
+
async function generateConfigFile(cwd, fs, manifest) {
|
|
217
|
+
const compileOptions = [
|
|
218
|
+
'-M', //map output for pawndbg to generate link map
|
|
219
|
+
'-v2' // verbosity of stdout -> 0=quiet, 1=normal, 2=code/data/stack usage report
|
|
220
|
+
];
|
|
221
|
+
const defaultIncPath = vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.defaultInc);
|
|
222
|
+
compileOptions.push(`-p${uriToMemFsPath(defaultIncPath)}`);
|
|
223
|
+
const dloLibs = await dependencies_1.Dependencies.getDloDependencies(cwd, fs);
|
|
224
|
+
for (const dloLib of dloLibs) {
|
|
225
|
+
const dirName = vscode_uri_1.Utils.dirname(dloLib.path);
|
|
226
|
+
compileOptions.push(`-i${uriToMemFsPath(dirName)}`);
|
|
227
|
+
}
|
|
228
|
+
const dloConfiguration = manifest.dlo;
|
|
229
|
+
if (dloConfiguration) {
|
|
230
|
+
compileOptions.push(...dloConfiguration.compileOptions);
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
path: vscode_uri_1.Utils.joinPath(cwd, defaultFiles_1.DefaultFiles.filePaths.studio.auto.dlo.cfg),
|
|
234
|
+
data: compileOptions.join('\n')
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlo.d.ts","sourceRoot":"","sources":["../../src/dlo/dlo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGjC,yBAAiB,GAAG,CAAC;IACb,MAAM,aAAa,yBAAmB,CAAC;IAC9C,KAAY,aAAa,GAAG,gBAAgB,CAAC;IAEtC,MAAM,WAAW,uBAAiB,CAAC;IAC1C,KAAY,WAAW,GAAG,cAAc,CAAC;IAEzC;;OAEG;IACI,MAAM,QAAQ,oBAAc,CAAC;IACpC,KAAY,QAAQ,GAAG,WAAW,CAAC;IAEnC;;;;OAIG;IACH,SAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,iBAK1D;CACD"}
|