Skip to content

Commit

Permalink
fix(CLI): Fix component template recognition in triage
Browse files Browse the repository at this point in the history
Top level configuration not containing `component` was considered unconditionally as `serverless`, that's not correct
  • Loading branch information
medikoo committed Nov 17, 2021
1 parent b8d3865 commit 4494f77
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 45 deletions.
92 changes: 47 additions & 45 deletions lib/cli/triage.js
Expand Up @@ -49,52 +49,54 @@ module.exports = async () => {

if (configurationExtension) {
// Found top level service configuration, recognize CLI by content

const resolveByObjectConfiguration = (configuration) => {
if (configuration.provider) return 'serverless';
if (configuration.component) return '@serverless/components';
for (const value of Object.values(configuration)) {
if (value.component) return '@serverless/cli';
}
return 'serverless';
};
switch (configurationExtension) {
case 'yml':
case 'yaml': {
const content = await fsp.readFile(`serverless.${configurationExtension}`, 'utf8');
if (content.search(/(?:^|\n)provider\s*:/) !== -1) return 'serverless';
if (content.search(/(?:^|\n)component\s*:/) !== -1) return '@serverless/components';
if (content.search(/\n\s+component\s*:/) !== -1) return '@serverless/cli';
return 'serverless';
}
case 'json': {
const configuration = (() => {
try {
return require(`${process.cwd()}/serverless.json`);
} catch {
return null;
}
})();
if (!configuration) return 'serverless';
return resolveByObjectConfiguration(configuration);
}
case 'js': {
const configuration = (() => {
try {
return require(`${process.cwd()}/serverless.js`);
} catch {
return null;
}
})();
if (!configuration) return 'serverless';
if (typeof configuration === 'function') return '@serverless/cli';
return resolveByObjectConfiguration(configuration);
const targetCliName = await (async () => {
const resolveByObjectConfiguration = (configuration) => {
if (configuration.provider) return 'serverless';
if (configuration.component) return '@serverless/components';
for (const value of Object.values(configuration)) {
if (value.component) return '@serverless/cli';
}
return null;
};
switch (configurationExtension) {
case 'yml':
case 'yaml': {
const content = await fsp.readFile(`serverless.${configurationExtension}`, 'utf8');
if (content.search(/(?:^|\n)provider\s*:/) !== -1) return 'serverless';
if (content.search(/(?:^|\n)component\s*:/) !== -1) return '@serverless/components';
if (content.search(/\n\s+component\s*:/) !== -1) return '@serverless/cli';
return null;
}
case 'json': {
const configuration = (() => {
try {
return require(`${process.cwd()}/serverless.json`);
} catch {
return null;
}
})();
if (!configuration) return 'serverless';
return resolveByObjectConfiguration(configuration);
}
case 'js': {
const configuration = (() => {
try {
return require(`${process.cwd()}/serverless.js`);
} catch {
return null;
}
})();
if (!configuration) return 'serverless';
if (typeof configuration === 'function') return '@serverless/cli';
return resolveByObjectConfiguration(configuration);
}
case 'ts':
return 'serverless';
default:
throw new Error(`Unrecognized extension "${configurationExtension}"`);
}
case 'ts':
return 'serverless';
default:
throw new Error(`Unrecognized extension "${configurationExtension}"`);
}
})();
if (targetCliName) return targetCliName;
}

// No top level service configuration
Expand Down
@@ -0,0 +1 @@
component: foo
@@ -0,0 +1 @@
app: foo

0 comments on commit 4494f77

Please sign in to comment.