Content-Length: 866239 | pFad | http://github.com/algorithm-visualizer/tracers.js/commit/f9089602b706c5036812dd8e5ddf457eafb3ff17

61 Code refactoring · algorithm-visualizer/tracers.js@f908960 · GitHub
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)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/algorithm-visualizer/tracers.js/commit/f9089602b706c5036812dd8e5ddf457eafb3ff17

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy