cli

package module
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 6, 2022 License: MIT Imports: 12 Imported by: 0

README

cli

Command Line Interface lib for starter

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bind added in v0.0.3

func Bind(cc context.Context) context.Context

Bind ...

func InitModule added in v0.0.7

InitModule 初始化一个 ModuleBuilder

Types

type Binding

type Binding interface {
	GetWD() string
	GetEnv() map[string]string
	GetConsole() Console
	GetCLI() CLI

	SetCLI(c CLI)
	SetWD(wd string)
	SetEnv(kv map[string]string)
	SetConsole(c Console)
}

Binding ...

func GetBinding

func GetBinding(cc context.Context) Binding

GetBinding ... get the facade of binding

type CLI added in v0.0.2

type CLI interface {

	// 取客户端
	GetClient() Client

	// 取服务端
	GetServer() Server

	// 把这个 CLI 绑定到指定的 Context
	Bind(cc context.Context) context.Context
}

CLI ... [inject:"#cli"]

func New added in v0.0.3

func New(cfg *Configuration) CLI

New 初始化 cli 模块

type Client

type Client interface {
	Handler

	// run a task with Context & Command & Arguments
	RunCCA(ctx context.Context, cmd string, args []string) error
}

Client 表示 CLI 客户端

type ClientFactory added in v0.0.2

type ClientFactory interface {
	NewClient(c *Context) (Client, error)
}

ClientFactory ...

type Configuration added in v0.0.2

type Configuration struct {
	Handlers       []HandlerRegistry
	Filters        []FilterRegistry
	ContextFactory ContextFactory
	ClientFactory  ClientFactory
	ServerFactory  ServerFactory
}

Configuration ...

type Console

type Console interface {
	Input() io.Reader

	Output() io.Writer

	Error() io.Writer

	In() *bufio.Reader

	Out() *bufio.Writer

	Err() *bufio.Writer
}

Console ... 表示命令的输入输出对象

type ConsoleBuilder

type ConsoleBuilder struct {
	Input  io.Reader
	Output io.Writer
	Error  io.Writer
}

ConsoleBuilder ...

func (*ConsoleBuilder) Create

func (inst *ConsoleBuilder) Create() Console

Create ...

type Context

type Context struct {
	Config   *Configuration
	Client   Client
	Server   Server
	CLI      CLI
	Chain    FilterChain
	Handlers []*HandlerRegistration
	Filters  []*FilterRegistration
}

Context ...

type ContextFactory added in v0.0.2

type ContextFactory interface {
	NewContext(cfg *Configuration) (*Context, error)
}

ContextFactory ...

type DefaultClientFactory added in v0.0.2

type DefaultClientFactory struct {
}

DefaultClientFactory ...

func (*DefaultClientFactory) NewClient added in v0.0.2

func (inst *DefaultClientFactory) NewClient(c *Context) (Client, error)

NewClient ...

type DefaultConsole

type DefaultConsole struct {
	// contains filtered or unexported fields
}

DefaultConsole ...

func (*DefaultConsole) Err

func (inst *DefaultConsole) Err() *bufio.Writer

Err ...

func (*DefaultConsole) Error

func (inst *DefaultConsole) Error() io.Writer

Error ...

func (*DefaultConsole) In

func (inst *DefaultConsole) In() *bufio.Reader

In ...

func (*DefaultConsole) Input

func (inst *DefaultConsole) Input() io.Reader

Input ...

func (*DefaultConsole) Out

func (inst *DefaultConsole) Out() *bufio.Writer

Out ...

func (*DefaultConsole) Output

func (inst *DefaultConsole) Output() io.Writer

Output ...

type DefaultContextFactory added in v0.0.2

type DefaultContextFactory struct {
}

DefaultContextFactory ...

func (*DefaultContextFactory) NewContext added in v0.0.2

func (inst *DefaultContextFactory) NewContext(cfg *Configuration) (*Context, error)

NewContext ...

type DefaultServerFactory added in v0.0.2

type DefaultServerFactory struct {
}

DefaultServerFactory ...

func (*DefaultServerFactory) NewServer added in v0.0.2

func (inst *DefaultServerFactory) NewServer(c *Context) (Server, error)

NewServer ...

type Filter

type Filter interface {
	Pass(task *Task, chain FilterChain) error
}

Filter ... 用来过滤请求的任务

type FilterChain

type FilterChain interface {
	Pass(task *Task) error
}

FilterChain ... 表示一连串 Filter 构成的链条

type FilterChainBuilder

type FilterChainBuilder struct {
	// contains filtered or unexported fields
}

FilterChainBuilder 用来创建 FilterChain

func (*FilterChainBuilder) AddFilter

func (inst *FilterChainBuilder) AddFilter(f Filter, order int)

AddFilter ...

func (*FilterChainBuilder) AddFilterRegistration

func (inst *FilterChainBuilder) AddFilterRegistration(fr *FilterRegistration)

AddFilterRegistration ...

func (*FilterChainBuilder) AddFilterRegistry

func (inst *FilterChainBuilder) AddFilterRegistry(fr FilterRegistry)

AddFilterRegistry ...

func (*FilterChainBuilder) Create

func (inst *FilterChainBuilder) Create() FilterChain

Create ...

type FilterRegistration

type FilterRegistration struct {
	Name   string
	Filter Filter
	Order  int
	OnInit OnInitFunc
}

FilterRegistration ... 定义一条命令的注册信息

type FilterRegistrationSorter

type FilterRegistrationSorter struct {
	// contains filtered or unexported fields
}

FilterRegistrationSorter ...

func (*FilterRegistrationSorter) Len

func (inst *FilterRegistrationSorter) Len() int

func (*FilterRegistrationSorter) Less

func (inst *FilterRegistrationSorter) Less(i1, i2 int) bool

func (*FilterRegistrationSorter) Sort

func (inst *FilterRegistrationSorter) Sort(list []*FilterRegistration, reverse bool)

Sort ...

func (*FilterRegistrationSorter) Swap

func (inst *FilterRegistrationSorter) Swap(i1, i2 int)

type FilterRegistry

type FilterRegistry interface {
	GetFilters() []*FilterRegistration
}

FilterRegistry ... 该接口表示一个命令注册对象 [inject:".cli-filter-registry"]

type Handler

type Handler interface {
	Run(task *Task) error
}

Handler 定义命令处理函数,但是接口

type HandlerFunc

type HandlerFunc func(task *Task) error

HandlerFunc 定义命令处理函数的签名

type HandlerRegistration

type HandlerRegistration struct {
	Name    string
	Handler HandlerFunc
	Help    Help
	OnInit  OnInitFunc
}

HandlerRegistration ... 定义一条命令的注册信息

type HandlerRegistry

type HandlerRegistry interface {
	GetHandlers() []*HandlerRegistration
}

HandlerRegistry ... 该接口表示一个命令注册对象 [inject:".cli-handler-registry"]

type Help

type Help interface {
	GetHelp() *HelpInfo
}

Help 接口提供帮助

type HelpInfo

type HelpInfo struct {
	Name    string // 命令名称
	Title   string // 命令标题
	Usage   string // 使用方法
	Content string // 具体内容
}

HelpInfo ... 提供一条命令的帮助信息

type OnInitFunc added in v0.0.2

type OnInitFunc func(c *Context) error

OnInitFunc 定义组件的初始化函数

type Server

type Server interface {
	FindHandler(name string) (*HandlerRegistration, error)

	RegisterHandler(hr *HandlerRegistration) error

	RegisterHandlers(hr HandlerRegistry) error

	ListNames() []string
}

Server 表示 CLI 服务器

type ServerFactory added in v0.0.2

type ServerFactory interface {
	NewServer(c *Context) (Server, error)
}

ServerFactory ...

type Task

type Task struct {
	Context   context.Context
	Server    Server
	Client    Client
	Command   string
	Arguments []string
	Console   Console
	WD        string
	Env       map[string]string
	Quietly   bool // 把异常输出到 Console.Error, 而不是抛出
}

Task 表示要执行的任务

Directories

Path Synopsis
lib
gen
src

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL