Files
tauri/tooling/api/src/cli.ts
renovate[bot] 488a7562bb chore(deps) Update dependency eslint-config-standard-with-typescript to v24 (#5832)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2022-12-27 13:15:58 -03:00

78 lines
1.8 KiB
TypeScript

// Copyright 2019-2022 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 [`build.withGlobalTauri`](https://tauri.app/v1/api/config/#buildconfig.withglobaltauri) in `tauri.conf.json` is set to `true`.
* @module
*/
import { invokeTauriCommand } from './helpers/tauri'
/**
* @since 1.0.0
*/
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
}
/**
* @since 1.0.0
*/
interface SubcommandMatch {
name: string
matches: CliMatches
}
/**
* @since 1.0.0
*/
interface CliMatches {
args: Record<string, ArgMatch>
subcommand: SubcommandMatch | null
}
/**
* Parse the arguments provided to the current process and get the matches using the configuration defined [`tauri.cli`](https://tauri.app/v1/api/config/#tauriconfig.cli) in `tauri.conf.json`
* @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
* }
* ```
*
* @since 1.0.0
*/
async function getMatches(): Promise<CliMatches> {
return invokeTauriCommand<CliMatches>({
__tauriModule: 'Cli',
message: {
cmd: 'cliMatches'
}
})
}
export type { ArgMatch, SubcommandMatch, CliMatches }
export { getMatches }