mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
Merge pull request #1910 from mrlamroger/add-name-flag-to-create
Fix #1902 - Add --name option to create plugin
This commit is contained in:
commit
e10ff9ee23
@ -36,6 +36,10 @@ class Create {
|
||||
usage: 'The path where the service should be created (e.g. --path my-service)',
|
||||
shortcut: 'p',
|
||||
},
|
||||
name: {
|
||||
usage: 'Name for the service. Overwrites the default name of the created service.',
|
||||
shortcut: 'n',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
@ -57,8 +61,9 @@ class Create {
|
||||
throw new this.serverless.classes.Error(errorMessage);
|
||||
}
|
||||
|
||||
// store the path option for the service if given
|
||||
// store the custom options for the service if given
|
||||
const servicePath = this.options.path && this.options.path.length ? this.options.path : null;
|
||||
const serviceName = this.options.name && this.options.name.length ? this.options.name : null;
|
||||
|
||||
// create (if not yet present) and chdir into the directory for the service
|
||||
if (servicePath) {
|
||||
@ -78,8 +83,8 @@ class Create {
|
||||
'plugins', 'create', 'templates', this.options.template), this.serverless.config.servicePath);
|
||||
|
||||
// rename the service if the user has provided a path via options
|
||||
if (servicePath) {
|
||||
const serviceName = servicePath.split(path.sep).pop();
|
||||
if (servicePath || serviceName) {
|
||||
const newServiceName = serviceName || servicePath.split(path.sep).pop();
|
||||
const serverlessYmlFilePath = path
|
||||
.join(this.serverless.config.servicePath, 'serverless.yml');
|
||||
|
||||
@ -87,7 +92,7 @@ class Create {
|
||||
.readFileSync(serverlessYmlFilePath).toString();
|
||||
|
||||
serverlessYmlFileContent = serverlessYmlFileContent
|
||||
.replace(/service: .+/, `service: ${serviceName}`);
|
||||
.replace(/service: .+/, `service: ${newServiceName}`);
|
||||
|
||||
fse.writeFileSync(serverlessYmlFilePath, serverlessYmlFileContent);
|
||||
}
|
||||
|
||||
@ -48,6 +48,23 @@ describe('Create', () => {
|
||||
expect(() => create.create()).to.throw(Error);
|
||||
});
|
||||
|
||||
it('should overwrite the name for the service if user passed name', () => {
|
||||
const cwd = process.cwd();
|
||||
fse.mkdirsSync(tmpDir);
|
||||
process.chdir(tmpDir);
|
||||
create.options.template = 'aws-nodejs';
|
||||
create.options.name = 'my_service';
|
||||
|
||||
return create.create().then(() =>
|
||||
create.serverless.yamlParser.parse(
|
||||
path.join(tmpDir, 'serverless.yml')
|
||||
).then((obj) => {
|
||||
expect(obj.service).to.equal('my_service');
|
||||
process.chdir(cwd);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('should set servicePath based on cwd', () => {
|
||||
const cwd = process.cwd();
|
||||
fse.mkdirsSync(tmpDir);
|
||||
@ -165,6 +182,7 @@ describe('Create', () => {
|
||||
process.chdir(tmpDir);
|
||||
|
||||
create.options.path = 'my-new-service';
|
||||
create.options.name = null;
|
||||
|
||||
// using the nodejs template (this test is completely be independent from the template)
|
||||
create.options.template = 'aws-nodejs';
|
||||
@ -187,5 +205,36 @@ describe('Create', () => {
|
||||
process.chdir(cwd);
|
||||
});
|
||||
});
|
||||
|
||||
it('should create a custom renamed service in the directory if using ' +
|
||||
'the "path" and "name" option', () => {
|
||||
const cwd = process.cwd();
|
||||
fse.mkdirsSync(tmpDir);
|
||||
process.chdir(tmpDir);
|
||||
|
||||
create.options.path = 'my-new-service';
|
||||
create.options.name = 'my-custom-new-service';
|
||||
|
||||
// using the nodejs template (this test is completely be independent from the template)
|
||||
create.options.template = 'aws-nodejs';
|
||||
|
||||
return create.create().then(() => {
|
||||
const serviceDir = path.join(tmpDir, create.options.path);
|
||||
|
||||
// check if files are created in the correct directory
|
||||
expect(create.serverless.utils.fileExistsSync(
|
||||
path.join(serviceDir, 'serverless.yml'))).to.be.equal(true);
|
||||
expect(create.serverless.utils.fileExistsSync(
|
||||
path.join(serviceDir, 'handler.js'))).to.be.equal(true);
|
||||
|
||||
// check if the service was renamed
|
||||
const serverlessYmlfileContent = fse
|
||||
.readFileSync(path.join(serviceDir, 'serverless.yml')).toString();
|
||||
|
||||
expect((/service: my-custom-new-service/).test(serverlessYmlfileContent)).to.equal(true);
|
||||
|
||||
process.chdir(cwd);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user