Skip to content

Commit 7bccdeb

Browse files
committed
load runner progress
1 parent a12ada6 commit 7bccdeb

File tree

6 files changed

+64
-33
lines changed

6 files changed

+64
-33
lines changed

lib/components/Test/Solution.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ var Solution = (function (_super) {
3636
function Solution() {
3737
_super.apply(this, arguments);
3838
}
39+
Solution.prototype.componentDidMount = function () {
40+
this.props.runnerSet();
41+
};
3942
Solution.prototype.runTest = function () {
4043
var content = "\n" + this.refs.solution.get() + "\n" + atom.workspace.getActiveTextEditor().getText() + "\n";
4144
this.props.runnerRun(content);
@@ -54,7 +57,7 @@ var Solution = (function (_super) {
5457
Solution = __decorate([
5558
react_redux_1.connect(function (state) { return ({
5659
language: core_coderoad_1.languageSuffixSelector(state),
57-
}); }, { runnerRun: actions_1.runnerRun }),
60+
}); }, { runnerRun: actions_1.runnerRun, runnerSet: actions_1.runnerSet }),
5861
__metadata('design:paramtypes', [])
5962
], Solution);
6063
return Solution;

lib/modules/runner/index.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,37 @@
22
var loadRunner_1 = require('./loadRunner');
33
var RUNNER_SET = 'RUNNER_SET';
44
var RUNNER_RUN = 'RUNNER_RUN';
5-
function runnerSet(name) {
5+
function runnerSet() {
66
return function (dispatch, getState) {
7-
var dir = getState().dir;
8-
dispatch({ type: RUNNER_SET, payload: { dir: dir, name: name } });
7+
var _a = getState(), dir = _a.dir, packageJson = _a.packageJson;
8+
if (packageJson && packageJson.config && packageJson.config.runner) {
9+
var name_1 = packageJson.config.runner;
10+
dispatch({ type: RUNNER_SET, payload: { dir: dir, name: name_1 } });
11+
}
912
};
1013
}
1114
exports.runnerSet = runnerSet;
1215
function runnerRun(content) {
1316
return function (dispatch, getState) {
14-
dispatch({ type: RUNNER_RUN, payload: { content: content } });
17+
var _a = getState(), dir = _a.dir, tutorial = _a.tutorial;
18+
var config = Object.assign({}, dir, tutorial.config);
19+
dispatch({ type: RUNNER_RUN, payload: { content: content, config: config } });
1520
};
1621
}
1722
exports.runnerRun = runnerRun;
1823
var r = function (content) {
1924
console.log(content);
20-
alert('Runner not installed. Try running "npm install"');
25+
alert('Runner not yet implemented.');
2126
};
2227
function reducer(runner, action) {
2328
if (runner === void 0) { runner = r; }
2429
switch (action.type) {
2530
case RUNNER_SET:
26-
var _a = action.payload, dir = _a.dir, name_1 = _a.name;
27-
return loadRunner_1.default(dir, name_1);
31+
var _a = action.payload, dir = _a.dir, name_2 = _a.name;
32+
return loadRunner_1.default(dir, name_2);
2833
case RUNNER_RUN:
29-
var content = action.payload.content;
30-
runner(content);
34+
var _b = action.payload, content = _b.content, config = _b.config;
35+
r(content);
3136
return runner;
3237
default:
3338
return runner;

lib/modules/runner/loadRunner.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
"use strict";
22
var path_1 = require('path');
3-
var fs_1 = require('fs');
43
var node_file_exists_1 = require('node-file-exists');
4+
function noRunner() {
5+
alert("Runner not installed.\nSelect a runner and run \"npm install\"");
6+
}
57
function loadRunner(dir, name) {
68
var packagePath = path_1.join(dir, 'node_modules', name);
79
if (!node_file_exists_1.default(packagePath)) {
8-
console.log("Runner " + name + " not installed");
9-
return false;
10+
return noRunner;
1011
}
12+
var runner;
1113
try {
12-
var pj = JSON.parse(fs_1.readFileSync(path_1.join(packagePath, 'package.json'), 'utf8'));
13-
return require(name);
14+
var pj = path_1.join(packagePath, 'package.json');
15+
var runnerMain = require(pj).main;
16+
var pathToMain = path_1.resolve(packagePath, runnerMain);
17+
runner = require(pathToMain);
1418
}
1519
catch (e) {
1620
console.log(e);
1721
}
22+
return runner ? runner.default : noRunner;
1823
}
1924
Object.defineProperty(exports, "__esModule", { value: true });
2025
exports.default = loadRunner;

src/components/Test/Solution.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {connect} from 'react-redux';
33
import {Card, CardText, CardTitle} from 'material-ui/Card';
44
import RaisedButton from 'material-ui/RaisedButton';
55
import {TextEditor} from '../index';
6-
import {runnerRun} from '../../actions';
6+
import {runnerRun, runnerSet} from '../../actions';
77
import {languageSuffixSelector} from 'core-coderoad';
88

99
const styles = {
@@ -20,15 +20,19 @@ const styles = {
2020

2121
@connect(state => ({
2222
language: languageSuffixSelector(state),
23-
}), {runnerRun})
23+
}), {runnerRun, runnerSet})
2424
export default class Solution extends React.Component <{
2525
language?: string,
2626
runnerRun?: (content: string) => Redux.ActionCreator,
27+
runnerSet?: () => Redux.ActionCreator,
2728
}, {}> {
2829
refs: {
2930
[key: string]: Element;
3031
solution: any;
3132
};
33+
componentDidMount() {
34+
this.props.runnerSet();
35+
}
3236
runTest() {
3337
// content = solution + tests
3438
const content = `

src/modules/runner/index.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,43 @@ import loadRunner from './loadRunner';
33
const RUNNER_SET = 'RUNNER_SET';
44
const RUNNER_RUN = 'RUNNER_RUN';
55

6-
export function runnerSet(name: string) {
6+
export function runnerSet() {
77
return (dispatch, getState) => {
8-
const {dir} = getState();
9-
dispatch({ type: RUNNER_SET, payload: { dir, name } });
8+
const {dir, packageJson} = getState();
9+
if (packageJson && packageJson.config && packageJson.config.runner) {
10+
const name = packageJson.config.runner;
11+
dispatch({ type: RUNNER_SET, payload: { dir, name } });
12+
}
1013
};
1114
}
1215

1316
export function runnerRun(content: string) {
1417
return (dispatch, getState) => {
15-
dispatch({ type: RUNNER_RUN, payload: { content } });
18+
const {dir, tutorial} = getState();
19+
let config = Object.assign({}, dir, tutorial.config);
20+
dispatch({ type: RUNNER_RUN, payload: { content, config } });
1621
};
1722
}
1823

1924
const r = (content: string) => {
2025
console.log(content);
21-
alert('Runner not installed. Try running "npm install"');
26+
// alert('Runner not installed. Try running "npm install"');
27+
alert('Runner not yet implemented.');
2228
};
2329

2430

2531
export function reducer(runner = r, action: Action) {
2632
switch (action.type) {
33+
2734
case RUNNER_SET:
2835
const {dir, name} = action.payload;
2936
return loadRunner(dir, name);
3037

3138
case RUNNER_RUN:
32-
const {content} = action.payload;
33-
runner(content);
39+
let {content, config} = action.payload;
40+
// call runner
41+
r(content);
42+
// runner(content, config, function() {});
3443
return runner;
3544

3645
default:

src/modules/runner/loadRunner.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
1-
import {join} from 'path';
1+
import {join, resolve} from 'path';
22
import {readFileSync} from 'fs';
33
import fileExists from 'node-file-exists';
44

5+
function noRunner() {
6+
alert(`Runner not installed.
7+
Select a runner and run "npm install"`);
8+
}
9+
510
export default function loadRunner(dir: string, name: string) {
611
const packagePath = join(dir, 'node_modules', name);
12+
// no runner installed
713
if (!fileExists(packagePath)) {
8-
console.log(`Runner ${name} not installed`);
9-
return false;
14+
return noRunner;
1015
}
16+
let runner;
1117
try {
12-
const pj = JSON.parse(
13-
readFileSync(
14-
join(packagePath, 'package.json'), 'utf8'
15-
)
16-
);
17-
return require(name);
18+
const pj = join(packagePath, 'package.json');
19+
const runnerMain = require(pj).main;
20+
let pathToMain = resolve(packagePath, runnerMain);
21+
runner = require(pathToMain);
1822
} catch (e) {
1923
console.log(e);
2024
}
25+
return runner ? runner.default : noRunner;
2126
}

0 commit comments

Comments
 (0)