mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
89 lines
2.5 KiB
JavaScript
89 lines
2.5 KiB
JavaScript
'use strict';
|
|
|
|
const path = require('path');
|
|
const os = require('os');
|
|
const { createRequire } = require('module');
|
|
const { version } = require('../../package');
|
|
const spawn = require('child-process-ext/spawn');
|
|
const { version: dashboardPluginVersion } = require('@serverless/dashboard-plugin/package');
|
|
const { platformClientVersion } = require('@serverless/dashboard-plugin');
|
|
const isStandaloneExecutable = require('../utils/is-standalone-executable');
|
|
const localServerlessPath = require('./local-serverless-path');
|
|
const { writeText } = require('@serverless/utils/log');
|
|
|
|
const serverlessPath = path.resolve(__dirname, '../..');
|
|
|
|
const resolveTencentCliNpmLocalVersion = () => {
|
|
try {
|
|
return `${
|
|
createRequire(path.resolve(process.cwd(), 'require-resolver'))('serverless-tencent/package')
|
|
.version
|
|
} (npm local)`;
|
|
} catch {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
const resolveTencentCliNpmGlobalVersion = async () => {
|
|
const npmNodeModulesPath = await (async () => {
|
|
try {
|
|
return String((await spawn('npm', ['root', '-g'])).stdoutBuffer).trim();
|
|
} catch {
|
|
return null;
|
|
}
|
|
})();
|
|
|
|
if (!npmNodeModulesPath) return null;
|
|
try {
|
|
return `${require(`${npmNodeModulesPath}/serverless-tencent/package`).version} (npm global)`;
|
|
} catch {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
const resolveTencentCliStandaloneVersion = async () => {
|
|
try {
|
|
return `${String(
|
|
(
|
|
await spawn(
|
|
path.resolve(
|
|
os.homedir(),
|
|
`.serverless-tencent/bin/serverless-tencent${
|
|
process.platform === 'win32' ? '.exe' : ''
|
|
}`
|
|
),
|
|
['--version', '--plain']
|
|
)
|
|
).stdoutBuffer
|
|
).trim()} (binary)`;
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
module.exports = async () => {
|
|
const installationModePostfix = (() => {
|
|
if (isStandaloneExecutable) return ' (standalone)';
|
|
if (serverlessPath === localServerlessPath) return ' (local)';
|
|
return '';
|
|
})();
|
|
|
|
const globalInstallationPostfix = (() => {
|
|
if (EvalError.$serverlessInitInstallationVersion) {
|
|
return ` ${EvalError.$serverlessInitInstallationVersion} (global)`;
|
|
}
|
|
return '';
|
|
})();
|
|
|
|
const tencentCliVersion =
|
|
resolveTencentCliNpmLocalVersion() ||
|
|
(await resolveTencentCliNpmGlobalVersion()) ||
|
|
(await resolveTencentCliStandaloneVersion());
|
|
|
|
writeText(
|
|
`Framework Core: ${version}${installationModePostfix}${globalInstallationPostfix}`,
|
|
`Plugin: ${dashboardPluginVersion}`,
|
|
`SDK: ${platformClientVersion}\n${tencentCliVersion ? `Tencent CLI: ${tencentCliVersion}` : ''}`
|
|
);
|
|
};
|