metacmd

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2021 License: MIT Imports: 17 Imported by: 3

Documentation

Overview

Package metacmd contains meta information and implentation for usql's backslash (\) commands.

Index

Constants

This section is empty.

Variables

SectionOrder is the order of sections to display via Listing.

Functions

func Listing

func Listing(w io.Writer)

Listing writes the formatted command listing to w, separated into different sections for all known commands.

Types

type Cmd

type Cmd struct {
	Section Section
	Name    string
	Desc    string
	Aliases map[string]string
	Process func(*Params) error
}

Cmd is a command implementation.

type ExecType

type ExecType int

ExecType represents the type of execution requested.

const (
	// ExecNone indicates no execution.
	ExecNone ExecType = iota
	// ExecOnly indicates plain execution only (\g).
	ExecOnly
	// ExecPipe indicates execution and piping results (\g |file)
	ExecPipe
	// ExecSet indicates execution and setting the resulting columns as
	// variables (\gset).
	ExecSet
	// ExecExec indicates execution and executing the resulting rows (\gexec).
	ExecExec
)

type Handler

type Handler interface {
	// IO handles the handler's IO.
	IO() rline.IO
	// User returns the current user.
	User() *user.User
	// URL returns the current database URL.
	URL() *dburl.URL
	// DB returns the current database connection.
	DB() drivers.DB
	// Last returns the last executed query.
	Last() string
	// LastRaw returns the last raw (non-interpolated) query.
	LastRaw() string
	// Buf returns the current query buffer.
	Buf() *stmt.Stmt
	// Reset resets the last and current query buffer.
	Reset([]rune)
	// Open opens a database connection.
	Open(...string) error
	// Close closes the current database connection.
	Close() error
	// ChangePassword changes the password for a user.
	ChangePassword(string) (string, error)
	// ReadVar reads a variable of a specified type.
	ReadVar(string, string) (string, error)
	// Include includes a file.
	Include(string, bool) error
	// Begin begins a transaction.
	Begin() error
	// Commit commits the current transaction.
	Commit() error
	// Rollback aborts the current transaction.
	Rollback() error
	// Highlight highlights the statement.
	Highlight(io.Writer, string) error
	// GetTiming mode.
	GetTiming() bool
	// SetTiming mode.
	SetTiming(bool)
}

Handler is the shared interface for a command handler.

type Metacmd

type Metacmd uint

Metacmd represents a command and associated meta information about it.

const (
	// None is an empty command.
	None Metacmd = iota
	// Question is question meta command (\?)
	Question
	// Quit is the quit meta command (\?).
	Quit
	// Copyright is the copyright meta command (\copyright).
	Copyright
	// Connect is the connect meta command (\c, \connect).
	Connect
	// Disconnect is the disconnect meta command (\Z).
	Disconnect
	// Password is the change password meta command (\password).
	Password
	// ConnectionInfo is the connection info meta command (\conninfo).
	ConnectionInfo
	// Drivers is the driver info meta command (\drivers).
	Drivers
	// Describe is the describe meta command (\d and variants).
	Describe
	// Exec is the execute meta command (\g and variants).
	Exec
	// Edit is the edit query buffer meta command (\e).
	Edit
	// Print is the print query buffer meta command (\p, \print, \raw).
	Print
	// Reset is the reset query buffer meta command (\r, \reset).
	Reset
	// Echo is the echo meta command (\echo).
	Echo
	// Write is the write meta command (\w).
	Write
	// ChangeDir is the system change directory meta command (\cd).
	ChangeDir
	// SetEnv is the system set environment variable meta command (\setenv).
	SetEnv
	// Shell is the system shell exec meta command (\!).
	Shell
	// Include is the system include file meta command (\i and variants).
	Include
	// Transact is the transaction meta command (\begin, \commit, \rollback).
	Transact
	// Prompt is the variable prompt meta command (\prompt).
	Prompt
	// SetVar is the set variable meta command (\set).
	SetVar
	// Unset is the variable unset meta command (\unset).
	Unset
	// SetFormatVar is the set format variable meta commands (\pset, \a, \C, \f, \H, \t, \T, \x).
	SetFormatVar
	// Timing is the timing meta command (\timing).
	Timing
)

Command types.

type Params added in v0.5.0

type Params struct {
	// Handler is the process handler.
	Handler Handler
	// Name is the name of the metacmd.
	Name string
	// Params are the passed parameters.
	Params *stmt.Params
	// Result is the resulting state of the command execution.
	Result Result
}

Params wraps metacmd parameters.

func (*Params) Get added in v0.7.1

func (p *Params) Get(exec bool) (string, error)

Get returns the next command parameter, using env.Unquote to decode quoted strings.

func (*Params) GetAll added in v0.7.1

func (p *Params) GetAll(exec bool) ([]string, error)

GetAll gets all remaining command parameters using env.Unquote to decode quoted strings.

func (*Params) GetOK added in v0.8.2

func (p *Params) GetOK(exec bool) (bool, string, error)

GetOK returns the next command parameter, using env.Unquote to decode quoted strings.

func (*Params) GetOptional added in v0.7.1

func (p *Params) GetOptional(exec bool) (bool, string, error)

GetOptional returns the next command parameter, using env.Unquote to decode quoted strings, returns true when the value is prefixed with a "-", along with the value sans the "-" prefix. Otherwise returns false and the value.

func (*Params) GetRaw added in v0.8.2

func (p *Params) GetRaw() string

GetRaw gets the remaining command parameters as a raw string.

Note: no other processing is done to interpolate variables or to decode string values.

type Result added in v0.7.1

type Result struct {
	// Quit instructs the handling code to quit.
	Quit bool
	// Exec informs the handling code of the type of execution.
	Exec ExecType
	// ExecParam is an accompanying parameter for execution. For ExecPipe, it
	// will be the name of a file. For ExecSet it will be the variable prefix.
	ExecParam string
	// Expanded forces expanded output.
	Expanded bool
}

Result is the result of metacmd execution.

type Runner

type Runner interface {
	Run(Handler) (Result, error)
}

Runner is a runner interface type.

func Decode

func Decode(name string, params *stmt.Params) (Runner, error)

Decode converts a command name (or alias) into a Runner.

type RunnerFunc

type RunnerFunc func(Handler) (Result, error)

RunnerFunc is a type wrapper for a single func satisfying Runner.Run.

func (RunnerFunc) Run

func (f RunnerFunc) Run(h Handler) (Result, error)

Run satisfies the Runner interface.

type Section

type Section string

Section is a meta command section.

const (
	SectionGeneral         Section = "General"
	SectionHelp            Section = "Help"
	SectionQueryBuffer     Section = "Query Buffer"
	SectionTransaction     Section = "Transaction"
	SectionInputOutput     Section = "Input/Output"
	SectionInformational   Section = "Informational"
	SectionFormatting      Section = "Formatting"
	SectionConnection      Section = "Connection"
	SectionOperatingSystem Section = "Operating System"
	SectionVariables       Section = "Variables"
)

Meta command section types.

func (Section) String

func (s Section) String() string

String satisfies stringer.

Jump to

Keyboard shortcuts

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