Skip to content

Commit 82c345d

Browse files
committed
handleDeps in Config form
1 parent aeae944 commit 82c345d

File tree

8 files changed

+46
-19
lines changed

8 files changed

+46
-19
lines changed

‎lib/actions.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ exports.pageSet = page_position_1.pageSet;
88
var package_json_1 = require('./modules/package-json');
99
exports.pjSave = package_json_1.pjSave;
1010
exports.pjLoad = package_json_1.pjLoad;
11+
var runner_1 = require('./modules/runner');
12+
exports.runnerSet = runner_1.runnerSet;
1113
var setup_1 = require('./modules/setup');
1214
exports.setupVerify = setup_1.setupVerify;
1315
exports.setupPackage = setup_1.setupPackage;

‎lib/components/Config/handleDeps.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
function handleDependencies(pj, runner) {
3+
var deps = pj.dependencies;
4+
Object.keys(deps)
5+
.filter(function (key) { return key.match(/-coderoad$/); })
6+
.forEach(function (key) { return delete deps[key]; });
7+
if (!deps || !pj.dependencies.hasOwnProperty(runner)) {
8+
var dep = {};
9+
dep[runner] = 'latest';
10+
deps = Object.assign({}, pj.dependencies, dep);
11+
}
12+
return deps || {};
13+
}
14+
Object.defineProperty(exports, "__esModule", { value: true });
15+
exports.default = handleDependencies;

‎lib/components/Config/index.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ var TopPanel_1 = require('../TopPanel');
2424
var textField_1 = require('../Form/textField');
2525
var selectField_1 = require('../Form/selectField');
2626
var validate_1 = require('./validate');
27+
var handleDeps_1 = require('./handleDeps');
2728
var styles = {
2829
card: {
2930
margin: '10px',
@@ -70,12 +71,7 @@ var TutorialConfig = (function (_super) {
7071
var packageJson = this.props.packageJson;
7172
var name = values.name, runnerItem = values.runnerItem, repo = values.repo;
7273
var _a = runnerItem.split(': '), language = _a[0], runner = _a[1];
73-
if (!packageJson.dependencies || !packageJson.dependencies.hasOwnProperty(runner)) {
74-
alert("run \"npm install\" to load your test runner");
75-
var dep = {};
76-
dep[runner] = 'latest';
77-
var dependencies = Object.assign({}, packageJson.dependencies, dep);
78-
}
74+
var dependencies = handleDeps_1.default(packageJson, runner);
7975
this.props.pjSave(Object.assign({}, packageJson, {
8076
name: name,
8177
repository: repo || '',

‎lib/modules/runner/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ exports.runnerSet = runnerSet;
77
var r = function () {
88
alert('Runner not installed. Run "npm install"');
99
};
10-
function runner(runner, action) {
10+
function reducer(runner, action) {
1111
if (runner === void 0) { runner = r; }
1212
switch (action.type) {
1313
case RUNNER_SET:
@@ -18,4 +18,4 @@ function runner(runner, action) {
1818
return runner;
1919
}
2020
}
21-
exports.runner = runner;
21+
exports.reducer = reducer;

‎lib/reducers.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var redux_form_1 = require('redux-form');
44
var page_position_1 = require('./modules/page-position');
55
var setup_1 = require('./modules/setup');
66
var package_json_1 = require('./modules/package-json');
7+
var runner_1 = require('./modules/runner');
78
var tutorial_1 = require('./modules/tutorial');
89
var window_1 = require('./modules/window');
910
var validate_tutorial_1 = require('./modules/validate-tutorial');
@@ -14,4 +15,5 @@ exports.default = redux_1.combineReducers({
1415
alert: core_coderoad_1.alertReducer, checks: setup_1.reducer, editor: core_coderoad_1.editorReducer, dir: core_coderoad_1.dirReducer, form: redux_form_1.reducer,
1516
packageJson: package_json_1.reducer, pagePosition: page_position_1.reducer, route: core_coderoad_1.routeReducer,
1617
tutorial: tutorial_1.reducer, updated: updated_1.reducer, validation: validate_tutorial_1.reducer, windowToggle: window_1.reducer,
18+
runner: runner_1.reducer,
1719
});

‎src/components/Config/handleDeps.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export default function handleDependencies(pj, runner) {
2+
let deps = pj.dependencies;
3+
// remove all runners
4+
Object.keys(deps)
5+
.filter(key => key.match(/-coderoad$/))
6+
.forEach(key => delete deps[key]);
7+
8+
// add runner
9+
if (!deps || !pj.dependencies.hasOwnProperty(runner)) {
10+
// add dependency
11+
const dep = {};
12+
dep[runner] = 'latest';
13+
deps = Object.assign({}, pj.dependencies, dep);
14+
}
15+
return deps || {};
16+
}

‎src/components/Config/index.tsx

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import MenuItem from 'material-ui/MenuItem';
55
import {Card, CardTitle, CardText} from 'material-ui/Card';
66
import RaisedButton from 'material-ui/RaisedButton';
77
import {pjSave, pjLoad, tutorialInit, routeSet, editorPjOpen} from '../../actions';
8-
import languageItems from './languageItems';
98
import runnerItems from './runnerItems';
109
import {topElement} from '../TopPanel';
1110
import textField from '../Form/textField';
1211
import selectField from '../Form/selectField';
1312
import validate from './validate';
13+
import handleDeps from './handleDeps';
1414

1515
const styles = {
1616
card: {
@@ -66,21 +66,16 @@ class TutorialConfig extends React.Component <{
6666
}
6767
shouldComponentUpdate() {
6868
// hack to prevent lost focus on component update
69-
return !(document.activeElement &&
70-
typeof document.activeElement.value === 'string');
69+
return !(
70+
document.activeElement &&
71+
typeof document.activeElement.value === 'string'
72+
);
7173
}
7274
onSubmit(values) {
7375
const {packageJson} = this.props;
7476
const {name, runnerItem, repo} = values;
7577
const [language, runner] = runnerItem.split(': ');
76-
77-
if (!packageJson.dependencies || !packageJson.dependencies.hasOwnProperty(runner)) {
78-
alert(`run "npm install" to load your test runner`);
79-
// add dependency
80-
const dep = {};
81-
dep[runner] = 'latest';
82-
const dependencies = Object.assign({}, packageJson.dependencies, dep);
83-
}
78+
const dependencies = handleDeps(packageJson, runner);
8479

8580
this.props.pjSave(Object.assign(
8681
{},

‎tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"src/typings/builder.d.ts",
2525
"src/typings/typings.d.ts",
2626
"src/actions.ts",
27+
"src/components/Config/handleDeps.ts",
2728
"src/components/Config/validate.ts",
2829
"src/components/index.ts",
2930
"src/components/Page/TaskActions/task-object.ts",

0 commit comments

Comments
 (0)