mirror of
				https://github.com/SikongJueluo/cc-utils.git
				synced 2025-11-04 19:27:50 +08:00 
			
		
		
		
	fix: cli framework
fix: - cli command path wrong - help output nil
This commit is contained in:
		@@ -22,7 +22,9 @@ import { generateHelp, shouldShowHelp, generateCommandList } from "./help";
 | 
			
		||||
export interface CreateCliOptions<TContext extends object> {
 | 
			
		||||
  /** An optional global context object to be made available in all command actions. */
 | 
			
		||||
  globalContext?: TContext;
 | 
			
		||||
  /** An optional function to handle output. Defaults to the global `print` function. */
 | 
			
		||||
  /** An optional function to handle output.
 | 
			
		||||
   *  Default: textutils.pagedPrint(msg, term.getCursorPos()[1] - 2)
 | 
			
		||||
   **/
 | 
			
		||||
  writer?: (message: string) => void;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -36,12 +38,15 @@ export function createCli<TContext extends object>(
 | 
			
		||||
  rootCommand: Command<TContext>,
 | 
			
		||||
  options: CreateCliOptions<TContext> = {},
 | 
			
		||||
): (argv: string[]) => void {
 | 
			
		||||
  const { globalContext, writer = print } = options;
 | 
			
		||||
  const {
 | 
			
		||||
    globalContext,
 | 
			
		||||
    writer = (msg) => textutils.pagedPrint(msg, term.getCursorPos()[1] - 2),
 | 
			
		||||
  } = options;
 | 
			
		||||
 | 
			
		||||
  return (argv: string[]): void => {
 | 
			
		||||
    // Check for top-level help flags before any parsing.
 | 
			
		||||
    if (argv[0]?.startsWith("--help") || argv[0]?.startsWith("-h")) {
 | 
			
		||||
      writer(generateHelp(rootCommand));
 | 
			
		||||
      writer(generateHelp(rootCommand, [rootCommand.name]));
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ export function generateHelp<TContext extends object>(
 | 
			
		||||
  commandPath: string[] = [],
 | 
			
		||||
): string {
 | 
			
		||||
  const lines: string[] = [];
 | 
			
		||||
  const fullCommandName = [...commandPath, command.name].join(" ");
 | 
			
		||||
  const fullCommandName = commandPath.join(" ");
 | 
			
		||||
 | 
			
		||||
  // Description
 | 
			
		||||
  if (command.description !== undefined) {
 | 
			
		||||
 
 | 
			
		||||
@@ -81,7 +81,7 @@ export function parseArguments<TContext extends object>(
 | 
			
		||||
): Result<ParseResult<TContext>, CliError> {
 | 
			
		||||
  const result: ParseResult<TContext> = {
 | 
			
		||||
    command: rootCommand,
 | 
			
		||||
    commandPath: [],
 | 
			
		||||
    commandPath: [rootCommand.name],
 | 
			
		||||
    options: {},
 | 
			
		||||
    remaining: [],
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user