Skip to content

Commit f908960

Browse files
committed
Code refactoring
1 parent 086751e commit f908960

File tree

42 files changed

+80
-89
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+80
-89
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/.idea
22
/node_modules
33
/bin
4+
/docs
45
/npm-debug.log
56
/package-lock.json
67
.DS_Store

CHANGELOG.md

Lines changed: 9 additions & 4 deletions

src/languages/docs/builder/index.js renamed to src/executables/docs.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
import Builder from '../../Builder';
1+
import * as tracers from '/specs/tracers';
2+
import * as randomizers from '/specs/randomizers';
3+
import path from 'path';
4+
import fs from 'fs-extra';
25

3-
// TODO: consider writing in typescript
4-
const builder = new Builder({
5-
name: 'docs',
6-
commands: [],
7-
}).spec(tracer => {
6+
const [, , docsPath = path.resolve(__dirname, '..', '..', 'docs')] = process.argv;
7+
8+
fs.ensureDirSync(docsPath);
9+
for (const tracer of Object.values({ ...tracers, ...randomizers })) {
810
const name = `${tracer.name}.md`;
911
const content = `# ${tracer.name}
1012
@@ -32,7 +34,5 @@ ${tracer.description} [Usage](https://github.com/search?q=${tracer.name}+repo%3A
3234
</tbody>
3335
</table>`;
3436

35-
return { name, content };
36-
}, true);
37-
38-
export default builder;
37+
fs.writeFileSync(path.resolve(docsPath, name), content);
38+
}

src/executables/release.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ release({ owner: 'algorithm-visualizer', repo: 'tracers', auth: { token: GITHUB_
1515
'rm -rf tracers.wiki',
1616
'git clone git@github.com:algorithm-visualizer/tracers.wiki.git',
1717
'rm tracers.wiki/*',
18-
'cp ../languages/docs/tracers/* tracers.wiki',
18+
'../../bin/docs tracers.wiki',
1919
'cd tracers.wiki',
2020
'git add .',
2121
`git diff-index --quiet HEAD || git commit -m 'Release v${version}'`,

src/languages/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/*/tracers

src/languages/Builder.js

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,47 @@
11
import path from 'path';
22
import fs from 'fs-extra';
33
import * as tracers from '/specs/tracers';
4-
import * as randomizers from '/specs/randomizers';
5-
import { execute } from '/common/util';
64
import Commander from '/languages/Commander';
5+
import { execute } from '/common/util';
76

87
class Builder extends Commander {
98
constructor({ name, commands }) {
109
super({ name });
1110
this.commands = commands;
11+
this.specs = [];
12+
this.indices = [];
1213
this.build = this.build.bind(this);
1314
}
1415

15-
spec(callback, all = false) {
16-
Object.values(all ? { ...tracers, ...randomizers } : tracers).forEach(tracer => {
17-
const { name, content } = callback(tracer);
18-
const outputPath = path.resolve(this.cwd, 'tracers', name);
19-
fs.writeFileSync(outputPath, content);
20-
});
16+
spec(callback) {
17+
this.specs.push(callback);
2118
return this;
2219
}
2320

24-
index(callback, all = false) {
25-
const { name, content } = callback(Object.values(all ? { ...tracers, ...randomizers } : tracers));
26-
const outputPath = path.resolve(this.cwd, 'tracers', name);
27-
fs.writeFileSync(outputPath, content);
21+
index(callback) {
22+
this.indices.push(callback);
2823
return this;
2924
}
3025

3126
build() {
32-
return fs.pathExists(path.resolve(this.cwd, 'builder', 'Dockerfile'))
27+
const tracersPath = path.resolve(this.cwd, 'tracers');
28+
return fs.remove(tracersPath)
29+
.then(() => fs.copy(path.resolve(this.cwd, 'builder', 'skeleton'), tracersPath))
30+
.then(() => {
31+
for (const spec of this.specs) {
32+
for (const tracer of Object.values(tracers)) {
33+
const { name, content } = spec(tracer);
34+
const outputPath = path.resolve(tracersPath, name);
35+
fs.writeFileSync(outputPath, content);
36+
}
37+
}
38+
for (const index of this.indices) {
39+
const { name, content } = index(Object.values(tracers));
40+
const outputPath = path.resolve(tracersPath, name);
41+
fs.writeFileSync(outputPath, content);
42+
}
43+
})
44+
.then(() => fs.pathExists(path.resolve(this.cwd, 'builder', 'Dockerfile')))
3345
.then(exists => {
3446
const command = this.commands.join(' && ');
3547
if (exists) {
@@ -42,12 +54,12 @@ class Builder extends Commander {
4254
'/bin/bash -c',
4355
`"${command}"`,
4456
].join(' '), this.cwd));
45-
} else if (command) {
46-
return execute(command, path.resolve(this.cwd, 'tracers'));
57+
} else {
58+
return execute(command, tracersPath);
4759
}
4860
})
49-
.then(() => fs.pathExists(path.resolve(this.cwd, 'executer', 'Dockerfile')))
50-
.then(exists => exists && execute(`docker build -t ${this.executerImageTag} ./executer`, this.cwd));
61+
.then(() => fs.pathExists(path.resolve(this.cwd, 'executor', 'Dockerfile')))
62+
.then(exists => exists && execute(`docker build -t ${this.executorImageTag} ./executor`, this.cwd));
5163
}
5264
}
5365

src/languages/Commander.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ class Commander {
44
constructor({ name }) {
55
this.name = name;
66
this.builderImageTag = `${this.name}-builder`;
7-
this.executerImageTag = `${this.name}-executer`;
7+
this.executorImageTag = `${this.name}-executor`;
88
}
99

1010
get cwd() {
1111
return path.resolve(__dirname, this.name);
1212
}
1313
}
1414

15-
export default Commander;
15+
export default Commander;

src/languages/Exeuter.js renamed to src/languages/Exeutor.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Commander from '/languages/Commander';
33
import { maxTracers, maxTraces, memoryLimit, timeLimit } from '/common/config';
44
import uuid from 'uuid';
55

6-
class Executer extends Commander {
6+
class Executor extends Commander {
77
constructor({ name, compileCommand, runCommand }) {
88
super({ name });
99
this.compileCommand = compileCommand;
@@ -26,7 +26,7 @@ class Executer extends Commander {
2626
`-v=${tempPath}:/usr/judge:rw`,
2727
`-m=${memoryLimit}m --memory-swap=${memoryLimit}m`, // TODO: needs to be tested on linux
2828
`-e MAX_TRACES=${maxTraces} -e MAX_TRACERS=${maxTracers}`,
29-
this.executerImageTag,
29+
this.executorImageTag,
3030
'/bin/bash -c',
3131
`"${command}"`,
3232
].join(' '), this.cwd).catch(error => {
@@ -48,4 +48,4 @@ class Executer extends Commander {
4848
}
4949
}
5050

51-
export default Executer;
51+
export default Executor;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy