napi-rs/cli/src/def/new.ts

169 lines
4.2 KiB
TypeScript

// This file is generated by codegen/index.ts
// Do not edit this file manually
import { Command, Option } from 'clipanion'
import * as typanion from 'typanion'
export abstract class BaseNewCommand extends Command {
static paths = [['new']]
static usage = Command.Usage({
description: 'Create a new project with pre-configured boilerplate',
})
$$path = Option.String({ required: false })
$$name?: string = Option.String('--name,-n', {
description:
'The name of the project, default to the name of the directory if not provided',
})
minNodeApiVersion = Option.String('--min-node-api,-v', '4', {
validator: typanion.isNumber(),
description: 'The minimum Node-API version to support',
})
packageManager = Option.String('--package-manager', 'yarn', {
description: 'The package manager to use. Only support yarn 4.x for now.',
})
license = Option.String('--license,-l', 'MIT', {
description: 'License for open-sourced project',
})
targets = Option.Array('--targets,-t', [], {
description: 'All targets the crate will be compiled for.',
})
enableDefaultTargets = Option.Boolean('--enable-default-targets', true, {
description: 'Whether enable default targets',
})
enableAllTargets = Option.Boolean('--enable-all-targets', false, {
description: 'Whether enable all targets',
})
enableTypeDef = Option.Boolean('--enable-type-def', true, {
description:
'Whether enable the `type-def` feature for typescript definitions auto-generation',
})
enableGithubActions = Option.Boolean('--enable-github-actions', true, {
description: 'Whether generate preconfigured GitHub Actions workflow',
})
testFramework = Option.String('--test-framework', 'ava', {
description:
'The JavaScript test framework to use, only support `ava` for now',
})
dryRun = Option.Boolean('--dry-run', false, {
description: 'Whether to run the command in dry-run mode',
})
getOptions() {
return {
path: this.$$path,
name: this.$$name,
minNodeApiVersion: this.minNodeApiVersion,
packageManager: this.packageManager,
license: this.license,
targets: this.targets,
enableDefaultTargets: this.enableDefaultTargets,
enableAllTargets: this.enableAllTargets,
enableTypeDef: this.enableTypeDef,
enableGithubActions: this.enableGithubActions,
testFramework: this.testFramework,
dryRun: this.dryRun,
}
}
}
/**
* Create a new project with pre-configured boilerplate
*/
export interface NewOptions {
/**
* The path where the NAPI-RS project will be created.
*/
path?: string
/**
* The name of the project, default to the name of the directory if not provided
*/
name?: string
/**
* The minimum Node-API version to support
*
* @default 4
*/
minNodeApiVersion?: number
/**
* The package manager to use. Only support yarn 4.x for now.
*
* @default 'yarn'
*/
packageManager?: string
/**
* License for open-sourced project
*
* @default 'MIT'
*/
license?: string
/**
* All targets the crate will be compiled for.
*
* @default []
*/
targets?: string[]
/**
* Whether enable default targets
*
* @default true
*/
enableDefaultTargets?: boolean
/**
* Whether enable all targets
*
* @default false
*/
enableAllTargets?: boolean
/**
* Whether enable the `type-def` feature for typescript definitions auto-generation
*
* @default true
*/
enableTypeDef?: boolean
/**
* Whether generate preconfigured GitHub Actions workflow
*
* @default true
*/
enableGithubActions?: boolean
/**
* The JavaScript test framework to use, only support `ava` for now
*
* @default 'ava'
*/
testFramework?: string
/**
* Whether to run the command in dry-run mode
*
* @default false
*/
dryRun?: boolean
}
export function applyDefaultNewOptions(options: NewOptions) {
return {
minNodeApiVersion: 4,
packageManager: 'yarn',
license: 'MIT',
targets: [],
enableDefaultTargets: true,
enableAllTargets: false,
enableTypeDef: true,
enableGithubActions: true,
testFramework: 'ava',
dryRun: false,
...options,
}
}