The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

---
name: myapp
plugins: [Format]
appspec: { "version": 0.001 }
class: App::Spec::Example::MyApp
title: My Very Cool App
abstract: This app can do very cool things
description: |
This is a very useful description for myapp.
This is a very useful description for myapp.
This is a very useful description for myapp.
This is a very useful description for myapp.
options:
-
name: verbose
summary: be verbose
type: flag
multiple: true
aliases: ["v"]
subcommands:
cook:
summary: Cook something
op: cook
parameters:
-
name: drink
summary: What to drink
required: true
type: string
enum: ["tea", "coffee"]
options:
-
name: with
summary: Drink with ...
type: string
enum: ["almond milk", "soy milk", "oat milk", "spelt milk", "cow milk"]
-
name: sugar
type: flag
aliases: ["s"]
summary: add sugar
weather:
summary: Weather
subcommands:
show:
summary: Show Weather forecast
op: weather
options:
- name: temperature
summary: show temperature
aliases: [T]
type: flag
- name: celsius
summary: show temperature in celsius
aliases: [C]
type: flag
- name: fahrenheit
summary: show temperature in fahrenheit
aliases: [F]
type: flag
parameters:
- name: country
required: true
summary: Specify country
values:
op: weather_complete
completion:
op: weather_complete
- name: city
required: true
multiple: true
summary: Specify city or cities
values:
op: weather_complete
completion:
op: weather_complete
countries:
summary: show list of countries
op: countries
cities:
summary: show list of cities
op: cities
options:
- name: country
aliases: ["c"]
multiple: true
summary: country name(s)
completion:
command:
- replace: SELF
- weather
- countries
palindrome:
summary: Check if a string is a palindrome
op: palindrome
parameters:
- name: string
required: true
completion:
command_string: |
cat /usr/share/dict/words | perl -nle'print if $_ eq reverse $_'
convert:
summary: Various unit conversions
op: convert
parameters:
- name: type
summary: The type of unit to convert
type: string
required: true
values:
op: convert_complete
completion: true
- name: source
summary: The source unit to convert from
type: string
required: true
values:
op: convert_complete
completion: true
- name: value
summary: The value to convert
required: true
type: integer
- name: target
summary: The target unit
type: string
required: true
multiple: true
unique: true
values:
op: convert_complete
completion: true
config:
summary: configuration
op: config
options:
- name: set
summary: key=value pair(s)
multiple: true
mapping: true
values:
mapping:
color: [auto, never, always]
push.default: [current, matching, nothing, simple, upstream]
name: null
email: null
data:
summary: output some data
op: data
options:
- name: item
type: string
enum: [hash, table]
default: hash
# vim:et:sts=2:sws=2:sw=2:foldmethod=indent