Skip to content

Commit

Permalink
feat: use standard as linter
Browse files Browse the repository at this point in the history
  • Loading branch information
debuggy committed Nov 18, 2018
1 parent 7023afe commit 53f1883
Show file tree
Hide file tree
Showing 9 changed files with 668 additions and 107 deletions.
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"javascript.validate.enable": false,
"standard.usePackageJson": true
}
33 changes: 17 additions & 16 deletions lib/__tests__/dockerfile-generator.test.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
const dockerfileGenerator = require('../dockerfile-generator');
const SchemaValidationError = require('../schema-validation-error');
const fs = require('fs-extra');
const path = require('path');
const dockerfileGenerator = require('../dockerfile-generator')
const SchemaValidationError = require('../schema-validation-error')
const fs = require('fs-extra')
const path = require('path')

/* eslint-env jest */
it('throws schema validation error', async () => {
expect.assertions(1);
const negativeExample = await fs.readJson('./examples/config-negative-example.json');
await expect(dockerfileGenerator(negativeExample)).rejects.toThrow(SchemaValidationError);
});
expect.assertions(1)
const negativeExample = await fs.readJson('./examples/config-negative-example.json')
await expect(dockerfileGenerator(negativeExample)).rejects.toThrow(SchemaValidationError)
})

it('generates dockerfile successfully', async () => {
expect.assertions(1);
const example = await fs.readJson('./examples/config-example.json');
const dockerFilePath = path.join(__dirname, '../../out/dockerfile');
await fs.remove(dockerFilePath);
const result = await dockerfileGenerator(example, dockerFilePath);
expect(result).toEqual(dockerFilePath);
expect(await fs.pathExists(dockerFilePath)).toBeTruthy;
});
expect.assertions(1)
const example = await fs.readJson('./examples/config-example.json')
const dockerFilePath = path.join(__dirname, '../../out/dockerfile')
await fs.remove(dockerFilePath)
const result = await dockerfileGenerator(example, dockerFilePath)
expect(result).toEqual(dockerFilePath)
expect(await fs.pathExists(dockerFilePath)).toBeTruthy()
})
29 changes: 15 additions & 14 deletions lib/__tests__/schema-validator.test.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
const schemaValidator = require('../schema-validator');
const fs = require('fs-extra');
const schemaValidator = require('../schema-validator')
const fs = require('fs-extra')

/* eslint-env jest */
it('schema validation succeeds', async () => {
expect.assertions(1);
const schema = await fs.readJson('./schemas/config-schema.json').then();
const example = await fs.readJson('./examples/config-example.json');
const validation = await schemaValidator(schema, example);
expect(validation.valid).toBe(true);
});
expect.assertions(1)
const schema = await fs.readJson('./schemas/config-schema.json').then()
const example = await fs.readJson('./examples/config-example.json')
const validation = await schemaValidator(schema, example)
expect(validation.valid).toBe(true)
})

it('schema validation fails', async () => {
expect.assertions(1);
const schema = await fs.readJson('./schemas/config-schema.json').then();
const negativeExample = await fs.readJson('./examples/config-negative-example.json');
const validation = await schemaValidator(schema, negativeExample);
expect(validation.valid).toBe(false);
});
expect.assertions(1)
const schema = await fs.readJson('./schemas/config-schema.json').then()
const negativeExample = await fs.readJson('./examples/config-negative-example.json')
const validation = await schemaValidator(schema, negativeExample)
expect(validation.valid).toBe(false)
})
58 changes: 29 additions & 29 deletions lib/dockerfile-generator.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
const fs = require('fs-extra');
const _ = require('lodash');
const SchemaValidationError = require('./schema-validation-error');
const schemaValidator = require('./schema-validator');
const path = require('path');
const fs = require('fs-extra')
const _ = require('lodash')
const SchemaValidationError = require('./schema-validation-error')
const schemaValidator = require('./schema-validator')
const path = require('path')

async function configConverter(config) {
let dockerContent = '';
dockerContent += `From ${config.base_docker}\n`;
if (!_.isNil(config.env_variables)) {
for (const envKey in config.env_variables) {
dockerContent += `ENV ${envKey}=${config.env_variables[envKey]}\n`;
}
async function configConverter (config) {
let dockerContent = ''
dockerContent += `From ${config.base_docker}\n`
if (!_.isNil(config.env_variables)) {
for (const envKey in config.env_variables) {
dockerContent += `ENV ${envKey}=${config.env_variables[envKey]}\n`
}
if (!_.isNil(config.steps)) {
for (buildStep of config.steps) {
if (buildStep.type == 'custom') {
dockerContent += `CMD ${buildStep.config.command}\n`;
}
}
}
if (!_.isNil(config.steps)) {
for (const buildStep of config.steps) {
if (buildStep.type === 'custom') {
dockerContent += `CMD ${buildStep.config.command}\n`
}
}
}

return dockerContent;
return dockerContent
}

async function dockerfileGenerator(config, dockerfilePath) {
const configSchema = await fs.readJson(path.join(__dirname, '../schemas/config-schema.json'));
const validation = await schemaValidator(configSchema, config);
if (!validation.valid) {
throw new SchemaValidationError(`The config validation is not passed.`, validation.errors);
}
const dockerContent = await configConverter(config);
await fs.outputFile(dockerfilePath, dockerContent);
return dockerfilePath;
async function dockerfileGenerator (config, dockerfilePath) {
const configSchema = await fs.readJson(path.join(__dirname, '../schemas/config-schema.json'))
const validation = await schemaValidator(configSchema, config)
if (!validation.valid) {
throw new SchemaValidationError(`The config validation is not passed.`, validation.errors)
}
const dockerContent = await configConverter(config)
await fs.outputFile(dockerfilePath, dockerContent)
return dockerfilePath
}

module.exports = dockerfileGenerator;
module.exports = dockerfileGenerator
12 changes: 6 additions & 6 deletions lib/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
const dockerfileGenerator = require('./dockerfile-generator');
const fs = require('fs-extra');
const path = require('path');
const dockerfileGenerator = require('./dockerfile-generator')
const fs = require('fs-extra')
const path = require('path')

const dockerfilePath = path.join(__dirname, '../out/dockerfile');
const dockerfilePath = path.join(__dirname, '../out/dockerfile')
fs.readJson('./examples/config-example.json')
.then(example => dockerfileGenerator(example, dockerfilePath))
.then(data => console.log(data))
.catch(err => console.log(err));
.catch(err => console.log(err))

module.exports = dockerfileGenerator;
module.exports = dockerfileGenerator
14 changes: 7 additions & 7 deletions lib/schema-validation-error.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
class SchemaValidationError extends Error {
constructor(message, evalutionDetails) {
super(message);
this.message = message;
this.validationDetails = evalutionDetails;
this.name = 'SchemaValidation';
}
constructor (message, evalutionDetails) {
super(message)
this.message = message
this.validationDetails = evalutionDetails
this.name = 'SchemaValidation'
}
}

module.exports = SchemaValidationError;
module.exports = SchemaValidationError
20 changes: 10 additions & 10 deletions lib/schema-validator.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
const Ajv = require('ajv');
const Ajv = require('ajv')

async function schemaValidator(schema, data) {
const ajv = new Ajv();
const valid = ajv.validate(schema, data);
if (!valid) {
return { valid: false, errors: ajv.errors};
} else {
return { valid: true };
}
async function schemaValidator (schema, data) {
const ajv = new Ajv()
const valid = ajv.validate(schema, data)
if (!valid) {
return { valid: false, errors: ajv.errors }
} else {
return { valid: true }
}
}

module.exports = schemaValidator;
module.exports = schemaValidator
11 changes: 8 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,21 @@
"scripts": {
"debug": "node ./lib/index.js",
"test": "jest",
"coveralls": "jest --coverage --coverageReporters=text-lcov | coveralls"
"coveralls": "jest --coverage --coverageReporters=text-lcov | coveralls",
"lint": "standard"
},
"files": ["lib/", "schemas/"],
"files": [
"lib/",
"schemas/"
],
"dependencies": {
"ajv": "^6.5.5",
"fs-extra": "^7.0.1",
"lodash": "^4.17.11"
},
"devDependencies": {
"coveralls": "^3.0.2",
"jest": "^23.6.0"
"jest": "^23.6.0",
"standard": "^12.0.1"
}
}
Loading

0 comments on commit 53f1883

Please sign in to comment.