cli: fix build issue and tweak info output format

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2021-09-28 22:48:30 +02:00
parent 07161730cc
commit 951112c45c
3 changed files with 13 additions and 36 deletions
+1 -1
View File
@@ -227,7 +227,7 @@ export function registerCommands(program: CommanderStatic) {
program
.command('info')
.description('Debug info of all dependencies.')
.description('Show helpful information for debugging and reporting bugs')
.action(lazy(() => import('./info').then(m => m.default)));
}
+11 -34
View File
@@ -19,51 +19,28 @@ import os from 'os';
import { runPlain } from '../lib/run';
import { paths } from '../lib/paths';
import { Lockfile } from '../lib/versioning';
import path from 'path';
export default async () => {
await new Promise(async () => {
const yarnVersion = await runPlain('yarn --version');
const npmVersion = await runPlain('npm --version');
console.log(
`Operating System - ${os.type}(${os.release}) - ${os.platform}/${os.arch}`,
);
console.log('\n------------------\n');
console.log('Node.js environment:\n');
console.log(`Node.js - ${process.version}`);
console.log(`@backstage/cli- ${cliVersion}`);
console.log('\n------------------\n');
console.log('Global environment:\n');
console.log(`yarn - ${yarnVersion}`);
console.log(`npm - ${npmVersion}`);
console.log('\n------------------\n');
console.log('Backstage CLI type :\n');
// eslint-disable-next-line no-restricted-syntax
const isLocal = require('fs').existsSync(paths.resolveOwn('./src'));
console.log(
isLocal
? 'CLI is running in backstage repo'
: 'CLI is running as a dependency',
);
console.log('\n------------------\n');
console.log('Backstage deps:\n');
console.log(`OS: ${os.type} ${os.release} - ${os.platform}/${os.arch}`);
console.log(`node: ${process.version}`);
console.log(`yarn: ${yarnVersion}`);
console.log(`cli: ${cliVersion} (${isLocal ? 'local' : 'installed'})`);
console.log();
console.log('Dependencies:');
const lockfilePath = paths.resolveTargetRoot('yarn.lock');
const lockfile = await Lockfile.load(lockfilePath);
const deps = lockfile.keys();
const deps = [...lockfile.keys()].filter(n => n.startsWith('@backstage/'));
const maxLength = Math.max(...deps.map(d => d.length));
for (const dep of deps) {
if (dep.indexOf('@backstage/') !== -1) {
console.log(dep, lockfile.get(dep)![0].version);
}
const versions = new Set(lockfile.get(dep)!.map(i => i.version));
console.log(` ${dep.padEnd(maxLength)} ${[...versions].join(', ')}`);
}
});
};