mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2025-05-02 20:37:08 +01:00
More VALIDATE fixups.
This commit is contained in:
3
dist/cli/main.js
vendored
3
dist/cli/main.js
vendored
@ -240,6 +240,9 @@ Definition of the `main` function.
|
||||
if (_opts.debug) {
|
||||
msgs = require('./msg').errors;
|
||||
logMsg(printf(M2C(msgs.exiting.msg, 'cyan'), finalErrorCode));
|
||||
if (err.stack) {
|
||||
logMsg(err.stack);
|
||||
}
|
||||
}
|
||||
_exitCallback(finalErrorCode);
|
||||
};
|
||||
|
8
dist/cli/out.js
vendored
8
dist/cli/out.js
vendored
@ -152,10 +152,10 @@ Output routines for HackMyResume.
|
||||
style = 'red';
|
||||
adj = msgs[4];
|
||||
}
|
||||
evt.fmt = evt.fmt.toUpperCase();
|
||||
L(M2C(msgs[0], 'white') + chalk[style].bold(adj), evt.file, evt.fmt);
|
||||
if (evt.errors) {
|
||||
_.each(evt.errors, function(err, idx) {
|
||||
evt.schema = evt.schema.toUpperCase();
|
||||
L(M2C(msgs[0], 'white') + chalk[style].bold(adj), evt.file, evt.schema);
|
||||
if (evt.violations) {
|
||||
_.each(evt.violations, function(err, idx) {
|
||||
L(chalk.yellow.bold('--> ') + chalk.yellow(err.field.replace('data.', 'resume.').toUpperCase() + ' ' + err.message));
|
||||
}, this);
|
||||
}
|
||||
|
78
dist/verbs/validate.js
vendored
78
dist/verbs/validate.js
vendored
@ -42,9 +42,6 @@ Implementation of the 'validate' verb for HackMyResume.
|
||||
|
||||
})(Verb);
|
||||
|
||||
|
||||
/** Validate 1 to N resumes in FRESH or JSON Resume format. */
|
||||
|
||||
_validate = function(sources, unused, opts) {
|
||||
var results, schemas, validator;
|
||||
if (!sources || !sources.length) {
|
||||
@ -60,12 +57,9 @@ Implementation of the 'validate' verb for HackMyResume.
|
||||
};
|
||||
results = _.map(sources, function(t) {
|
||||
var r;
|
||||
if (this.hasError() && opts.assert) {
|
||||
return {};
|
||||
}
|
||||
r = _validateOne.call(this, t, validator, schemas, opts);
|
||||
if (r.fluenterror) {
|
||||
this.err(r.fluenterror, r);
|
||||
if (r.error) {
|
||||
this.err(r.error.fluenterror, r.error);
|
||||
}
|
||||
return r;
|
||||
}, this);
|
||||
@ -77,14 +71,27 @@ Implementation of the 'validate' verb for HackMyResume.
|
||||
return results;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
Validate a single resume.
|
||||
@returns {
|
||||
file: <fileName>,
|
||||
isValid: <validFlag>,
|
||||
status: <validationStatus>,
|
||||
violations: <validationErrors>,
|
||||
schema: <schemaType>,
|
||||
error: <errorObject>
|
||||
}
|
||||
*/
|
||||
|
||||
_validateOne = function(t, validator, schemas, opts) {
|
||||
var errCode, errors, fmt, obj, ret, validate;
|
||||
var errCode, obj, ret, validate;
|
||||
ret = {
|
||||
file: t,
|
||||
isValid: false,
|
||||
status: 'unknown'
|
||||
status: 'unknown',
|
||||
schema: '-----'
|
||||
};
|
||||
fmt = '------';
|
||||
try {
|
||||
obj = safeLoadJSON(t);
|
||||
if (obj.ex) {
|
||||
@ -95,42 +102,33 @@ Implementation of the 'validate' verb for HackMyResume.
|
||||
errCode = HMSTATUS.readError;
|
||||
ret.status = 'missing';
|
||||
}
|
||||
throw {
|
||||
ret.error = {
|
||||
fluenterror: errCode,
|
||||
inner: obj.ex.inner
|
||||
inner: obj.ex.inner,
|
||||
quiet: errCode === HMSTATUS.readError
|
||||
};
|
||||
}
|
||||
if (obj.json.basics) {
|
||||
fmt = 'jars';
|
||||
} else {
|
||||
fmt = 'fresh';
|
||||
}
|
||||
errors = [];
|
||||
validate = validator(schemas[fmt], {
|
||||
formats: {
|
||||
date: /^\d{4}(?:-(?:0[0-9]{1}|1[0-2]{1})(?:-[0-9]{2})?)?$/
|
||||
if (obj.json.basics) {
|
||||
ret.schema = 'jars';
|
||||
} else {
|
||||
ret.schema = 'fresh';
|
||||
}
|
||||
validate = validator(schemas[ret.schema], {
|
||||
formats: {
|
||||
date: /^\d{4}(?:-(?:0[0-9]{1}|1[0-2]{1})(?:-[0-9]{2})?)?$/
|
||||
}
|
||||
});
|
||||
ret.isValid = validate(obj.json);
|
||||
ret.status = ret.isValid ? 'valid' : 'invalid';
|
||||
if (!ret.isValid) {
|
||||
ret.violations = validate.errors;
|
||||
}
|
||||
});
|
||||
ret.isValid = validate(obj.json);
|
||||
ret.status = ret.isValid ? 'valid' : 'invalid';
|
||||
if (!ret.isValid) {
|
||||
errors = validate.errors;
|
||||
}
|
||||
} catch (_error) {
|
||||
ret.ex = _error;
|
||||
}
|
||||
this.stat(HMEVENT.afterValidate, {
|
||||
file: t,
|
||||
status: ret.status,
|
||||
fmt: fmt.replace('jars', 'JSON Resume'),
|
||||
errors: errors
|
||||
});
|
||||
if (opts.assert && !ret.isValid) {
|
||||
return {
|
||||
fluenterror: HMSTATUS.invalid,
|
||||
errors: errors
|
||||
};
|
||||
ret.error = _error;
|
||||
}
|
||||
ret.schema = ret.schema.replace('jars', 'JSON Resume');
|
||||
this.stat(HMEVENT.afterValidate, ret);
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user