Skip to content

Commit 9533056

Browse files
committed
run create programmatically
1 parent 18a1bf4 commit 9533056

File tree

9 files changed

+111
-117
lines changed

9 files changed

+111
-117
lines changed

lib/cli.js

100755100644
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ if (program.build) {
3131
else if (program.create) {
3232
var packageName = program.args[0];
3333
process.stdout.write("Creating demo tutorial \"coderoad-" + packageName + "\"...");
34-
if (!create_1.default(packageName)) {
34+
if (!create_1.default(process.cwd(), packageName)) {
3535
result_1.fail();
3636
}
3737
}

lib/create/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
"use strict";
22
var validate_1 = require('./validate');
33
var write_demo_1 = require('./write-demo');
4+
var path_1 = require('path');
45
var chalk_1 = require('chalk');
56
var build_1 = require('../build');
6-
function create(name) {
7+
function create(dir, name) {
78
return Promise.all([
89
validate_1.validatePackageName(name),
9-
write_demo_1.createPackageJson(name),
10-
write_demo_1.createTutorialMd()
10+
write_demo_1.createPackageJson(dir, name),
11+
write_demo_1.createTutorialMd(dir)
1112
]).then(function () {
12-
build_1.default('tutorial/tutorial.md', 'coderoad.json');
13+
build_1.default(path_1.join(dir, 'tutorial/tutorial.md'), path_1.join(dir, 'coderoad.json'));
1314
return true;
1415
}).catch(function (e) {
1516
switch (e.type) {

lib/create/write-demo.js

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,35 @@ var fs_1 = require('fs');
33
var path_1 = require('path');
44
var sort_package_json_1 = require('sort-package-json');
55
var node_file_exists_1 = require('node-file-exists');
6-
function createFile(pathToFile) {
7-
if (!node_file_exists_1.default(pathToFile)) {
8-
var inputPath = path_1.join(__dirname, '..', '..', 'setup', pathToFile);
9-
var test = fs_1.readFileSync(inputPath, 'utf8');
10-
fs_1.writeFileSync(pathToFile, test, 'utf8');
6+
function createFile(dir, pathToFile) {
7+
try {
8+
if (!node_file_exists_1.default(pathToFile)) {
9+
var inputPath = path_1.join(__dirname, '..', '..', 'setup', pathToFile);
10+
var test = fs_1.readFileSync(inputPath, 'utf8');
11+
fs_1.writeFileSync(path_1.join(dir, pathToFile), test, 'utf8');
12+
}
13+
}
14+
catch (e) {
15+
console.log(e);
1116
}
1217
}
1318
function createFolder(pathToFolder) {
14-
if (!node_file_exists_1.default(pathToFolder)) {
15-
fs_1.mkdirSync(pathToFolder);
19+
try {
20+
if (!node_file_exists_1.default(pathToFolder)) {
21+
fs_1.mkdirSync(pathToFolder);
22+
}
23+
}
24+
catch (e) {
25+
console.log(e);
1626
}
1727
}
18-
var folders = [
19-
'tutorial',
20-
path_1.join('tutorial', '01'),
21-
path_1.join('tutorial', '02')
22-
];
28+
var folders = function (dir) { return [
29+
path_1.join(dir, 'tutorial'),
30+
path_1.join(dir, 'tutorial', '01'),
31+
path_1.join(dir, 'tutorial', '02')
32+
]; };
2333
var files = [
24-
'.gitignore',
34+
path_1.join('.gitignore'),
2535
path_1.join('tutorial', 'tutorial.md'),
2636
path_1.join('tutorial', '01', 'page-one.md'),
2737
path_1.join('tutorial', '01', '01.spec.js'),
@@ -30,22 +40,23 @@ var files = [
3040
path_1.join('tutorial', '02', '01.spec.js'),
3141
path_1.join('tutorial', '02', '02.spec.js')
3242
];
33-
function createTutorialMd() {
43+
function createTutorialMd(dir) {
44+
console.log('dir', dir);
3445
return new Promise(function (resolve, reject) {
35-
folders.forEach(function (folder) { return createFolder(folder); });
36-
files.forEach(function (file) { return createFile(file); });
46+
folders(dir).forEach(function (folder) { return createFolder(folder); });
47+
files.forEach(function (file) { return createFile(dir, file); });
3748
resolve(true);
3849
});
3950
}
4051
exports.createTutorialMd = createTutorialMd;
41-
function createPackageJson(name) {
52+
function createPackageJson(dir, name) {
4253
return new Promise(function (resolve, reject) {
43-
if (!node_file_exists_1.default('package.json')) {
54+
if (!node_file_exists_1.default(path_1.join(dir, 'package.json'))) {
4455
var inputPath = path_1.join(__dirname, '..', '..', 'setup', 'package.json');
4556
var packageJson = JSON.parse(fs_1.readFileSync(inputPath, 'utf8'));
4657
packageJson.name = 'coderoad-' + name;
4758
var packageJsonString = sort_package_json_1.sortPackageJson(JSON.stringify(packageJson, null, 2));
48-
fs_1.writeFileSync('package.json', packageJsonString, 'utf8');
59+
fs_1.writeFileSync(path_1.join(dir, 'package.json'), packageJsonString, 'utf8');
4960
resolve(true);
5061
}
5162
else {

lib/list/list.js

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

lib/tutorials/update.js

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +0,0 @@
1-
"use strict";
2-
var atom_plugin_command_line_1 = require('atom-plugin-command-line');
3-
function tutorialUpdate(name) {
4-
console.log("run \"npm install --save-dev " + name + "\"");
5-
}
6-
exports.tutorialUpdate = tutorialUpdate;
7-
function canUpdateTutorial(name, currentVersion) {
8-
return null;
9-
return (atom_plugin_command_line_1.default('npm', "outdated " + name).then(function (res) {
10-
console.log(res);
11-
if (res.length > 0) {
12-
var linked = res.match(/[0-9\.]+\s+linked/);
13-
if (linked) {
14-
return false;
15-
}
16-
var match = res.match(/[0-9\.]+\s+[0-9\.]+\s+([0-9\.]+)/);
17-
if (match.length >= 2) {
18-
return true;
19-
}
20-
}
21-
return null;
22-
}));
23-
}
24-
exports.canUpdateTutorial = canUpdateTutorial;

src/cli.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ if (program.build) {
3939
const packageName = program.args[0];
4040
process.stdout.write(`Creating demo tutorial "coderoad-${packageName}"...`);
4141
// run create
42-
if (!create(packageName)) {
42+
if (!create(process.cwd(), packageName)) {
4343
fail();
4444
}
4545

src/create/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
import {validatePackageName} from './validate';
22
import {createPackageJson, createTutorialMd} from './write-demo';
3+
import {join} from 'path';
34
import {red, yellow} from 'chalk';
45
import build from '../build';
56

6-
export default function create(name: string): boolean | Promise<boolean> {
7+
export default function create(dir: string, name: string): boolean | Promise<boolean> {
78

89
// npm package
910
return Promise.all([
1011
validatePackageName(name),
11-
createPackageJson(name),
12-
createTutorialMd()
12+
createPackageJson(dir, name),
13+
createTutorialMd(dir)
1314
]).then(() => {
14-
build('tutorial/tutorial.md', 'coderoad.json');
15+
build(
16+
join(dir, 'tutorial/tutorial.md'),
17+
join(dir, 'coderoad.json')
18+
);
1519
return true;
1620
}).catch((e) => {
1721

src/create/write-demo.ts

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,36 @@ import {join} from 'path';
33
import {sortPackageJson} from 'sort-package-json'
44
import fileExists from 'node-file-exists';
55

6-
function createFile(pathToFile: string): void {
7-
if (!fileExists(pathToFile)) {
8-
let inputPath = join(__dirname, '..', '..', 'setup', pathToFile);
9-
let test = readFileSync(inputPath, 'utf8');
10-
writeFileSync(pathToFile, test, 'utf8');
6+
function createFile(dir: string, pathToFile: string): void {
7+
try {
8+
if (!fileExists(pathToFile)) {
9+
let inputPath = join(__dirname, '..', '..', 'setup', pathToFile);
10+
let test = readFileSync(inputPath, 'utf8');
11+
writeFileSync(join(dir, pathToFile), test, 'utf8');
12+
}
13+
} catch (e) {
14+
console.log(e);
1115
}
1216
}
1317

1418
function createFolder(pathToFolder: string): void {
15-
if (!fileExists(pathToFolder)) {
16-
mkdirSync(pathToFolder);
19+
try {
20+
if (!fileExists(pathToFolder)) {
21+
mkdirSync(pathToFolder);
22+
}
23+
} catch (e) {
24+
console.log(e);
1725
}
1826
}
1927

20-
const folders = [
21-
'tutorial',
22-
join('tutorial', '01'),
23-
join('tutorial', '02')
28+
const folders = dir => [
29+
join(dir, 'tutorial'),
30+
join(dir, 'tutorial', '01'),
31+
join(dir, 'tutorial', '02')
2432
];
2533

2634
const files = [
27-
'.gitignore',
35+
join('.gitignore'),
2836
join('tutorial', 'tutorial.md'),
2937
join('tutorial', '01', 'page-one.md'),
3038
join('tutorial', '01', '01.spec.js'),
@@ -34,17 +42,18 @@ const files = [
3442
join('tutorial', '02', '02.spec.js')
3543
];
3644

37-
export function createTutorialMd(): Promise<boolean> {
45+
export function createTutorialMd(dir: string): Promise<boolean> {
46+
console.log('dir', dir);
3847
return new Promise((resolve, reject) => {
39-
folders.forEach((folder) => createFolder(folder));
40-
files.forEach((file) => createFile(file));
48+
folders(dir).forEach((folder) => createFolder(folder));
49+
files.forEach((file) => createFile(dir, file));
4150
resolve(true);
4251
});
4352
}
4453

45-
export function createPackageJson(name: string): Promise<boolean> {
54+
export function createPackageJson(dir: string, name: string): Promise<boolean> {
4655
return new Promise((resolve, reject) => {
47-
if (!fileExists('package.json')) {
56+
if (!fileExists(join(dir, 'package.json'))) {
4857

4958
// read from existing package.json
5059
const inputPath: string = join(
@@ -61,7 +70,7 @@ export function createPackageJson(name: string): Promise<boolean> {
6170
JSON.stringify(packageJson, null, 2)
6271
);
6372

64-
writeFileSync('package.json', packageJsonString, 'utf8');
73+
writeFileSync(join(dir, 'package.json'), packageJsonString, 'utf8');
6574
resolve(true);
6675
} else {
6776
// TODO: validate package.json

src/tutorials/update.ts

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
1-
import commandLine from 'atom-plugin-command-line';
2-
3-
export function tutorialUpdate(name: string): void {
4-
console.log(`run "npm install --save-dev ${name}"`);
5-
// commandLine(
6-
// // 'npm', `install --save-dev ${name}`
7-
// ).then((res) => {
8-
// console.log(res);
9-
// store.dispatch(tutorialsFind());
10-
// });
11-
}
12-
13-
export function canUpdateTutorial(
14-
name: string, currentVersion: string
15-
): Promise<boolean> {
16-
return null;
17-
// if (global.hasOwnProperty('navigator') || !global.navigator.onLine) {
18-
// return null;
19-
// }
20-
return (commandLine(
21-
'npm', `outdated ${name}`
22-
).then(
23-
(res: string) => {
24-
console.log(res);
25-
if (res.length > 0) {
26-
// npm link enabled
27-
const linked = res.match(/[0-9\.]+\s+linked/);
28-
if (linked) { return false; }
29-
// not latest version
30-
const match = res.match(/[0-9\.]+\s+[0-9\.]+\s+([0-9\.]+)/);
31-
if (match.length >= 2) {
32-
// return match[1]; // string output
33-
return true;
34-
}
35-
}
36-
return null;
37-
})
38-
);
39-
}
1+
// import commandLine from 'atom-plugin-command-line';
2+
//
3+
// export function tutorialUpdate(name: string): void {
4+
// console.log(`run "npm install --save-dev ${name}"`);
5+
// // commandLine(
6+
// // // 'npm', `install --save-dev ${name}`
7+
// // ).then((res) => {
8+
// // console.log(res);
9+
// // store.dispatch(tutorialsFind());
10+
// // });
11+
// }
12+
//
13+
// export function canUpdateTutorial(
14+
// name: string, currentVersion: string
15+
// ): Promise<boolean> {
16+
// return null;
17+
// // if (global.hasOwnProperty('navigator') || !global.navigator.onLine) {
18+
// // return null;
19+
// // }
20+
// return (commandLine(
21+
// 'npm', `outdated ${name}`
22+
// ).then(
23+
// (res: string) => {
24+
// console.log(res);
25+
// if (res.length > 0) {
26+
// // npm link enabled
27+
// const linked = res.match(/[0-9\.]+\s+linked/);
28+
// if (linked) { return false; }
29+
// // not latest version
30+
// const match = res.match(/[0-9\.]+\s+[0-9\.]+\s+([0-9\.]+)/);
31+
// if (match.length >= 2) {
32+
// // return match[1]; // string output
33+
// return true;
34+
// }
35+
// }
36+
// return null;
37+
// })
38+
// );
39+
// }

0 commit comments

Comments
 (0)