Files
tauri/tooling/api/src/cli.ts
2022-06-12 21:44:33 -03:00

69 lines
1.7 KiB
TypeScript

// Copyright 2019-2021 Tauri Programme within The Commons Conservancy
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
/**
* Parse arguments from your Command Line Interface.
*
* This package is also accessible with `window.__TAURI__.cli` when `tauri.conf.json > build > withGlobalTauri` is set to true.
* @module
*/
import { invokeTauriCommand } from './helpers/tauri'
interface ArgMatch {
/**
* string if takes value
* boolean if flag
* string[] or null if takes multiple values
*/
value: string | boolean | string[] | null
/**
* Number of occurrences
*/
occurrences: number
}
interface SubcommandMatch {
name: string
matches: CliMatches
}
interface CliMatches {
args: { [name: string]: ArgMatch }
subcommand: SubcommandMatch | null
}
/**
* Parse the arguments provided to the current process and get the matches using the configuration defined `tauri.conf.json > tauri > cli`.
* @example
* ```typescript
* import { getMatches } from '@tauri-apps/api/cli';
* const matches = await getMatches();
* if (matches.subcommand?.name === 'run') {
* // `./your-app run $ARGS` was executed
* const args = matches.subcommand?.matches.args
* if ('debug' in args) {
* // `./your-app run --debug` was executed
* }
* } else {
* const args = matches.args
* // `./your-app $ARGS` was executed
* }
* ```
*
* @returns A promise resolving to the parsed arguments.
*/
async function getMatches(): Promise<CliMatches> {
return invokeTauriCommand<CliMatches>({
__tauriModule: 'Cli',
message: {
cmd: 'cliMatches'
}
})
}
export type { ArgMatch, SubcommandMatch, CliMatches }
export { getMatches }