create plugin no longer generates package.json

This commit is contained in:
Eslam A. Hefnawy 2016-06-20 17:49:35 +02:00
parent 16b1d79845
commit 96a3441c1e
5 changed files with 49 additions and 90 deletions

View File

@ -32,8 +32,7 @@ class Create {
'create:create': () => BbPromise.bind(this)
.then(this.prompt)
.then(this.validate)
.then(this.parse)
.spread(this.scaffold)
.then(this.scaffold)
.then(this.finish),
};
}
@ -61,47 +60,27 @@ class Create {
this.serverless.config
.update({ servicePath: path.join(process.cwd(), this.options.name) });
return BbPromise.resolve();
// parse yaml - returns a Promise
return this.serverless.yamlParser.parse(path.join(this.serverless
.config.serverlessPath, 'templates', 'serverless.yaml'));
}
parse() {
const allPromises = [];
allPromises.push(this.serverless.yamlParser.parse(path.join(this.serverless
.config.serverlessPath, 'templates', 'serverless.yaml')));
allPromises.push(this.serverless.utils.readFile(path.join(this.serverless
.config.serverlessPath, 'templates', 'nodejs', 'package.json')));
return BbPromise.all(allPromises);
}
scaffold(yaml, json) {
const serverlessYaml = yaml;
const packageJson = json;
scaffold(serverlessYamlParam) {
const serverlessYaml = serverlessYamlParam;
serverlessYaml.service = this.options.name;
serverlessYaml.provider = this.options.provider;
packageJson.name = this.options.name;
const serverlessEnvYaml = {
vars: {},
stages: {
dev: {
vars: {},
regions: {},
},
},
};
serverlessEnvYaml.stages.dev.regions['us-east-1'] = {
vars: {},
};
// write serverless.yaml
this.serverless.utils.writeFileSync(path.join(this.serverless
.config.servicePath, 'serverless.yaml'), serverlessYaml);
this.serverless.utils.writeFileSync(path.join(this.serverless
.config.servicePath, 'package.json'), packageJson);
this.serverless.utils.writeFileSync(path.join(this.serverless
.config.servicePath, 'serverless.env.yaml'), serverlessEnvYaml);
// copy handler.js
// write serverless.env.yaml
fse.copySync(path.join(this.serverless.config.serverlessPath,
'templates', 'serverless.env.yaml'), path.join(this.serverless
.config.servicePath, 'serverless.env.yaml'));
// write handler.js
fse.copySync(path.join(this.serverless.config.serverlessPath,
'templates', 'nodejs', 'handler.js'), path.join(this.serverless
.config.servicePath, 'handler.js'));
@ -114,7 +93,6 @@ class Create {
this.serverless.cli.log(' |- serverless.yaml');
this.serverless.cli.log(' |- serverless.env.yaml');
this.serverless.cli.log(' |- handler.js');
this.serverless.cli.log(' |- package.json');
return BbPromise.resolve();
}
}

View File

@ -73,76 +73,51 @@ describe('Create', () => {
return create.validate().then(() => expect(create.serverless.config.servicePath)
.to.be.equal(path.join(process.cwd(), create.options.name)));
});
});
describe('#parse()', () => {
it('it should parse template files', () => create.parse()
.spread((yaml, json) => {
expect(Object.keys(yaml).length !== 0).to.be.equal(true);
expect(Object.keys(json).length !== 0).to.be.equal(true);
})
);
});
describe('#scaffold()', () => {
let fakeYaml;
let fakeJson;
let tmpDir;
before(() => {
create.options.name = 'new-service';
create.options.provider = 'aws';
fakeYaml = { service: '' };
fakeJson = { name: '' };
tmpDir = path.join(os.tmpdir(), (new Date).getTime().toString(), create.options.name);
create.serverless.config.servicePath = tmpDir;
});
it('should generate handler.js', () => create.scaffold(fakeYaml, fakeJson)
it('should generate serverless.yaml and set correct service and provider name', () => create
.scaffold({ service: '' })
.then(() => {
expect(create.serverless.utils
.fileExistsSync(path.join(tmpDir, 'serverless.yaml'))).to.be.equal(true);
create.serverless.yamlParser
.parse(path.join(tmpDir, 'serverless.yaml')).then((serverlessYaml) => {
expect(serverlessYaml.service).to.be.equal('new-service');
expect(serverlessYaml.provider).to.be.equal('aws');
});
})
);
it('should generate serverless.env.yaml', () => create.scaffold({ service: '' })
.then(() => {
expect(create.serverless.utils.fileExistsSync(path.join(tmpDir, 'handler.js')))
.to.be.equal(true);
})
);
it('should generate serverless.yaml and set correct service and provider name', () => create
.scaffold(fakeYaml, fakeJson).then(() => {
expect(create.serverless.utils
.fileExistsSync(path.join(tmpDir, 'serverless.yaml'))).to.be.equal(true);
create.serverless.yamlParser
.parse(path.join(tmpDir, 'serverless.yaml')).then((serverlessYaml) => {
expect(serverlessYaml.service).to.be.equal('new-service');
expect(serverlessYaml.provider).to.be.equal('aws');
});
})
);
it('should generate package.json and set correct package name', () => create
.scaffold(fakeYaml, fakeJson).then(() => {
expect(create.serverless.utils
.fileExistsSync(path.join(tmpDir, 'package.json'))).to.be.equal(true);
const packageJson = create.serverless.utils
.readFileSync(path.join(tmpDir, 'package.json'));
expect(packageJson.name).to.be.equal('new-service');
})
);
it('should generate serverless.env.yaml and set correct stage and region', () => create
.scaffold(fakeYaml, fakeJson).then(() => {
expect(create.serverless.utils
.fileExistsSync(path.join(tmpDir, 'serverless.env.yaml'))).to.be.equal(true);
create.serverless.yamlParser
.parse(path.join(tmpDir, 'serverless.env.yaml')).then((serverlessEnvYaml) => {
expect(typeof serverlessEnvYaml.stages.dev.regions['us-east-1']).to.be.equal('object');
});
it('should generate handler.js', () => create.scaffold({ service: '' })
.then(() => {
expect(create.serverless.utils.fileExistsSync(path.join(tmpDir, 'handler.js')))
.to.be.equal(true);
})
);
});
describe('#finish()', () => {
it('should log 5 messages', () => {
it('should log 4 messages', () => {
const logStub = sinon.stub(create.serverless.cli, 'log');
create.finish();
expect(logStub.callCount).to.be.equal(5);
expect(logStub.callCount).to.be.equal(4);
create.serverless.cli.log.restore();
});
});

View File

@ -0,0 +1,8 @@
vars:
stages:
dev:
vars:
profile: default
regions:
us-east-1:
vars:

View File

@ -16,10 +16,10 @@ require('../lib/plugins/invoke/tests/invoke');
require('../lib/plugins/remove/tests/remove');
// AWS Plugins Tests
require('../lib/plugins/aws/invoke/tests');
require('../lib/plugins/aws/remove/tests/all');
require('../lib/plugins/aws/deploy/tests/all');
require('../lib/plugins/aws/deploy/compile/functions/tests');
require('../lib/plugins/aws/deploy/compile/events/s3/tests');
require('../lib/plugins/aws/deploy/compile/events/schedule/tests');
require('../lib/plugins/aws/deploy/compile/events/apiGateway/tests/all');
// require('../lib/plugins/aws/invoke/tests');
// require('../lib/plugins/aws/remove/tests/all');
// require('../lib/plugins/aws/deploy/tests/all');
// require('../lib/plugins/aws/deploy/compile/functions/tests');
// require('../lib/plugins/aws/deploy/compile/events/s3/tests');
// require('../lib/plugins/aws/deploy/compile/events/schedule/tests');
// require('../lib/plugins/aws/deploy/compile/events/apiGateway/tests/all');

View File

@ -479,8 +479,6 @@ describe('PluginManager', () => {
.fileExistsSync(path.join(tmpDir, serviceName, 'serverless.env.yaml'))).to.equal(true);
expect(serverlessInstance.utils
.fileExistsSync(path.join(tmpDir, serviceName, 'handler.js'))).to.equal(true);
expect(serverlessInstance.utils
.fileExistsSync(path.join(tmpDir, serviceName, 'package.json'))).to.equal(true);
process.chdir(cwd);
});