Skip to content

Commit 6156b4f

Browse files
committed
add write & writeFileFrom actions
1 parent 4ca0c65 commit 6156b4f

File tree

7 files changed

+58
-17
lines changed

7 files changed

+58
-17
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
All notable changes to this project will be documented in this file.
33
This project adheres to [Semantic Versioning](http://semver.org/).
44

5+
# [0.12.0] - 2016-08-16
6+
- add 'write' & 'writeFileFrom' actions
7+
58
# [0.11.0] - 2016-08-09
69
- break runner calls into two steps:
710
- load
811
- run
12+
- require Atom 1.8+, Node 4+
913

1014
# [0.10.10] - 2016-07-30
1115
- performance increase

lib/actions.js

+2
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,5 @@ exports.editorSet = core_coderoad_1.editorSet;
3333
exports.routeSet = core_coderoad_1.routeSet;
3434
exports.windowToggle = core_coderoad_1.windowToggle;
3535
exports.quit = core_coderoad_1.quit;
36+
exports.editorWriteFileFromContent = core_coderoad_1.editorWriteFileFromContent;
37+
exports.editorWriteFileFromFile = core_coderoad_1.editorWriteFileFromFile;

lib/modules/page/task-actions/handle-action-string.js

+20
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ var Type = {
77
SET: 'set',
88
INSERT: 'insert',
99
OPEN_CONSOLE: 'openConsole',
10+
WRITE: 'write',
11+
WRITE_FROM_FILE: 'writeFromFile',
1012
};
1113
function handleActionString(actionString) {
1214
return new Promise(function (resolve, reject) {
@@ -43,6 +45,21 @@ function handleActionString(actionString) {
4345
});
4446
}
4547
break;
48+
case Type.WRITE:
49+
case Type.WRITE_FROM_FILE:
50+
if (params.length === 2) {
51+
if (command === 'write') {
52+
var to = params[0], content = params[1];
53+
store_1.default.dispatch(actions_1.editorWriteFileFromContent(to, content));
54+
}
55+
else if (command === 'writeFromFile') {
56+
var to = params[0], from = params[1];
57+
store_1.default.dispatch(actions_1.editorWriteFileFromFile(to, from));
58+
}
59+
resolve();
60+
}
61+
reject('Invalid write params');
62+
break;
4663
default:
4764
console.log('Invalid editor action command');
4865
reject(false);
@@ -53,3 +70,6 @@ function handleActionString(actionString) {
5370
}
5471
Object.defineProperty(exports, "__esModule", { value: true });
5572
exports.default = handleActionString;
73+
function isValidPath(filePath) {
74+
return !filePath.match(/^\.\./);
75+
}

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
},
3131
"dependencies": {
3232
"atom-plugin-command-line": "1.0.2",
33-
"coderoad-cli": "0.8.0",
34-
"core-coderoad": "0.7.0",
33+
"coderoad-cli": "0.9.0",
34+
"core-coderoad": "0.8.0",
3535
"material-ui": "0.15.4",
3636
"node-file-exists": "1.1.0",
3737
"react": "15.3.0",

src/actions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ export {setupVerify, setupPackage} from './modules/setup/actions';
77
export {tutorialSet} from './modules/tutorial';
88
export {tutorialsFind, tutorialUpdate} from './modules/tutorials';
99

10-
export {editorDevToolsToggle, editorOpen, editorInsert, editorSave, editorSet, routeSet, windowToggle, quit} from 'core-coderoad';
10+
export {editorDevToolsToggle, editorOpen, editorInsert, editorSave, editorSet, routeSet, windowToggle, quit, editorWriteFileFromContent, editorWriteFileFromFile} from 'core-coderoad';

src/modules/page/task-actions/handle-action-string.ts

+29-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
import {editorInsert, editorOpen, editorSave, editorSet} from '../../../actions';
1+
import {editorInsert, editorOpen, editorSave, editorSet, editorWriteFileFromContent, editorWriteFileFromFile} from '../../../actions';
22
import store from '../../../store';
3-
import {getCommand, getOptions, getParams} from './parser';
3+
import actionWrite from '../@actions/write';
4+
import { getCommand, getOptions, getParams } from './parser';
45

56
const Type = {
67
OPEN: 'open',
78
SET: 'set',
89
INSERT: 'insert',
910
OPEN_CONSOLE: 'openConsole',
11+
WRITE: 'write',
12+
WRITE_FROM_FILE: 'writeFromFile',
1013
};
1114

1215
// parse task string for command/params
@@ -61,6 +64,25 @@ export default function handleActionString(
6164
// }
6265
// break;
6366

67+
case Type.WRITE:
68+
case Type.WRITE_FROM_FILE:
69+
if (params.length === 2) {
70+
71+
// write
72+
if (command === 'write') {
73+
const [to, content] = params;
74+
store.dispatch(editorWriteFileFromContent(to, content));
75+
76+
// writeFromFile
77+
} else if (command === 'writeFromFile') {
78+
const [to, from] = params;
79+
store.dispatch(editorWriteFileFromFile(to, from));
80+
}
81+
resolve();
82+
}
83+
reject('Invalid write params');
84+
break;
85+
6486
default:
6587
console.log('Invalid editor action command');
6688
reject(false);
@@ -69,3 +91,8 @@ export default function handleActionString(
6991
console.error('Error handling action string', err);
7092
});
7193
}
94+
95+
function isValidPath(filePath: string): boolean {
96+
// should not go above users tutorial directory for security reasons
97+
return !filePath.match(/^\.\./);
98+
}

src/modules/tests/test-run/run.ts

-12
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,12 @@
11
import {join} from 'path';
22

33
import handleResult from './handle-result';
4-
import parseLoaders from './parse-loaders';
54

65
export default function runTaskTests({
76
taskTests, dir, tutorial, taskPosition, testFile
87
}): number {
98

109
if (taskTests && taskTests.length) {
11-
// const tutorialConfig: Tutorial.Config = tutorial.config;
12-
// const testString = parseLoaders(
13-
// tests, tutorialConfig.testSuffix, tutorial, dir
14-
// );
15-
//
16-
// const config: Test.Config = {
17-
// dir,
18-
// tutorialDir: tutorialConfig.dir,
19-
// taskPosition
20-
// };
21-
2210
// call test runner
2311
tutorial.config.run({dir, taskPosition, handleResult, testFile});
2412
}

0 commit comments

Comments
 (0)