Skip to content

Commit

Permalink
fix(core): add stub for conformance:check, add messaging (#28250)
Browse files Browse the repository at this point in the history
(cherry picked from commit fe01c61)
  • Loading branch information
JamesHenry authored and FrozenPandaz committed Oct 3, 2024
1 parent e138ebc commit cc5e940
Showing 1 changed file with 36 additions and 10 deletions.
46 changes: 36 additions & 10 deletions packages/nx/src/command-line/nx-commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import {
yargsAffectedGraphCommand,
} from './deprecated/command-objects';
import { yargsSyncCheckCommand, yargsSyncCommand } from './sync/command-object';
import { output } from '../utils/output';

// Ensure that the output takes up the available width of the terminal.
yargs.wrap(yargs.terminalWidth());
Expand Down Expand Up @@ -101,26 +102,51 @@ export const commandsObject = yargs
.command(yargsLoginCommand)
.command(yargsLogoutCommand)
.command(resolveConformanceCommandObject())
.command(resolveConformanceCheckCommandObject())
.scriptName('nx')
.help()
// NOTE: we handle --version in nx.ts, this just tells yargs that the option exists
// so that it shows up in help. The default yargs implementation of --version is not
// hit, as the implementation in nx.ts is hit first and calls process.exit(0).
.version();

function createMissingConformanceCommand(
command: 'conformance' | 'conformance:check'
) {
return {
command,
// Hide from --help output in the common case of not having the plugin installed
describe: false,
handler: () => {
output.error({
title: `${command} is not available`,
bodyLines: [
`In order to use the \`nx ${command}\` command you must have an active Powerpack license and the \`@nx/powerpack-conformance\` plugin installed.`,
'',
'To learn more, visit https://nx.dev/features/powerpack/conformance',
],
});
process.exit(1);
},
};
}

function resolveConformanceCommandObject() {
try {
const { yargsConformanceCommand } = require('@nx/powerpack-conformance');
return yargsConformanceCommand;
} catch (e) {
return {
command: 'conformance',
// Hide from --help output in the common case of not having the plugin installed
describe: false,
handler: () => {
// TODO: Add messaging to help with learning more about powerpack and conformance
process.exit(1);
},
};
} catch {
return createMissingConformanceCommand('conformance');
}
}

function resolveConformanceCheckCommandObject() {
try {
const {
yargsConformanceCheckCommand,
} = require('@nx/powerpack-conformance');
return yargsConformanceCheckCommand;
} catch {
return createMissingConformanceCommand('conformance:check');
}
}

0 comments on commit cc5e940

Please sign in to comment.