atcoder-gui 0.1.7 → 1.1.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/README.md +7 -0
- package/dist/analyzer/analyzer.d.ts +16 -0
- package/dist/analyzer/analyzer.d.ts.map +1 -0
- package/dist/analyzer/analyzer.js +379 -0
- package/dist/analyzer/analyzer.js.map +1 -0
- package/dist/analyzer/html-parser.d.ts +24 -0
- package/dist/analyzer/html-parser.d.ts.map +1 -0
- package/dist/analyzer/html-parser.js +214 -0
- package/dist/analyzer/html-parser.js.map +1 -0
- package/dist/analyzer/index.d.ts +7 -0
- package/dist/analyzer/index.d.ts.map +1 -0
- package/dist/analyzer/index.js +7 -0
- package/dist/analyzer/index.js.map +1 -0
- package/dist/analyzer/lexer.d.ts +14 -0
- package/dist/analyzer/lexer.d.ts.map +1 -0
- package/dist/analyzer/lexer.js +133 -0
- package/dist/analyzer/lexer.js.map +1 -0
- package/dist/analyzer/match.d.ts +7 -0
- package/dist/analyzer/match.d.ts.map +1 -0
- package/dist/analyzer/match.js +133 -0
- package/dist/analyzer/match.js.map +1 -0
- package/dist/analyzer/parser.d.ts +20 -0
- package/dist/analyzer/parser.d.ts.map +1 -0
- package/dist/analyzer/parser.js +135 -0
- package/dist/analyzer/parser.js.map +1 -0
- package/dist/analyzer/types.d.ts +54 -0
- package/dist/analyzer/types.d.ts.map +1 -0
- package/dist/analyzer/types.js +10 -0
- package/dist/analyzer/types.js.map +1 -0
- package/dist/analyzer/typing.d.ts +10 -0
- package/dist/analyzer/typing.d.ts.map +1 -0
- package/dist/analyzer/typing.js +246 -0
- package/dist/analyzer/typing.js.map +1 -0
- package/dist/browser.d.ts +12 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +26 -1
- package/dist/browser.js.map +1 -1
- package/dist/build.d.ts +7 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +40 -0
- package/dist/build.js.map +1 -0
- package/dist/config.d.ts +10 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -18
- package/dist/config.js.map +1 -1
- package/dist/config.json5 +16 -1
- package/dist/gen.d.ts +6 -12
- package/dist/gen.d.ts.map +1 -1
- package/dist/gen.js +153 -66
- package/dist/gen.js.map +1 -1
- package/dist/generator/checker.d.ts +2 -0
- package/dist/generator/checker.d.ts.map +1 -0
- package/dist/generator/checker.js +64 -0
- package/dist/generator/checker.js.map +1 -0
- package/dist/generator/cplusplus.d.ts +14 -0
- package/dist/generator/cplusplus.d.ts.map +1 -0
- package/dist/generator/cplusplus.js +43 -0
- package/dist/generator/cplusplus.js.map +1 -0
- package/dist/generator/fetcher.d.ts +2 -0
- package/dist/generator/fetcher.d.ts.map +1 -0
- package/dist/generator/fetcher.js +39 -0
- package/dist/generator/fetcher.js.map +1 -0
- package/dist/generator/pipeline.d.ts +25 -0
- package/dist/generator/pipeline.d.ts.map +1 -0
- package/dist/generator/pipeline.js +85 -0
- package/dist/generator/pipeline.js.map +1 -0
- package/dist/generator/python.d.ts +14 -0
- package/dist/generator/python.d.ts.map +1 -0
- package/dist/generator/python.js +41 -0
- package/dist/generator/python.js.map +1 -0
- package/dist/generator/types.d.ts +79 -0
- package/dist/generator/types.d.ts.map +1 -0
- package/dist/generator/types.js +2 -0
- package/dist/generator/types.js.map +1 -0
- package/dist/generator/universal.d.ts +35 -0
- package/dist/generator/universal.d.ts.map +1 -0
- package/dist/generator/universal.js +524 -0
- package/dist/generator/universal.js.map +1 -0
- package/dist/generator/variable-extractor.d.ts +16 -0
- package/dist/generator/variable-extractor.d.ts.map +1 -0
- package/dist/generator/variable-extractor.js +103 -0
- package/dist/generator/variable-extractor.js.map +1 -0
- package/dist/main.d.ts +3 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +103 -102
- package/dist/main.js.map +1 -1
- package/dist/submit.d.ts +3 -2
- package/dist/submit.d.ts.map +1 -1
- package/dist/submit.js +48 -33
- package/dist/submit.js.map +1 -1
- package/dist/test.d.ts +10 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +127 -0
- package/dist/test.js.map +1 -0
- package/dist/tests/batch_check.d.ts +2 -0
- package/dist/tests/batch_check.d.ts.map +1 -0
- package/dist/tests/batch_check.js +46 -0
- package/dist/tests/batch_check.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +12 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +32 -0
- package/dist/utils.js.map +1 -1
- package/package.json +21 -4
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { VarType, } from "../analyzer/types.js";
|
|
2
|
+
export class VariableExtractor {
|
|
3
|
+
vars = new Map();
|
|
4
|
+
collapsedVars = new Set();
|
|
5
|
+
setCollapsedVars(collapsedVars) {
|
|
6
|
+
this.collapsedVars = collapsedVars;
|
|
7
|
+
}
|
|
8
|
+
extract(node) {
|
|
9
|
+
this.visit(node, []);
|
|
10
|
+
}
|
|
11
|
+
visit(node, loops) {
|
|
12
|
+
if (!node)
|
|
13
|
+
return;
|
|
14
|
+
if (node.type === "format") {
|
|
15
|
+
node.children.forEach((c) => this.visit(c, loops));
|
|
16
|
+
}
|
|
17
|
+
else if (node.type === "loop") {
|
|
18
|
+
const loop = node;
|
|
19
|
+
// Visit bounds first
|
|
20
|
+
this.visit(loop.start, loops);
|
|
21
|
+
this.visit(loop.end, loops);
|
|
22
|
+
// Visit body with updated loop stack
|
|
23
|
+
loop.body.forEach((c) => this.visit(c, [...loops, loop]));
|
|
24
|
+
}
|
|
25
|
+
else if (node.type === "item") {
|
|
26
|
+
const item = node;
|
|
27
|
+
const existing = this.vars.get(item.name) || {
|
|
28
|
+
dims: 0,
|
|
29
|
+
indices: [],
|
|
30
|
+
loopDepth: 0,
|
|
31
|
+
};
|
|
32
|
+
const currentLoopDepth = loops.length;
|
|
33
|
+
// We only update if we find a usage with MORE dimensions, or if it's new.
|
|
34
|
+
// Usually the usage with most dimensions defines the array.
|
|
35
|
+
// E.g. A_i ... A_N implies A is vector.
|
|
36
|
+
if (item.indices.length >= existing.dims) {
|
|
37
|
+
const indices = [];
|
|
38
|
+
for (const idx of item.indices) {
|
|
39
|
+
let resolvedSize = idx;
|
|
40
|
+
// Try to resolve index to a loop bound
|
|
41
|
+
// Heuristic: if index is a simple variable and matches a loop variable, use loop end
|
|
42
|
+
if (idx.type === "item") {
|
|
43
|
+
const idxName = idx.name;
|
|
44
|
+
const loop = loops.find((l) => l.variable === idxName);
|
|
45
|
+
if (loop) {
|
|
46
|
+
resolvedSize = loop.end;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
indices.push(resolvedSize);
|
|
50
|
+
}
|
|
51
|
+
// Keep the MAX loop depth seen for this variable (or should we strictly bind depth to definition?)
|
|
52
|
+
// If defined in Loop, depth is > 0.
|
|
53
|
+
// We use the depth at the point of definition (maximum dimensions).
|
|
54
|
+
this.vars.set(item.name, {
|
|
55
|
+
dims: item.indices.length,
|
|
56
|
+
indices,
|
|
57
|
+
loopDepth: currentLoopDepth,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (node.type === "binop") {
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
const bin = node;
|
|
64
|
+
this.visit(bin.left, loops);
|
|
65
|
+
this.visit(bin.right, loops);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
getVariables(types) {
|
|
69
|
+
return Array.from(this.vars.entries()).map(([name, info]) => {
|
|
70
|
+
let dims = info.dims;
|
|
71
|
+
let indices = info.indices;
|
|
72
|
+
const type = types[name] || VarType.ValueInt;
|
|
73
|
+
// Rule 1: Explicitly collapsed variables (Standard match failed, Collapse succeeded)
|
|
74
|
+
if (this.collapsedVars.has(name) && dims > 0) {
|
|
75
|
+
dims -= 1;
|
|
76
|
+
indices = indices.slice(0, -1);
|
|
77
|
+
}
|
|
78
|
+
// Rule 2: String anomaly (Standard match succeeded, but Analyzer produced disconnected dimensions)
|
|
79
|
+
// If type is String, and dimensions exceed the loop depth, it implies we are indexing implicitly into the string.
|
|
80
|
+
// e.g. loops=1, indices=2 (S[N][i]). This means S[i] is a string. We drop the extra index.
|
|
81
|
+
else if (type === VarType.String && dims > info.loopDepth) {
|
|
82
|
+
// const excess = dims - info.loopDepth;
|
|
83
|
+
dims = info.loopDepth;
|
|
84
|
+
// Keep the last 'dims' indices (assuming loop vars are inner)
|
|
85
|
+
// E.g. [N, i], depth=1. excess=1. slice(-1) -> [i].
|
|
86
|
+
// If depth=0 (scalar usage outside loop), but indices=1? -> dims=0.
|
|
87
|
+
if (dims === 0) {
|
|
88
|
+
indices = [];
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
indices = indices.slice(-dims);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
name,
|
|
96
|
+
type,
|
|
97
|
+
dims,
|
|
98
|
+
indices,
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=variable-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-extractor.js","sourceRoot":"","sources":["../../src/generator/variable-extractor.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { AppConfig } from
|
|
2
|
+
import { AppConfig } from "./config.js";
|
|
3
3
|
export declare class AtCoderGUI {
|
|
4
4
|
private browserManager;
|
|
5
5
|
private configManager;
|
|
6
6
|
private submitManager;
|
|
7
7
|
private cookieExporter;
|
|
8
8
|
private genManager;
|
|
9
|
+
private buildManager;
|
|
10
|
+
private testManager;
|
|
9
11
|
private problemManager;
|
|
10
12
|
private rl;
|
|
11
13
|
constructor();
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAMA,OAAO,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAMA,OAAO,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AAUvD,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,EAAE,CAAmC;;IAa7C;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD1C;;OAEG;YACW,aAAa;IAoI3B;;OAEG;IACH,OAAO,CAAC,QAAQ;CA+BjB"}
|
package/dist/main.js
CHANGED
|
@@ -1,37 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import * as readline from
|
|
3
|
-
import { pathToFileURL } from
|
|
4
|
-
import * as fs from
|
|
5
|
-
import { BrowserManager } from
|
|
6
|
-
import { ConfigManager } from
|
|
7
|
-
import { SubmitManager } from
|
|
8
|
-
import { CookieExporter } from
|
|
9
|
-
import { GenManager } from
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
2
|
+
import * as readline from "readline";
|
|
3
|
+
import { pathToFileURL } from "url";
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import { BrowserManager } from "./browser.js";
|
|
6
|
+
import { ConfigManager } from "./config.js";
|
|
7
|
+
import { SubmitManager } from "./submit.js";
|
|
8
|
+
import { CookieExporter } from "./cookie-export.js";
|
|
9
|
+
import { GenManager } from "./gen.js";
|
|
10
|
+
import { BuildManager } from "./build.js";
|
|
11
|
+
import { TestManager } from "./test.js";
|
|
12
|
+
import { ProblemManager } from "./problem.js";
|
|
13
|
+
import { expandHomeDir, compactHomeDir } from "./utils.js";
|
|
14
|
+
import { execSync } from "child_process";
|
|
12
15
|
export class AtCoderGUI {
|
|
13
16
|
browserManager;
|
|
14
17
|
configManager;
|
|
15
18
|
submitManager;
|
|
16
19
|
cookieExporter;
|
|
17
20
|
genManager;
|
|
21
|
+
buildManager;
|
|
22
|
+
testManager;
|
|
18
23
|
problemManager;
|
|
19
24
|
rl = null;
|
|
20
25
|
constructor() {
|
|
21
26
|
this.browserManager = new BrowserManager();
|
|
22
|
-
this.configManager = new ConfigManager();
|
|
27
|
+
this.configManager = new ConfigManager(true);
|
|
23
28
|
this.submitManager = new SubmitManager(this.browserManager);
|
|
24
29
|
this.cookieExporter = new CookieExporter(this.browserManager);
|
|
25
|
-
this.genManager = new GenManager(this.browserManager);
|
|
30
|
+
this.genManager = new GenManager(this.browserManager, this.configManager);
|
|
31
|
+
this.buildManager = new BuildManager(this.configManager);
|
|
32
|
+
this.testManager = new TestManager(this.configManager, this.buildManager);
|
|
26
33
|
this.problemManager = new ProblemManager(this.browserManager);
|
|
27
34
|
}
|
|
28
35
|
/**
|
|
29
36
|
* Initialize the application
|
|
30
37
|
*/
|
|
31
38
|
async init() {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
39
|
+
try {
|
|
40
|
+
await this.browserManager.launch(this.getConfig());
|
|
41
|
+
const url = this.getConfig().defaultUrl || "https://atcoder.jp";
|
|
42
|
+
await this.browserManager.openUrl(url);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.warn("Warning: Failed to launch browser. Some commands may not work.", error);
|
|
46
|
+
}
|
|
35
47
|
}
|
|
36
48
|
/**
|
|
37
49
|
* Open a URL in the browser
|
|
@@ -72,30 +84,35 @@ export class AtCoderGUI {
|
|
|
72
84
|
this.rl = readline.createInterface({
|
|
73
85
|
input: process.stdin,
|
|
74
86
|
output: process.stdout,
|
|
75
|
-
prompt:
|
|
87
|
+
prompt: "command> ",
|
|
76
88
|
});
|
|
77
89
|
this.browserManager.setOnPageClose(() => {
|
|
78
90
|
this.rl?.close();
|
|
79
91
|
});
|
|
92
|
+
const workspaceDir = this.getConfig().workspaceDir;
|
|
93
|
+
if (workspaceDir) {
|
|
94
|
+
process.chdir(expandHomeDir(workspaceDir));
|
|
95
|
+
console.log(`Current directory: ${compactHomeDir(process.cwd())}`);
|
|
96
|
+
}
|
|
80
97
|
console.log('Type "help" for available commands or "exit" to quit');
|
|
81
98
|
this.rl.prompt();
|
|
82
|
-
this.rl.on(
|
|
99
|
+
this.rl.on("line", async (input) => {
|
|
83
100
|
const trimmedInput = input.trim();
|
|
84
|
-
if (trimmedInput ===
|
|
101
|
+
if (trimmedInput === "") {
|
|
85
102
|
this.rl.prompt();
|
|
86
103
|
return;
|
|
87
104
|
}
|
|
88
105
|
await this.handleCommand(trimmedInput);
|
|
89
106
|
this.rl.prompt();
|
|
90
107
|
});
|
|
91
|
-
this.rl.on(
|
|
92
|
-
console.log(
|
|
108
|
+
this.rl.on("close", async () => {
|
|
109
|
+
console.log("\nGoodbye!");
|
|
93
110
|
await this.close();
|
|
94
111
|
process.exit(0);
|
|
95
112
|
});
|
|
96
113
|
// Handle Ctrl+C
|
|
97
|
-
process.on(
|
|
98
|
-
console.log(
|
|
114
|
+
process.on("SIGINT", async () => {
|
|
115
|
+
console.log("\nShutting down...");
|
|
99
116
|
await this.close();
|
|
100
117
|
process.exit(0);
|
|
101
118
|
});
|
|
@@ -104,9 +121,9 @@ export class AtCoderGUI {
|
|
|
104
121
|
* Handle CLI commands
|
|
105
122
|
*/
|
|
106
123
|
async handleCommand(input) {
|
|
107
|
-
const args = input.split(
|
|
124
|
+
const args = input.split(" ").filter((arg) => arg.length > 0);
|
|
108
125
|
const command = args[0].toLowerCase();
|
|
109
|
-
if (command ==
|
|
126
|
+
if (command == "") {
|
|
110
127
|
return;
|
|
111
128
|
}
|
|
112
129
|
// Try to navigate to problem directory if command is a single letter
|
|
@@ -115,129 +132,113 @@ export class AtCoderGUI {
|
|
|
115
132
|
}
|
|
116
133
|
try {
|
|
117
134
|
switch (command) {
|
|
118
|
-
case
|
|
135
|
+
case "open":
|
|
119
136
|
if (args.length < 2) {
|
|
120
|
-
console.log(
|
|
121
|
-
console.log(
|
|
137
|
+
console.log("Error: URL is required for open command");
|
|
138
|
+
console.log("Usage: open <URL>");
|
|
122
139
|
return;
|
|
123
140
|
}
|
|
124
141
|
await this.openUrl(args[1]);
|
|
125
142
|
break;
|
|
126
|
-
case
|
|
127
|
-
console.log(
|
|
143
|
+
case "config":
|
|
144
|
+
console.log("Current configuration:");
|
|
128
145
|
console.log(JSON.stringify(this.getConfig(), null, 2));
|
|
129
146
|
break;
|
|
130
|
-
case
|
|
147
|
+
case "help":
|
|
131
148
|
this.showHelp();
|
|
132
149
|
break;
|
|
133
|
-
case
|
|
134
|
-
case
|
|
150
|
+
case "exit":
|
|
151
|
+
case "quit":
|
|
135
152
|
this.rl?.close();
|
|
136
153
|
break;
|
|
137
|
-
case
|
|
138
|
-
case
|
|
154
|
+
case "acc":
|
|
155
|
+
case "oj":
|
|
139
156
|
{
|
|
140
|
-
const command_line = args.join(
|
|
157
|
+
const command_line = args.join(" ");
|
|
141
158
|
try {
|
|
142
|
-
execSync(command_line, { encoding:
|
|
143
|
-
}
|
|
144
|
-
catch (_) {
|
|
145
|
-
;
|
|
159
|
+
execSync(command_line, { encoding: "utf-8", stdio: "inherit" });
|
|
146
160
|
}
|
|
161
|
+
catch (_) { }
|
|
147
162
|
}
|
|
148
163
|
break;
|
|
149
|
-
case
|
|
164
|
+
case "export":
|
|
150
165
|
if (args.length < 2) {
|
|
151
|
-
console.log(
|
|
152
|
-
console.log(
|
|
153
|
-
console.log(
|
|
154
|
-
console.log(
|
|
155
|
-
console.log(
|
|
156
|
-
console.log(
|
|
166
|
+
console.log("Error: Target is required for export command");
|
|
167
|
+
console.log("Usage: export <target>");
|
|
168
|
+
console.log("Available targets:");
|
|
169
|
+
console.log(" atcoder-tools Export cookies to atcoder-tools cookie.txt");
|
|
170
|
+
console.log(" atcoder-cli Export cookies to atcoder-cli session.json");
|
|
171
|
+
console.log(" oj Export cookies to online-judge-tools cookie.jar");
|
|
157
172
|
return;
|
|
158
173
|
}
|
|
159
174
|
{
|
|
160
175
|
const target = args[1].toLowerCase();
|
|
161
176
|
switch (target) {
|
|
162
|
-
case
|
|
177
|
+
case "atcoder-tools":
|
|
163
178
|
await this.cookieExporter.exportCookiesForAtCoderTools();
|
|
164
179
|
break;
|
|
165
|
-
case
|
|
180
|
+
case "atcoder-cli":
|
|
166
181
|
await this.cookieExporter.exportCookiesForAtCoderCli();
|
|
167
182
|
break;
|
|
168
|
-
case
|
|
183
|
+
case "oj":
|
|
169
184
|
await this.cookieExporter.exportCookiesForOj();
|
|
170
185
|
break;
|
|
171
186
|
default:
|
|
172
187
|
console.log(`Unknown export target: ${target}`);
|
|
173
|
-
console.log(
|
|
188
|
+
console.log("Available targets: atcoder-tools, atcoder-cli, oj");
|
|
174
189
|
}
|
|
175
190
|
}
|
|
176
191
|
break;
|
|
177
|
-
case
|
|
178
|
-
this.
|
|
192
|
+
case "build":
|
|
193
|
+
await this.buildManager.run(args);
|
|
179
194
|
break;
|
|
180
|
-
case
|
|
181
|
-
this.genManager.
|
|
195
|
+
case "gen":
|
|
196
|
+
await this.genManager.run(args);
|
|
182
197
|
break;
|
|
183
|
-
case
|
|
184
|
-
case
|
|
185
|
-
case
|
|
186
|
-
case
|
|
187
|
-
case
|
|
188
|
-
case
|
|
189
|
-
case
|
|
190
|
-
case
|
|
198
|
+
case "cp":
|
|
199
|
+
case "copy":
|
|
200
|
+
case "del":
|
|
201
|
+
case "dir":
|
|
202
|
+
case "ls":
|
|
203
|
+
case "make":
|
|
204
|
+
case "pwd":
|
|
205
|
+
case "rm":
|
|
191
206
|
{
|
|
192
|
-
const command_line = args.join(
|
|
207
|
+
const command_line = args.join(" ");
|
|
193
208
|
try {
|
|
194
|
-
execSync(command_line, { encoding:
|
|
195
|
-
}
|
|
196
|
-
catch (_) {
|
|
197
|
-
;
|
|
209
|
+
execSync(command_line, { encoding: "utf-8", stdio: "inherit" });
|
|
198
210
|
}
|
|
211
|
+
catch (_) { }
|
|
199
212
|
}
|
|
200
213
|
break;
|
|
201
|
-
case
|
|
202
|
-
await this.submitManager.submitSolution()
|
|
214
|
+
case "submit":
|
|
215
|
+
if (!(await this.submitManager.submitSolution(args[1]))) {
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
203
218
|
// eslint-disable-next-line no-fallthrough
|
|
204
|
-
case
|
|
219
|
+
case "test":
|
|
220
|
+
await this.testManager.run(args);
|
|
221
|
+
break;
|
|
222
|
+
case "cd":
|
|
205
223
|
{
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
catch (_) {
|
|
212
|
-
;
|
|
213
|
-
}
|
|
224
|
+
const dir = args.length >= 2 ? args[1] : this.getConfig().workspaceDir || "~";
|
|
225
|
+
const expandedDir = expandHomeDir(dir);
|
|
226
|
+
try {
|
|
227
|
+
process.chdir(expandedDir);
|
|
228
|
+
console.log(`Current directory: ${compactHomeDir(process.cwd())}`);
|
|
214
229
|
}
|
|
215
|
-
|
|
216
|
-
console.
|
|
230
|
+
catch (err) {
|
|
231
|
+
console.error(`Error changing directory: ${err}`);
|
|
217
232
|
}
|
|
218
233
|
}
|
|
219
234
|
break;
|
|
220
|
-
case 'cd':
|
|
221
|
-
if (args.length < 2) {
|
|
222
|
-
console.log('Error: Directory is required for cd command');
|
|
223
|
-
console.log('Usage: cd <directory>');
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
try {
|
|
227
|
-
process.chdir(args[1]);
|
|
228
|
-
console.log(`Current directory: ${process.cwd()}`);
|
|
229
|
-
}
|
|
230
|
-
catch (err) {
|
|
231
|
-
console.error(`Error changing directory: ${err}`);
|
|
232
|
-
}
|
|
233
|
-
break;
|
|
234
235
|
default:
|
|
235
236
|
console.log(`Unknown command: ${command}`);
|
|
236
237
|
console.log('Type "help" for available commands');
|
|
237
238
|
}
|
|
238
239
|
}
|
|
239
240
|
catch (error) {
|
|
240
|
-
console.error(
|
|
241
|
+
console.error("Error:", error);
|
|
241
242
|
}
|
|
242
243
|
}
|
|
243
244
|
/**
|
|
@@ -248,11 +249,11 @@ export class AtCoderGUI {
|
|
|
248
249
|
Available commands:
|
|
249
250
|
open <URL> Open a URL in the browser
|
|
250
251
|
config Show current configuration
|
|
251
|
-
submit
|
|
252
|
-
gen <contest-id> Generate
|
|
253
|
-
new <contest-id> Generate sample cases using atcoder-cli
|
|
252
|
+
submit <filename> Submit solution to AtCoder
|
|
253
|
+
gen <contest-id> Generate main.cpp from current problem page or contest ID
|
|
254
254
|
make <args> Execute make command
|
|
255
255
|
test Execute test command
|
|
256
|
+
build Build the source code specified in metadata.json
|
|
256
257
|
export <target> Export data to external tools
|
|
257
258
|
cd <directory> Change current directory
|
|
258
259
|
close Close the browser (if running)
|
|
@@ -287,12 +288,12 @@ async function ui_main() {
|
|
|
287
288
|
*/
|
|
288
289
|
async function main() {
|
|
289
290
|
const args = process.argv.slice(2);
|
|
290
|
-
const configManager = new ConfigManager();
|
|
291
|
-
if (args.includes(
|
|
291
|
+
const configManager = new ConfigManager(true);
|
|
292
|
+
if (args.includes("version") || args.includes("--version") || args.includes("-v")) {
|
|
292
293
|
console.log(configManager.getVersion());
|
|
293
294
|
return;
|
|
294
295
|
}
|
|
295
|
-
if (args.includes(
|
|
296
|
+
if (args.includes("config-dir") || args.includes("--config-dir")) {
|
|
296
297
|
console.log(configManager.getConfigDirPath());
|
|
297
298
|
return;
|
|
298
299
|
}
|
|
@@ -301,7 +302,7 @@ async function main() {
|
|
|
301
302
|
// Run the CLI if this file is executed directly
|
|
302
303
|
if (import.meta.url === pathToFileURL(fs.realpathSync(process.argv[1])).href) {
|
|
303
304
|
main().catch((error) => {
|
|
304
|
-
console.error(
|
|
305
|
+
console.error("Fatal error:", error);
|
|
305
306
|
process.exit(1);
|
|
306
307
|
});
|
|
307
308
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAa,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,UAAU;IACb,cAAc,CAAiB;IAC/B,aAAa,CAAgB;IAC7B,aAAa,CAAgB;IAC7B,cAAc,CAAiB;IAC/B,UAAU,CAAa;IACvB,cAAc,CAAiB;IAC/B,EAAE,GAA8B,IAAI,CAAC;IAE7C;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/submit.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { BrowserManager } from
|
|
1
|
+
import { BrowserManager } from "./browser.js";
|
|
2
2
|
export declare class SubmitManager {
|
|
3
3
|
private browserManager;
|
|
4
4
|
constructor(browserManager: BrowserManager);
|
|
5
5
|
/**
|
|
6
6
|
* Submit solution to AtCoder
|
|
7
7
|
*/
|
|
8
|
-
submitSolution(): Promise<
|
|
8
|
+
submitSolution(filename: string | undefined): Promise<boolean>;
|
|
9
|
+
private pasteToBrowser;
|
|
9
10
|
/**
|
|
10
11
|
* Parse metadata.json to extract contest_id and problem_id
|
|
11
12
|
*/
|
package/dist/submit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../src/submit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../src/submit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAAiB;gBAE3B,cAAc,EAAE,cAAc;IAI1C;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;YAsCtD,cAAc;IAqB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,kBAAkB;CAyBjC"}
|