* `gh extension install` not give an error if extension already installed and a clear message * remove test * Add implementation * lint go.sum --------- Co-authored-by: Sam Coe <samcoe@users.noreply.github.com>
41 lines
978 B
Go
41 lines
978 B
Go
package extensions
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/cli/cli/v2/internal/ghrepo"
|
|
)
|
|
|
|
type ExtTemplateType int
|
|
|
|
const (
|
|
GitTemplateType ExtTemplateType = 0
|
|
GoBinTemplateType ExtTemplateType = 1
|
|
OtherBinTemplateType ExtTemplateType = 2
|
|
)
|
|
|
|
//go:generate moq -rm -out extension_mock.go . Extension
|
|
type Extension interface {
|
|
Name() string // Extension Name without gh-
|
|
Path() string // Path to executable
|
|
URL() string
|
|
CurrentVersion() string
|
|
LatestVersion() string
|
|
IsPinned() bool
|
|
UpdateAvailable() bool
|
|
IsBinary() bool
|
|
IsLocal() bool
|
|
Owner() string
|
|
}
|
|
|
|
//go:generate moq -rm -out manager_mock.go . ExtensionManager
|
|
type ExtensionManager interface {
|
|
List() []Extension
|
|
Install(ghrepo.Interface, string) error
|
|
InstallLocal(dir string) error
|
|
Upgrade(name string, force bool) error
|
|
Remove(name string) error
|
|
Dispatch(args []string, stdin io.Reader, stdout, stderr io.Writer) (bool, error)
|
|
Create(name string, tmplType ExtTemplateType) error
|
|
EnableDryRunMode()
|
|
}
|