Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit36f1bd3

Browse files
committed
prepare validate packageJson
1 parent2f884cd commit36f1bd3

File tree

9 files changed

+99
-24
lines changed

9 files changed

+99
-24
lines changed

‎CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
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.7.0] - WIP
6+
- validate packageJson function
7+
58
##[0.6.0] - 2016-06-12
69
- allow for programmatic use
710
- working`> coderoad tutorials`
8-
- validate name function
911

1012
##[0.5.0] - 2016-05-02
1113
- bug fixes

‎lib/cli.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,17 @@ var search_1 = require('./search');
99
vartutorials_1=require('./tutorials');
1010
varpublish_1=require('./publish');
1111
varupdate_1=require('./update');
12+
varvalidate_1=require('./validate');
1213
program
13-
.version('0.6.0')
14+
.version('0.7.0')
1415
.usage('[options] <keywords>')
1516
.option('-b, --build <path/to/tutorial.md>','tutorial markdown file',/^.+\.md$/i)
1617
.option('-c, --create <name>','tutorial name')
1718
.option('-p, --publish <version>','publish tutorial to npm with new version number')
1819
.option('-t, --tutorials','list of local tutorial packages')
1920
.option('-s, --search <query>','search for tutorial package')
2021
.option('-r, --run','run tutorial')
22+
.option('-v, --validate','validate tutorial')
2123
.parse(process.argv);
2224
update_1.default();
2325
if(program.build){
@@ -61,6 +63,11 @@ else if (program.publish) {
6163
varversion=program.args[0];
6264
publish_1.default(version);
6365
}
66+
elseif(program.validate){
67+
if(!validate_1.default()){
68+
result_1.fail();
69+
}
70+
}
6471
else{
6572
program.help();
6673
}

‎lib/validate/index.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"use strict";
2+
varchalk_1=require('chalk');
3+
varpackageJson_1=require('./packageJson');
4+
varget_1=require('../packageJson/get');
5+
functionvalidate(){
6+
varpj=get_1.default(process.cwd());
7+
if(!pj){
8+
console.log(chalk_1.red('Error: No package.json.'));
9+
returnfalse;
10+
}
11+
varvalidation=packageJson_1.default(pj);
12+
getValidationMessages(validation.warnings,chalk_1.yellow);
13+
returngetValidationMessages(validation.errors,chalk_1.red);
14+
}
15+
Object.defineProperty(exports,"__esModule",{value:true});
16+
exports.default=validate;
17+
functiongetValidationMessages(validation,color){
18+
if(validation&&validation.length){
19+
validation.forEach(function(e){
20+
console.log(color("\n Error: "+e.name+" "+e.msg+".\n Example: "+e.example+"\n "));
21+
});
22+
returnfalse;
23+
}
24+
returntrue;
25+
}

‎lib/validate/packageJson.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ function validatePackageJson(pj) {
8888
vartarget=pj.config ?pj.config :pj;
8989
if(!target.hasOwnProperty(key.name)||key.validate(target[key.name])){
9090
if(!key.optional){
91-
errors.push({msg:key.msg,example:key.example});
91+
errors.push({name:key.name,msg:key.msg,example:key.example});
9292
}
9393
else{
94-
warnings.push({msg:key.msg,example:key.example});
94+
warnings.push({name:key.name,msg:key.msg,example:key.example});
9595
}
9696
}
9797
});

‎src/cli.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,20 @@ import search from './search';
1010
importtutorialsfrom'./tutorials';
1111
importpublishfrom'./publish';
1212
importcheckForUpdatefrom'./update';
13+
importvalidatefrom'./validate';
1314

1415
program
15-
.version('0.6.0')
16+
.version('0.7.0')
1617
.usage('[options] <keywords>')
1718
.option('-b, --build <path/to/tutorial.md>',
18-
'tutorial markdown file',/^.+\.md$/i)
19+
'tutorial markdown file',/^.+\.md$/i)
1920
.option('-c, --create <name>','tutorial name')
2021
.option('-p, --publish <version>',
21-
'publish tutorial to npm with new version number')
22+
'publish tutorial to npm with new version number')
2223
.option('-t, --tutorials','list of local tutorial packages')
2324
.option('-s, --search <query>','search for tutorial package')
2425
.option('-r, --run','run tutorial')
26+
.option('-v, --validate','validate tutorial')
2527
.parse(process.argv);
2628

2729
checkForUpdate();
@@ -68,6 +70,12 @@ if (program.build) {
6870
constversion=program.args[0];
6971
publish(version);
7072

73+
}elseif(program.validate){
74+
if(!validate()){
75+
fail();
76+
}
77+
78+
// help
7179
}else{
7280
program.help();
7381
}

‎src/typings/cr/validate.d.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
interfacePJErrors{
2+
name:string;
3+
msg:string;
4+
example:string;
5+
}
6+
7+
interfacePJKeysextendsPJErrors{
8+
name:string;
9+
validate:(content:string)=>boolean;
10+
config?:boolean;
11+
optional?:boolean;
12+
}
13+
14+
interfaceValidatePjOutput{
15+
errors:PJErrors[];
16+
warnings:PJErrors[];
17+
}

‎src/validate/index.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import{red,yellow}from'chalk';
2+
importvalidatePackageJsonfrom'./packageJson';
3+
importgetPackageJsonfrom'../packageJson/get';
4+
5+
exportdefaultfunctionvalidate():boolean{
6+
constpj=getPackageJson(process.cwd());
7+
if(!pj){
8+
console.log(red('Error: No package.json.'));
9+
returnfalse;
10+
}
11+
constvalidation=validatePackageJson(pj);
12+
// log warnings
13+
getValidationMessages(validation.warnings,yellow);
14+
// log and return errors
15+
returngetValidationMessages(validation.errors,red);
16+
}
17+
18+
functiongetValidationMessages(validation:PJErrors[],color:any){
19+
if(validation&&validation.length){
20+
validation.forEach((e)=>{
21+
console.log(color(`
22+
Error:${e.name}${e.msg}.
23+
Example:${e.example}
24+
`));
25+
});
26+
returnfalse;
27+
}
28+
returntrue;
29+
}

‎src/validate/packageJson.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,7 @@ const pJKeys: PJKeys[] = [{
8181
example:'MIT',
8282
}];
8383

84-
interfacePJErrors{
85-
msg:string;
86-
example:string;
87-
}
88-
89-
interfacePJKeysextendsPJErrors{
90-
name:string;
91-
validate:(content:string)=>boolean;
92-
config?:boolean;
93-
optional?:boolean;
94-
}
9584

96-
interfaceValidatePjOutput{
97-
errors:PJErrors[];
98-
warnings:PJErrors[];
99-
}
10085

10186
exportdefaultfunctionvalidatePackageJson(pj:PackageJson):ValidatePjOutput{
10287
consterrors=[];
@@ -107,9 +92,9 @@ export default function validatePackageJson(pj: PackageJson): ValidatePjOutput {
10792
// key doesn't exist or key is invalid
10893
if(!target.hasOwnProperty(key.name)||key.validate(target[key.name])){
10994
if(!key.optional){
110-
errors.push({msg:key.msg,example:key.example});
95+
errors.push({name:key.name,msg:key.msg,example:key.example});
11196
}else{
112-
warnings.push({msg:key.msg,example:key.example});
97+
warnings.push({name:key.name,msg:key.msg,example:key.example});
11398
}
11499
}
115100
});

‎tsconfig.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"src/typings/cr/globals.d.ts",
5151
"src/typings/cr/test.d.ts",
5252
"src/typings/cr/tutorial.d.ts",
53+
"src/typings/cr/validate.d.ts",
5354
"src/typings/es6-promise/es6-promise.d.ts",
5455
"src/typings/globals.d.ts",
5556
"src/typings/node-file-exists/index.d.ts",
@@ -58,6 +59,7 @@
5859
"src/typings/sort-package-json/index.d.ts",
5960
"src/typings/tsd.d.ts",
6061
"src/update/index.ts",
62+
"src/validate/index.ts",
6163
"src/validate/packageJson.ts"
6264
],
6365
"exclude": [

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp