cmd

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 11, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package cmd は ghs の Cobra コマンド定義を集約します。

Index

Constants

This section is empty.

Variables

View Source
var Version = "dev"

Version はビルド時に -ldflags で書き換えられる想定のバージョン文字列です。

Functions

func Execute

func Execute()

Execute はルートコマンドを実行します。 main から呼び出されます。

Types

type App

type App struct {
	Cfg          *config.Config
	ResolveToken TokenResolver
	NewLister    ListerFactory
	Prompter     ui.Prompter
	Clone        CloneFunc

	Stdout io.Writer

	// CLI フラグ由来の挙動。
	UseSSH      bool
	BaseDirOver string
}

App はメインフローの依存をまとめた DI コンテナです。 テストでは各フィールドを fake に差し替えることでフロー全体を検証できます。

func NewDefaultApp

func NewDefaultApp(cfg *config.Config) *App

NewDefaultApp は本番用デフォルトの依存をセットした App を返します。

func (*App) Run

func (a *App) Run(ctx context.Context) error

Run はメインフロー (認証 → Owner選択 → リポジトリ選択 → クローン) を実行します。

type CloneFunc

type CloneFunc func(dest cloner.Destination, opts cloner.Options) error

CloneFunc はクローン処理の差し替えポイントです。

type ListerFactory

type ListerFactory func(ctx context.Context, token string) RepoLister

ListerFactory はトークンを受け取って RepoLister を生成する関数の型です。

type RepoLister

type RepoLister interface {
	ListOwners(ctx context.Context) ([]string, error)
	ListRepositories(ctx context.Context, owner string) ([]ghapi.Repository, error)
}

RepoLister は ghs のメインフローが GitHub から必要とする操作の最小限の契約です。 consumer 側 (このパッケージ) でインターフェースを定義することで、 テストでは fake、本番では *ghapi.Client に差し替えられます。

type TokenResolver

type TokenResolver func(fallbackToken string) (*auth.Result, error)

TokenResolver はトークン解決ロジックの差し替えポイントです。

Jump to

Keyboard shortcuts

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