Skip to content

Commit 2eeb493

Browse files
authored
Merge pull request #54 from shapkarin/fork
#53 count props, add default config, remove filename postfix and test folder
2 parents db362c4 + 7c8d3f3 commit 2eeb493

File tree

8 files changed

+52
-56
lines changed

8 files changed

+52
-56
lines changed

.reactclirc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"client": "test_folder"
3+
}

bin/initialize.js

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -190,48 +190,21 @@ program
190190
paginated: true,
191191
choices: ["yes", "no"]
192192
},
193-
{
194-
type: "input",
195-
name: "propNo",
196-
message: "Number of prop types",
197-
paginated: true,
198-
validate: function(input) {
199-
let regex = /^\d+$/;
200-
//return false;
201-
if (!regex.test(input)) {
202-
return "enter a number";
203-
}
204-
return true;
205-
},
206-
when: function(answer) {
207-
return answer.propTypes === "yes";
208-
}
209-
},
210193
{
211194
type: "input",
212195
name: "propNames",
213196
message: "Prop names",
214197
paginated: true,
215198
when: function(answer) {
216-
numberOfPropTypes = answer.propNo;
217199
return answer.propTypes === "yes";
218200
},
219201
validate: function(input) {
220202
let propNames = input.split(" ");
221-
if (
222-
propNames.length !==
223-
Number(numberOfPropTypes)
224-
) {
225-
return `enter ${numberOfPropTypes} prop names`;
226-
}
227-
let regex = /^[a-zA-Z]+$/;
203+
numberOfPropTypes = propNames.length;
228204

229205
if (!checkDuplicates(propNames)) {
230206
return "duplicate prop names";
231207
}
232-
// if(!regex.test(input)) {
233-
// return 'enter valid name [alpha]'
234-
// }
235208
return true;
236209
}
237210
}

lib/config.default.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const defaults = {
2+
client: "src"
3+
}
4+
5+
module.exports = defaults;

lib/generate.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ generate.prototype.createComponentFile = function(re, componentName, answersInne
1414
const _modFile = file.replace(re, componentName);
1515
const __modFile = this.createModFile(_modFile, answersInner, componentName);
1616
console.log(__modFile);
17-
fs.writeFileSync(path.join(process.cwd(), 'src/components', module, componentName + '.react.js'), __modFile, 'utf-8');
17+
fs.writeFileSync(path.join(process.cwd(), 'src/components', module, componentName + '.js'), __modFile, 'utf-8');
1818
}
1919

2020
/**
@@ -29,31 +29,31 @@ generate.prototype.generateComponent = function(type, module, componentName, ans
2929
try {
3030
if(componentName !== undefined) {
3131
const exists = fs.accessSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName), fs.F_OK);
32-
cb(`${componentName}.react.js already exists`);
32+
cb(`${componentName}.js already exists`);
3333
return;
3434
}
3535
else {
36-
const exists = fs.accessSync(path.join(process.cwd(), getSourceDirectory(), 'components', module + '.react.js'), fs.F_OK);
37-
cb(`${componentName}.react.js already exists`);
36+
const exists = fs.accessSync(path.join(process.cwd(), getSourceDirectory(), 'components', module + '.js'), fs.F_OK);
37+
cb(`${componentName}.js already exists`);
3838
return;
3939
}
4040
}
4141
catch(e) {
42-
const file = fs.readFileSync(path.join(__dirname, '..', `templates/components/${type}-component.react.js`), 'utf-8');
42+
const file = fs.readFileSync(path.join(__dirname, '..', `templates/components/${type}-component.js`), 'utf-8');
4343
const re = /<name>/gi;
4444
if(componentName !== undefined) {
4545
try {
4646
if(answers.propTypes === 'no') {
4747
fs.mkdirSync(path.join(process.cwd(), getSourceDirectory(), 'components', module), 0755);
4848
const _modFile = file.replace(re, componentName);
49-
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName + '.react.js'), _modFile, 'utf-8');
49+
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName + '.js'), _modFile, 'utf-8');
5050
cb(true);
5151
}
5252
else {
5353
fs.mkdirSync(path.join(process.cwd(), getSourceDirectory(), 'components', module), 0755);
5454
const _modFile = file.replace(re, componentName);
5555
const __modFile = this.createModFile(_modFile, answersInner, componentName);
56-
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName + '.react.js'), __modFile, 'utf-8');
56+
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName + '.js'), __modFile, 'utf-8');
5757
cb(true);
5858
}
5959
}
@@ -64,7 +64,7 @@ generate.prototype.generateComponent = function(type, module, componentName, ans
6464
else {
6565
const _modFile = file.replace(re, componentName);
6666
const __modFile = this.createModFile(_modFile, answersInner, componentName);
67-
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName + '.react.js'), __modFile, 'utf-8');
67+
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module, componentName + '.js'), __modFile, 'utf-8');
6868
cb(true);
6969
}
7070
}
@@ -73,7 +73,7 @@ generate.prototype.generateComponent = function(type, module, componentName, ans
7373
try {
7474
const _modFile = file.replace(re, module);
7575
const __modFile = this.createModFile(_modFile, answersInner, module);
76-
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module + '.react.js'), __modFile, 'utf-8');
76+
fs.writeFileSync(path.join(process.cwd(), getSourceDirectory(), 'components', module + '.js'), __modFile, 'utf-8');
7777
cb(true);
7878
}
7979
catch(ex) {

lib/source.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
const fs = require("fs.extra");
22
const path = require("path");
33

4+
const defaults = require("./config.default");
5+
46
/**
57
* get source directory file
68
*/
79
const getSourceDirectory = function() {
8-
const buffer = fs.readFileSync(path.join(process.cwd(), ".reactclirc"));
9-
const jsonContent = JSON.parse(buffer.toString());
10-
return jsonContent["client"];
10+
try {
11+
const buffer = fs.readFileSync(path.join(process.cwd(), ".reactclirc"));
12+
const jsonContent = JSON.parse(buffer.toString());
13+
return jsonContent["client"];
14+
} catch (error) {
15+
return defaults["client"];
16+
}
1117
};
1218

1319
module.exports = getSourceDirectory;

test/generate.js

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,39 @@
11
const assert = require("chai").assert;
22
const generateApp = require("../lib/generate");
3+
const fs = require('fs.extra');
4+
const path = require('path');
5+
const rmdir = require("rimraf");
36

47
generate = new generateApp();
58

69
describe("Create react components", function() {
710
it("should create a parent react component", function(done) {
811
const answers = {
9-
componentType: "child",
12+
componentType: "parent",
1013
propTypes: "yes",
11-
propNo: "2",
12-
propName: "first",
13-
propType: "number"
14+
propNames: "title likes"
1415
};
1516
const answersInner = {
16-
first: "string",
17-
last: "string"
17+
title: "string",
18+
likes: "number"
1819
};
19-
generate.createComponent(
20-
"core",
21-
"sample",
22-
answers,
23-
answersInner,
24-
function(status) {
25-
assert.equal(status, "module doesn't exist");
26-
done();
27-
}
28-
);
20+
fs.mkdirp(path.join(process.cwd(), "test_folder/components/"), err => {
21+
if (err) throw new Error("failed to create folders");
22+
generate.createComponent(
23+
"TestComponent",
24+
"FileName",
25+
answers,
26+
answersInner,
27+
function(status) {
28+
rmdir(path.join(process.cwd(), "test_folder"), err => {
29+
if (err) throw new Error("failed to remove folder");
30+
else {
31+
assert.equal(status, true);
32+
done();
33+
}
34+
});
35+
}
36+
);
37+
});
2938
});
3039
});

0 commit comments

Comments
 (0)