function _detailedUsage()

in packages/hub/cli.ts [525:561]


function _detailedUsage(args: readonly ArgDef[], usageLine: string, commandDescription?: string): string {
	let ret = `usage: hfjs ${usageLine}\n`;
	if (commandDescription) {
		ret += `\n${commandDescription}\n`;
	}

	const positionals = args.filter((p) => p.positional);
	const options = args.filter((p) => !p.positional);

	if (positionals.length > 0) {
		ret += `\nPositional arguments:\n`;
		for (const arg of positionals) {
			ret += `  ${arg.name}\t${arg.description}${
				arg.default ? ` (default: ${typeof arg.default === "function" ? arg.default() : arg.default})` : ""
			}\n`;
		}
	}

	if (options.length > 0) {
		ret += `\nOptions:\n`;
		for (const arg of options) {
			const nameAndAlias = `--${arg.name}${arg.short ? `, -${arg.short}` : ""}`;
			const valueHint = arg.enum
				? `{${arg.enum.join("|")}}`
				: arg.boolean
				  ? ""
				  : `<${arg.name.toUpperCase().replace(/-/g, "_")}>`;
			ret += `  ${nameAndAlias}${valueHint ? " " + valueHint : ""}\t${arg.description}${
				arg.default !== undefined
					? ` (default: ${typeof arg.default === "function" ? arg.default() : arg.default})`
					: ""
			}\n`;
		}
	}
	ret += `\n`;
	return ret;
}