Skip to content

Commit c1f729c

Browse files
committed
refactor into package-json reducer
1 parent d040db0 commit c1f729c

File tree

24 files changed

+105
-254
lines changed

24 files changed

+105
-254
lines changed

lib/actions.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ var actions_1 = require('./modules/page/actions');
33
exports.pageSet = actions_1.pageSet;
44
exports.pageNext = actions_1.pageNext;
55
var package_json_1 = require('./modules/package-json');
6-
exports.tutorialInfoSave = package_json_1.tutorialInfoSave;
76
exports.tutorialConfigSave = package_json_1.tutorialConfigSave;
87
var setup_1 = require('./modules/setup');
98
exports.setupVerify = setup_1.setupVerify;

lib/components/TutorialConfig/index.js

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
1515
};
1616
var React = require('react');
1717
var react_redux_1 = require('react-redux');
18+
var path_1 = require('path');
1819
var TextField_1 = require('material-ui/TextField');
1920
var SelectField_1 = require('material-ui/SelectField');
2021
var Card_1 = require('material-ui/Card');
@@ -23,18 +24,22 @@ var actions_1 = require('../../actions');
2324
var languageItems_1 = require('./languageItems');
2425
var runnerItems_1 = require('./runnerItems');
2526
var styles = {
26-
margin: '10px',
27-
padding: '30px 20px',
28-
textAlign: 'center',
29-
};
30-
var buttonStyles = {
31-
margin: '30px 10px 20px 10px',
27+
card: {
28+
margin: '10px',
29+
padding: '30px 20px',
30+
textAlign: 'center',
31+
},
32+
button: {
33+
margin: '30px 10px 20px 10px',
34+
},
3235
};
3336
var TutorialConfig = (function (_super) {
3437
__extends(TutorialConfig, _super);
3538
function TutorialConfig(props) {
3639
_super.call(this, props);
37-
this.state = this.props.packageJson;
40+
this.state = {
41+
pj: this.props.packageJson
42+
};
3843
}
3944
TutorialConfig.prototype.handleText = function (prop, event) {
4045
this.handleChange(prop, event.target.value);
@@ -48,12 +53,13 @@ var TutorialConfig = (function (_super) {
4853
var target = null;
4954
switch (prop) {
5055
case 'name':
51-
this.setState(Object.assign({}, this.state, obj));
56+
this.setState({ pj: Object.assign({}, this.state.pj, obj) });
5257
break;
5358
case 'language':
5459
case 'runner':
55-
var config = Object.assign({}, this.state.config, obj);
56-
this.setState(Object.assign({}, this.state, { config: config }));
60+
var config = Object.assign({}, this.state.pj.config, obj);
61+
var pj = Object.assign({}, this.state.pj, { config: config });
62+
this.setState({ pj: pj });
5763
return;
5864
case 'repo':
5965
var repo = {
@@ -62,24 +68,25 @@ var TutorialConfig = (function (_super) {
6268
url: prop
6369
},
6470
bugs: {
65-
url: prop + '/issues'
71+
url: path_1.resolve(prop, 'issues')
6672
}
6773
};
68-
this.setState(Object.assign({}, this.state, repo));
74+
this.setState({ pj: Object.assign({}, this.state.pj, repo) });
6975
return;
7076
}
7177
};
7278
TutorialConfig.prototype.save = function () {
73-
this.props.save(this.state);
79+
this.props.save(this.state.pj);
7480
};
7581
TutorialConfig.prototype.render = function () {
76-
return (React.createElement(Card_1.Card, {style: styles}, React.createElement(Card_1.CardHeader, {title: 'Tutorial Configuration'}), React.createElement(TextField_1.default, {floatingLabelText: 'Tutorial Package Name', defaultValue: this.state.name, onChange: this.handleText.bind(this, 'name')}), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Language', value: this.state.config.language, onChange: this.handleSelect.bind(this, 'language')}, languageItems_1.default()), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Test Runner', value: this.state.config.runner, onChange: this.handleSelect.bind(this, 'runner')}, runnerItems_1.default(this.state.config.language)), React.createElement("br", null), React.createElement(RaisedButton_1.default, {style: buttonStyles, label: 'Save', primary: true, onTouchTap: this.save.bind(this)}), React.createElement(RaisedButton_1.default, {style: buttonStyles, label: 'Continue', secondary: true, onTouchTap: this.props.routeToInfo.bind(this)})));
82+
var pj = this.state.pj;
83+
return (React.createElement(Card_1.Card, {style: styles.card}, React.createElement(Card_1.CardHeader, {title: 'Tutorial Configuration'}), React.createElement(TextField_1.default, {floatingLabelText: 'Tutorial Package Name', defaultValue: pj.name, onChange: this.handleText.bind(this, 'name')}), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Language', value: pj.config.language, onChange: this.handleSelect.bind(this, 'language')}, languageItems_1.default()), React.createElement("br", null), React.createElement(SelectField_1.default, {floatingLabelText: 'Test Runner', value: pj.config.runner, onChange: this.handleSelect.bind(this, 'runner')}, runnerItems_1.default(pj.config.language)), React.createElement("br", null), React.createElement(RaisedButton_1.default, {style: styles.button, label: 'Save', primary: true, onTouchTap: this.save.bind(this)}), React.createElement(RaisedButton_1.default, {style: styles.button, label: 'Continue', secondary: true, onTouchTap: this.props.routeToInfo.bind(this)})));
7784
};
7885
TutorialConfig = __decorate([
7986
react_redux_1.connect(null, function (dispatch) {
8087
return {
81-
save: function (config) { return dispatch(actions_1.tutorialConfigSave(config)); },
82-
routeToInfo: function () { return dispatch(actions_1.routeSet('tutorialInfo')); }
88+
save: function (pj) { return dispatch(actions_1.tutorialConfigSave(pj)); },
89+
routeToPage: function () { return dispatch(actions_1.routeSet('page')); }
8390
};
8491
}),
8592
__metadata('design:paramtypes', [Object])
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
"use strict";
22
var types_1 = require('./types');
3-
function tutorialConfigSave(config) {
3+
function tutorialConfigSave(pj) {
44
return function (dispatch, getState) {
55
var dir = getState().dir;
6-
dispatch({ type: types_1.TUTORIAL_CONFIG_SAVE, payload: { config: config, dir: dir } });
6+
dispatch({ type: types_1.PJ_SAVE, payload: { pj: pj, dir: dir } });
77
};
88
}
99
exports.tutorialConfigSave = tutorialConfigSave;
10-
function tutorialInfoSave(info) {
11-
return { type: types_1.TUTORIAL_INFO_SAVE, payload: { info: info } };
12-
}
13-
exports.tutorialInfoSave = tutorialInfoSave;

lib/modules/package-json/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"use strict";
22
var actions_1 = require('./actions');
33
exports.tutorialConfigSave = actions_1.tutorialConfigSave;
4-
exports.tutorialInfoSave = actions_1.tutorialInfoSave;
54
var reducer_1 = require('./reducer');
65
exports.reducer = reducer_1.default;

lib/modules/package-json/reducer.js

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,39 @@
11
"use strict";
22
var types_1 = require('./types');
33
var packageJson_1 = require('./utils/packageJson');
4-
var _config = {
4+
var sort_package_json_1 = require('sort-package-json');
5+
var _pj = {
56
name: 'coderoad-',
67
version: '0.1.0',
8+
author: '',
79
description: '',
10+
main: 'coderoad.json',
11+
files: ['coderoad.json', 'tutorial'],
812
keywords: ['coderoad', 'tutorial'],
913
config: {
1014
language: 'JS',
1115
runner: 'mocha-coderoad',
1216
runnerOptions: {}
17+
},
18+
engines: {
19+
node: '>=0.10.3'
1320
}
1421
};
1522
var defaultPJ = {};
16-
function tutorialConfig(c, action) {
17-
if (c === void 0) { c = _config; }
23+
function tutorialConfig(p, action) {
24+
if (p === void 0) { p = _pj; }
1825
switch (action.type) {
19-
case types_1.TUTORIAL_CONFIG_SAVE:
20-
var _a = action.payload, config = _a.config, dir = _a.dir;
21-
var pj = packageJson_1.readPackageJson(dir);
22-
var content = !!pj
23-
? Object.assign({}, pj, config)
24-
: config;
26+
case types_1.PJ_SAVE:
27+
var _a = action.payload, pj = _a.pj, dir = _a.dir;
28+
var pjExists = packageJson_1.readPackageJson(dir);
29+
var nextPj = !!pjExists
30+
? Object.assign({}, pjExists, pj)
31+
: pj;
32+
var content = sort_package_json_1.sortPackageJson(JSON.stringify(nextPj, null, 2));
2533
packageJson_1.writePackageJson(dir, content);
26-
return action.payload.config;
27-
case types_1.TUTORIAL_INFO_SAVE:
28-
return action.payload.info;
34+
return nextPj;
2935
default:
30-
return c;
36+
return p;
3137
}
3238
}
3339
Object.defineProperty(exports, "__esModule", { value: true });

lib/modules/package-json/types.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
"use strict";
2-
exports.TUTORIAL_CONFIG_SAVE = 'TUTORIAL_CONFIG_SAVE';
3-
exports.TUTORIAL_INFO_SAVE = 'TUTORIAL_INFO_SAVE';
2+
exports.PJ_SAVE = 'PJ_SAVE';

lib/modules/package-json/utils/packageJson.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
var path_1 = require('path');
33
var fs_1 = require('fs');
44
var node_file_exists_1 = require('node-file-exists');
5-
var sort_package_json_1 = require('sort-package-json');
65
function readPackageJson(dir) {
76
var pathToPJ = path_1.join(dir, './package.json');
87
if (!node_file_exists_1.default(pathToPJ)) {
@@ -17,6 +16,6 @@ function readPackageJson(dir) {
1716
}
1817
exports.readPackageJson = readPackageJson;
1918
function writePackageJson(dir, content) {
20-
fs_1.writeFileSync(path_1.join(dir, './package.json'), sort_package_json_1.sortPackageJson(JSON.stringify(content, null, 2)));
19+
fs_1.writeFileSync(path_1.join(dir, './package.json'), content);
2120
}
2221
exports.writePackageJson = writePackageJson;

lib/modules/setup/checks/index.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

lib/modules/setup/package-json/index.js

Lines changed: 0 additions & 26 deletions
This file was deleted.

lib/modules/tutorial-config/actions.js

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)