目录
目录README.md

CliRunnable

Build Status [Swift Version][2]

Create and parse command line options for your cli application. Help documentation is auto created for you.

CliOption

Implement the CliRunnable protocol and provide some CLIOptions.

CliOption(keys:["-o", "--option"], description:"Some Option", requiresValue:false)

This gives your command line application the ability to add some options when you execute your application.

app -o or app --option

CliOption: requiresValue

You can set the requiresValue property to true or false to specify if the option requires a value or not

app -o some-value or app -o

CliOption: action

Set the action to be performed when the option is triggered

public var action: ((CliOption) throws -> Void)?

CliOption as a Command

You can add sub options in the requiredArguments and optionalArguments arrays to create a command and additional options for the command

var command = CliOption(keys:["custom-command"], description:"Custom Command", requiresValue:false)
let option = CliOption(keys:["-o", "--option"], description:"Some Option", requiresValue:false)
command.add(argument: option, required: false)

app custom-command --option

CliOption: optionalArguments, requiredArguments

A command can either have optionalArguments or requiredArguments

let secondaryOption = CliOption(keys:["-a", "--alternate-option"], description:"Alternate Option", requiresValue:true)
command.add(argument: option, required: true)

app custom-command --alternate-option my-required-value

Printing Help

Help commands are automatically created from the CliOptions and CliOptionGroups

Main Application Help

app help or app --help or app -h or no options at all app

App Description
app COMMAND [OPTIONS]

Custom Commands:
custom-command    Do something custom
Command Specific Help

app custom-command help

app custom-command [OPTIONS]

Custom Command
-o, --option              Some Option
-a, --alternate-option    Alternate Option

CliOptionGroup

if you want to group related commands together for the printed help, use the CliOptionGroup

var psCommand = CliOption(keys:["ps"], description:"Process Status", requiresValue:false)
var lsCommand = CliOption(keys:["ls"], description:"List Directory Contents", requiresValue:false)
CliOptionGroup(description:"BSD General Commands:", options: [psCommand, lsCommand])

var sshCommand = CliOption(keys:["ssh"], description:"OpenSSH SSH client (remote login program)")
var scpCommand = CliOption(keys:["sap"], description:"Secure copy (remote file copy program)")
CliOptionGroup(description:"SSH Commands:", options: [sshCommand, scpCommand])

app --help

App Description
app COMMAND [OPTIONS]

BSD General Commands:
ps    Process Status
ls    List Directory Contents


SSH Commands:
ssh    OpenSSH SSH client (remote login program)
scp    Secure copy (remote file copy program)

Example CliRunnable struct

struct App : CliRunnable {
    var description: String? = "App Description\n"
    let appUsage = "app COMMAND [OPTIONS]\n"
    let customCommandUsage = "app custom-command [OPTIONS]\n"
        
    //prepare your commands and options
    var command = CliOption(keys:["custom-command"], description:"Do something custom", requiresValue:false)
    let option = CliOption(keys:["-o", "--option"], description:"Some Option", requiresValue:false)
    let secondaryOption = CliOption(keys:["-a", "--alternate-option"], description:"Alternate Option", requiresValue:true)
    var group = CliOptionGroup(description:"Commands Group:")
    
    public init(){
        //add your options and to groups
        command.add(argument: option)
        command.add(argument: secondaryOption, required: true)
        group.options.append(command)
        cliOptionGroups = [group]
    }
    
    public var cliOptionGroups: [CliOptionGroup]
    public func usage(option: CliOption?) -> String? {
        return option != nil ? customCommandUsage : appUsage
    }
        
}

[2]: //dnrops/CliRunnable/tree/master/ https:/swift.org”Swift”

关于
105.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号