コマンド引数

コマンド引数

引数は、コマンド名の後に記述される位置引数を指します。引数は位置に依存するため、正しい順序で渡す必要があります。

引数はクラスのプロパティとして定義し、argsデコレータを使用してデコレートする必要があります。引数はクラス内で定義された順序で受け入れられます。

次の例では、@args.stringデコレータを使用して、文字列値を受け入れる引数を定義しています。

import { BaseCommand, args, flags } from '@adonisjs/core/ace'
export default class GreetCommand extends BaseCommand {
static commandName = 'greet'
static description = 'ユーザーを名前で挨拶する'
@args.string()
declare name: string
run() {
console.log(this.name)
}
}

同じ引数名の下で複数の値を受け入れるには、@agrs.spreadデコレータを使用できます。ただし、スプレッド引数は最後に配置する必要があります。

import { BaseCommand, args, flags } from '@adonisjs/core/ace'
export default class GreetCommand extends BaseCommand {
static commandName = 'greet'
static description = 'ユーザーを名前で挨拶する'
@args.spread()
declare names: string[]
run() {
console.log(this.names)
}
}

引数名と説明

引数名はヘルプ画面に表示されます。デフォルトでは、引数名はクラスのプロパティ名のダッシュ区切り表記です。ただし、カスタムの値を定義することもできます。

@args.string({
argumentName: 'user-name'
})
declare name: string

引数の説明はヘルプ画面に表示され、descriptionオプションを使用して設定できます。

@args.string({
argumentName: 'user-name',
description: 'ユーザーの名前'
})
declare name: string

デフォルト値を持つオプション引数

デフォルトでは、すべての引数は必須です。ただし、requiredオプションをfalseに設定することでオプション引数にできます。オプション引数は最後に配置する必要があります。

@args.string({
description: 'ユーザーの名前',
required: false,
})
declare name?: string

オプション引数のデフォルト値は、defaultプロパティを使用して設定できます。

@args.string({
description: 'ユーザーの名前',
required: false,
default: 'guest'
})
declare name: string

引数値の処理

parseメソッドを使用すると、引数値をクラスのプロパティとして定義する前に処理できます。

@args.string({
argumentName: 'user-name',
description: 'ユーザーの名前',
parse (value) {
return value ? value.toUpperCase() : value
}
})
declare name: string

すべての引数へのアクセス

this.parsed.argsプロパティを使用して、コマンドを実行する際に指定されたすべての引数にアクセスできます。

import { BaseCommand, args, flags } from '@adonisjs/core/ace'
export default class GreetCommand extends BaseCommand {
static commandName = 'greet'
static description = 'ユーザーを名前で挨拶する'
@args.string()
declare name: string
run() {
console.log(this.parsed.args)
}
}