Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 85e7c3a

Browse files
committed
Implement Run command
1 parent a0520d1 commit 85e7c3a

File tree

4 files changed

+43
-16
lines changed

4 files changed

+43
-16
lines changed

‎src/ui/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
node_modules
22
out
3-
ProblemBuildsDir.tmp
3+
filePaths.tmp

‎src/ui/directory-manager.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ global.dirDict = null;
55
global.languages = null;
66
global.problemNames = null;
77

8+
global.problemBuildsDir = null;
9+
810
LANGUAGES_DIR_NAME = "languages";
911
PROBLEMS_DIR_NAME = "problems";
1012

11-
function getProblemBuildsDirTmpFile() {
12-
return path.resolve("ProblemBuildsDir.tmp")
13+
function getPathsFile() {
14+
return path.resolve("filePaths.tmp")
1315
}
1416

1517
function readMdFile(filePath) {
@@ -45,14 +47,13 @@ function calculateDirectories() {
4547
return;
4648
}
4749

48-
const problemBuildsDir =
49-
fs.readFileSync(getProblemBuildsDirTmpFile(), 'utf8');
50-
51-
if (!problemBuildsDir) {
52-
throw new Error("Problem builds directory does not exist: " +
53-
"${problemBuildsDir}");
50+
const pathsFile = getPathsFile();
51+
if (!fs.existsSync(pathsFile)) {
52+
throw new Error(`Paths file does not exist: ${pathsFile}`);
5453
}
5554

55+
global.problemBuildsDir = fs.readFileSync(pathsFile, 'utf8');
56+
5657
localDirDict = {};
5758

5859
const problemsDir = path.join(problemBuildsDir, PROBLEMS_DIR_NAME);
@@ -76,7 +77,6 @@ function calculateDirectories() {
7677
const solutionFile = path.join(problemDir, language, 'solution.md');
7778
const userSolutionFilename = path.join(problemDir, language, 'solution.cpp');
7879

79-
// check if userSolutionFilename exissts
8080
if (!fs.existsSync(userSolutionFilename)) {
8181
throw new Error(`User solution file does not exist: ${userSolutionFilename}`);
8282
}
@@ -127,5 +127,5 @@ class DirectoryManager {
127127

128128
module.exports = {
129129
DirectoryManager,
130-
getProblemBuildsDirTmpFile
130+
getPathsFile
131131
};

‎src/ui/index.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ const file = require('fs');
33
const amdLoader = require('monaco-editor/min/vs/loader.js');
44
const Split = require('split.js')
55
const { ipcRenderer } = require('electron');
6+
const { exec } = require('child_process');
7+
const DirectoryManager = require('./directory-manager.js');
68

79
const amdRequire = amdLoader.require;
810
const amdDefine = amdLoader.require.define;
@@ -15,6 +17,8 @@ amdRequire.config({
1517
baseUrl: path.join(__dirname, './node_modules/monaco-editor/min')
1618
});
1719

20+
var activeProblem = null;
21+
1822
// workaround monaco-css not understanding the environment
1923
self.module = undefined;
2024

@@ -31,11 +35,33 @@ function saveSolution(language, content) {
3135
}
3236

3337
function run() {
34-
console.log("Running solution");
38+
const pathsFile = DirectoryManager.getPathsFile();
39+
if (!file.existsSync(pathsFile)) {
40+
throw new Error(`Paths file does not exist: ${pathsFile}`);
41+
}
42+
43+
problemBuildsDir = file.readFileSync(pathsFile, 'utf8');
44+
problemBuildsDir = path.resolve(problemBuildsDir);
45+
const extension = process.platform === 'win32' ? '.bat' : '.sh';
46+
47+
const command = `${problemBuildsDir}/openleetcode${extension} ` +
48+
`--problem_builds_dir ${problemBuildsDir} ` +
49+
`--language cpp ` +
50+
`--problem ${activeProblem}`;
51+
52+
exec(command, (error, stdout, stderr) => {
53+
if (error) {
54+
console.error(`exec error: ${error}`);
55+
}
56+
// console.log(`stdout: ${stdout}`);
57+
console.error(`stderr: ${stderr}`);
58+
console.error(`stdout: ${stdout}`);
59+
});
3560
}
3661

3762
function setDescription(problemName) {
38-
var element = document.querySelector('.markdown-content#description-content');
63+
var element =
64+
document.querySelector('.markdown-content#description-content');
3965
element.innerHTML = directoryManager.getDescription(problemName);
4066
}
4167

@@ -60,6 +86,7 @@ function onProblemSelected(problemName) {
6086
setDescription(problemName);
6187
setSolution(problemName);
6288
setUserSolution(problemName);
89+
activeProblem = problemName;
6390
}
6491

6592
function initializeProblemsCombo(problemNames) {

‎src/ui/main.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ const { app, BrowserWindow, globalShortcut } = require('electron');
22
const path = require('path');
33
const DirectoryManager = require('./directory-manager.js');
44

5-
saveProblemBuildsDirToFile();
5+
saveFilePaths();
66

77
let win;
88

9-
function saveProblemBuildsDirToFile() {
9+
function saveFilePaths() {
1010
var problemBuildsDir = "./problem_builds";
1111
var problemBuildsArg = process.argv.find(arg => arg.startsWith('--problem_builds_dir='));
1212

@@ -19,7 +19,7 @@ function saveProblemBuildsDirToFile() {
1919
problemBuildsDir = path.resolve(problemBuildsDir);
2020

2121
const fs = require('fs');
22-
fs.writeFileSync(DirectoryManager.getProblemBuildsDirTmpFile(),
22+
fs.writeFileSync(DirectoryManager.getPathsFile(),
2323
problemBuildsDir, 'utf8');
2424
}
2525

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /