Documentation
¶
Index ¶
- Constants
- func ArchToAMD64(arch string) string
- func ArchToX64(arch string) string
- func ArchToX8664(arch string) string
- func BinaryName(name string) string
- func CWD(ctx context.Context) string
- func CollectModuleDirectories(r Runnable) []string
- func Command(ctx context.Context, name string, args ...string) *exec.Cmd
- func ConfigPath(toolName string, cfg ToolConfig) (string, error)
- func CopyFile(src, dst string) error
- func CreateSymlink(binaryPath string) (string, error)
- func DefaultArchiveFormat() string
- func DefaultArchiveFormatFor(os string) string
- func DetectByExtension(extensions ...string) []string
- func DetectByFile(filenames ...string) []string
- func Download(ctx context.Context, url string, opts ...DownloadOpt) error
- func Errorf(ctx context.Context, format string, args ...any)
- func Exec(ctx context.Context, name string, args ...string) error
- func ExecIn(ctx context.Context, dir, name string, args ...string) error
- func ExtractTar(src, destDir string, opts ...ExtractOpt) error
- func ExtractTarGz(src, destDir string, opts ...ExtractOpt) error
- func ExtractZip(src, destDir string, opts ...ExtractOpt) error
- func FromBinDir(elem ...string) string
- func FromGitRoot(elem ...string) string
- func FromLocal(ctx context.Context, path string, opts ...DownloadOpt) error
- func FromPocketDir(elem ...string) string
- func FromToolsDir(elem ...string) string
- func GitRoot() string
- func GoVersionFromDir(dir string) (string, error)
- func HostArch() string
- func HostOS() string
- func InstallCargoGit(ctx context.Context, repo, name, version string) error
- func InstallGo(ctx context.Context, pkg, version string) error
- func OSToTitle(os string) string
- func OSToUpper(os string) string
- func Options[T any](ctx context.Context) T
- func Path(ctx context.Context) string
- func PrependPath(env []string, dir string) []string
- func Printf(ctx context.Context, format string, args ...any)
- func Println(ctx context.Context, args ...any)
- func RegisterGenerateAll(fn GenerateAllFunc)
- func RunConfig(cfg Config)
- func TestContext(out *Output) context.Context
- func VenvBinaryPath(venvDir, name string) string
- func Verbose(ctx context.Context) bool
- type Config
- type DownloadOpt
- type Engine
- type ExecutionPlan
- func (p *ExecutionPlan) AddFunc(name, usage string, hidden, deduped bool)
- func (p *ExecutionPlan) Pop()
- func (p *ExecutionPlan) PopFunc()
- func (p *ExecutionPlan) Print(ctx context.Context, showHidden, showDedup bool)
- func (p *ExecutionPlan) PushParallel()
- func (p *ExecutionPlan) PushSerial()
- func (p *ExecutionPlan) Steps() []*PlanStep
- type ExtractOpt
- type FuncDef
- type GenerateAllFunc
- type Output
- type PathFilter
- func (p *PathFilter) DetectBy(fn func() []string) *PathFilter
- func (p *PathFilter) Except(patterns ...string) *PathFilter
- func (p *PathFilter) In(patterns ...string) *PathFilter
- func (p *PathFilter) Resolve() []string
- func (p *PathFilter) ResolveFor(cwd string) []string
- func (p *PathFilter) RunsIn(dir string) bool
- func (p *PathFilter) SkipTask(task *FuncDef, paths ...string) *PathFilter
- type PlanStep
- type Runnable
- type ShimConfig
- type ToolConfig
Constants ¶
const ( // DirName is the name of the pocket directory. DirName = ".pocket" // ToolsDirName is the name of the tools subdirectory. ToolsDirName = "tools" // BinDirName is the name of the bin subdirectory (for symlinks). BinDirName = "bin" )
const ( Darwin = "darwin" Linux = "linux" Windows = "windows" )
OS name constants matching runtime.GOOS values.
const ( // Go-style architecture names (matching runtime.GOARCH). AMD64 = "amd64" ARM64 = "arm64" // Alternative naming conventions used by various tools. X8664 = "x86_64" AARCH64 = "aarch64" X64 = "x64" )
Architecture constants in various naming conventions.
const WaitDelay = 5 * time.Second
WaitDelay is the grace period given to child processes to handle termination signals before being force-killed.
Variables ¶
This section is empty.
Functions ¶
func ArchToAMD64 ¶
ArchToAMD64 converts x86_64/aarch64 naming to Go-style architecture names.
x86_64 -> amd64 aarch64 -> arm64
Other values are returned unchanged.
func ArchToX64 ¶
ArchToX64 converts Go-style architecture names to x64/arm64 naming.
amd64 -> x64 arm64 -> arm64 (unchanged)
Other values are returned unchanged.
func ArchToX8664 ¶
ArchToX8664 converts Go-style architecture names to x86_64/aarch64 naming.
amd64 -> x86_64 arm64 -> aarch64
Other values are returned unchanged.
func BinaryName ¶
BinaryName returns the binary name with the correct extension for the current OS. On Windows, it appends ".exe" to the name.
func CollectModuleDirectories ¶
CollectModuleDirectories walks a Runnable tree and returns all unique directories where functions should run. This is used for multi-module shim generation.
func Command ¶
Command creates an exec.Cmd with PATH prepended with .pocket/bin, stdout/stderr connected to os.Stdout/os.Stderr, and graceful shutdown configured.
When the context is cancelled, the command receives SIGINT first (allowing graceful shutdown), then SIGKILL after WaitDelay.
If stdout is a TTY, color-forcing environment variables are added so that tools output ANSI colors even when their output is buffered (for parallel execution).
Note: For commands run from task actions, prefer TaskContext.Command() which automatically wires output to the task's output writers for proper parallel buffering.
To redirect output (e.g., for buffering in parallel execution), set cmd.Stdout and cmd.Stderr after creating the command.
func ConfigPath ¶
func ConfigPath(toolName string, cfg ToolConfig) (string, error)
ConfigPath returns the path to a tool's config file. It checks for user config files in the repo root first, then falls back to writing the bundled default config.
Returns empty string and no error if cfg is empty.
Example:
var golangciConfig = pocket.ToolConfig{
UserFiles: []string{".golangci.yml", ".golangci.yaml"},
DefaultFile: "golangci.yml",
DefaultData: defaultConfig,
}
func lint(ctx context.Context) error {
configPath, err := pocket.ConfigPath("golangci-lint", golangciConfig)
if err != nil {
return err
}
return pocket.Exec(ctx, "golangci-lint", "run", "-c", configPath)
}
func CreateSymlink ¶
CreateSymlink creates a symlink in .pocket/bin/ pointing to the given binary. On Windows, it copies the file instead since symlinks require admin privileges. Returns the path to the symlink (or copy on Windows).
func DefaultArchiveFormat ¶
func DefaultArchiveFormat() string
DefaultArchiveFormat returns the typical archive format for the current OS. Returns "zip" on Windows, "tar.gz" on other platforms.
func DefaultArchiveFormatFor ¶
DefaultArchiveFormatFor returns the typical archive format for the given OS. Returns "zip" for Windows, "tar.gz" for other platforms.
func DetectByExtension ¶
DetectByExtension finds directories containing files with any of the specified extensions. Returns paths relative to git root, sorted alphabetically. Excludes .pocket directory and hidden directories. Each directory is returned only once, even if multiple matching files are found.
func DetectByFile ¶
DetectByFile finds directories containing any of the specified files (e.g., "go.mod"). Returns paths relative to git root, sorted alphabetically. Excludes .pocket directory and hidden directories. Each directory is returned only once, even if multiple marker files are found.
func Download ¶
func Download(ctx context.Context, url string, opts ...DownloadOpt) error
Download fetches a URL and optionally extracts it. Progress and status messages are written to the context's output.
Example:
err := Download(ctx, url,
WithDestDir(binDir),
WithFormat("tar.gz"),
WithExtract(WithRenameFile("tool-1.0.0/tool", "tool")),
WithSymlink(),
)
func Exec ¶
Exec runs an external command with output directed to the current context. The command runs in the current path directory.
func ExtractTar ¶
func ExtractTar(src, destDir string, opts ...ExtractOpt) error
ExtractTar extracts a .tar archive to destDir. If no options are provided, all files are extracted preserving directory structure. Use WithRenameFile or WithExtractFile to limit extraction to specific files.
func ExtractTarGz ¶
func ExtractTarGz(src, destDir string, opts ...ExtractOpt) error
ExtractTarGz extracts a .tar.gz archive to destDir. If no options are provided, all files are extracted preserving directory structure. Use WithRenameFile or WithExtractFile to limit extraction to specific files.
func ExtractZip ¶
func ExtractZip(src, destDir string, opts ...ExtractOpt) error
ExtractZip extracts a .zip archive to destDir. If no options are provided, all files are extracted preserving directory structure. Use WithRenameFile or WithExtractFile to limit extraction to specific files.
func FromBinDir ¶
FromBinDir returns a path relative to the .pocket/bin directory. If no elements are provided, returns the bin directory itself.
func FromGitRoot ¶
FromGitRoot returns a path relative to the git root.
func FromLocal ¶
func FromLocal(ctx context.Context, path string, opts ...DownloadOpt) error
FromLocal processes a local file (extract/copy) with the same options as Download. Useful for processing pre-downloaded or bundled archives.
func FromPocketDir ¶
FromPocketDir returns a path relative to the .pocket directory.
func FromToolsDir ¶
FromToolsDir returns a path relative to the .pocket/tools directory.
func GoVersionFromDir ¶
GoVersionFromDir reads the Go version from go.mod in the given directory. Returns the version string (e.g., "1.21") or an error if the file cannot be read or doesn't contain a go directive.
func InstallCargoGit ¶
InstallCargoGit installs a Rust binary using 'cargo install --git'. The binary is installed to .pocket/tools/cargo/<name>/<version>/ and symlinked to .pocket/bin/. Requires cargo to be installed on the system.
Example:
func installTool(ctx context.Context) error {
return pocket.InstallCargoGit(ctx, "https://github.com/org/tool", "tool", "v1.0.0")
}
func InstallGo ¶
InstallGo installs a Go binary using 'go install'. The binary is installed to .pocket/tools/go/<pkg>/<version>/ and symlinked to .pocket/bin/.
Example:
func installLinter(ctx context.Context) error {
pocket.Printf(ctx, "Installing golangci-lint %s...\n", version)
return pocket.InstallGo(ctx, "github.com/golangci/golangci-lint/cmd/golangci-lint", version)
}
func OSToTitle ¶
OSToTitle converts an OS name to title case.
darwin -> Darwin linux -> Linux windows -> Windows
func Options ¶
Options retrieves typed options from the context. It handles both struct and pointer types for T, always looking up the base struct type.
func PrependPath ¶
PrependPath prepends a directory to the PATH in the given environment.
func RegisterGenerateAll ¶
func RegisterGenerateAll(fn GenerateAllFunc)
RegisterGenerateAll registers the scaffold.GenerateAll function. This is called by internal/scaffold.init() to avoid import cycles.
func RunConfig ¶
func RunConfig(cfg Config)
RunConfig is the main entry point for running a pocket configuration. It parses CLI flags, discovers functions, and runs the appropriate ones.
Example usage in .pocket/main.go:
func main() {
pocket.RunConfig(Config)
}
func TestContext ¶
TestContext creates a context suitable for testing.
func VenvBinaryPath ¶
VenvBinaryPath returns the cross-platform path to a binary in a Python venv.
Types ¶
type Config ¶
type Config struct {
// AutoRun defines the execution tree for ./pok (no arguments).
// Use Serial() and Parallel() to control execution order.
// All tasks in AutoRun execute when running ./pok without arguments.
//
// Example:
//
// AutoRun: pocket.Serial(
// pocket.Paths(golang.Workflow()).DetectBy(golang.Detect()),
// pocket.Paths(python.Workflow()).DetectBy(python.Detect()),
// ),
AutoRun Runnable
// ManualRun registers additional tasks that only run when explicitly
// invoked with ./pok <taskname>. These tasks appear in ./pok -h under
// "Manual Tasks" and support the same wrappers as AutoRun (Paths, etc.).
//
// Example:
//
// ManualRun: []pocket.Runnable{
// deployTask,
// pocket.Paths(benchmarkTask).In("services/api"),
// },
ManualRun []Runnable
// Shim controls shim script generation.
// By default, only Posix (./pok) is generated with name "pok".
Shim *ShimConfig
// SkipGenerate disables running "generate" at the start of the "all" task.
// By default, "all" regenerates files before running tasks.
// Set to true to skip regeneration.
SkipGenerate bool
// SkipGitDiff disables the git diff check at the end of the "all" task.
// By default, "all" fails if there are uncommitted changes after running all tasks.
// Set to true to disable this check.
SkipGitDiff bool
}
Config defines the configuration for a project using pocket.
func (Config) WithDefaults ¶
WithDefaults returns a copy of the config with default values applied.
type DownloadOpt ¶
type DownloadOpt func(*downloadConfig)
DownloadOpt configures download and extraction behavior.
func WithDestDir ¶
func WithDestDir(dir string) DownloadOpt
WithDestDir sets the destination directory for extraction.
func WithExtract ¶
func WithExtract(opt ExtractOpt) DownloadOpt
WithExtract adds extraction options from the extract package. Use this to pass WithRenameFile, WithExtractFile, or WithFlatten options.
Example:
Download(ctx, url,
WithExtract(WithRenameFile("tool-1.0.0/tool", "tool")),
WithExtract(WithExtractFile("LICENSE")),
)
func WithFormat ¶
func WithFormat(format string) DownloadOpt
WithFormat sets the archive format. Supported formats: "tar.gz", "tar", "zip", or "" for raw copy.
func WithHTTPHeader ¶
func WithHTTPHeader(key, value string) DownloadOpt
WithHTTPHeader adds an HTTP header to the download request. Multiple calls accumulate headers.
func WithSkipIfExists ¶
func WithSkipIfExists(path string) DownloadOpt
WithSkipIfExists skips the download if the specified file exists.
func WithSymlink ¶
func WithSymlink() DownloadOpt
WithSymlink creates a symlink in .pocket/bin/ after extraction. The symlink points to the first extracted file.
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine orchestrates plan collection and execution.
type ExecutionPlan ¶
type ExecutionPlan struct {
// contains filtered or unexported fields
}
ExecutionPlan holds the complete plan collected during modeCollect.
func (*ExecutionPlan) AddFunc ¶
func (p *ExecutionPlan) AddFunc(name, usage string, hidden, deduped bool)
AddFunc adds a function call to the plan.
func (*ExecutionPlan) PopFunc ¶
func (p *ExecutionPlan) PopFunc()
PopFunc ends the current function's scope.
func (*ExecutionPlan) Print ¶
func (p *ExecutionPlan) Print(ctx context.Context, showHidden, showDedup bool)
Print outputs the execution plan tree.
func (*ExecutionPlan) PushParallel ¶
func (p *ExecutionPlan) PushParallel()
PushParallel starts a parallel group.
func (*ExecutionPlan) PushSerial ¶
func (p *ExecutionPlan) PushSerial()
PushSerial starts a serial group.
func (*ExecutionPlan) Steps ¶
func (p *ExecutionPlan) Steps() []*PlanStep
Steps returns the top-level steps in the plan.
type ExtractOpt ¶
type ExtractOpt func(*extractConfig)
ExtractOpt configures extraction behavior.
func WithExtractFile ¶
func WithExtractFile(name string) ExtractOpt
WithExtractFile extracts only the specified file (by base name). The file is extracted with its original name. Multiple calls accumulate files to extract.
func WithFlatten ¶
func WithFlatten() ExtractOpt
WithFlatten flattens directory structure, extracting all files to destDir root. File names are preserved but directory paths are discarded.
func WithRenameFile ¶
func WithRenameFile(srcPath, destName string) ExtractOpt
WithRenameFile extracts a specific file and optionally renames it. srcPath can be a full path within the archive or just the base name. If destName is empty, the original base name is preserved. Multiple calls accumulate files to extract.
Example:
ExtractTarGz(src, dest,
WithRenameFile("golangci-lint-1.55.0-linux-amd64/golangci-lint", "golangci-lint"),
)
type FuncDef ¶
type FuncDef struct {
// contains filtered or unexported fields
}
FuncDef represents a named function that can be executed. Create with pocket.Func() - this is the only way to create runnable functions.
The body can be either:
- A plain function: func(context.Context) error
- A Runnable composition: pocket.Serial(...) or pocket.Parallel(...)
Example:
// Simple function
var Format = pocket.Func("go-format", "format Go code", func(ctx context.Context) error {
return pocket.Exec(ctx, "go", "fmt", "./...")
})
// Function with dependencies
var Lint = pocket.Func("go-lint", "run linter", pocket.Serial(
InstallLinter,
func(ctx context.Context) error {
return pocket.Exec(ctx, "golangci-lint", "run", "./...")
},
))
// Hidden functions (e.g., tool installers)
var InstallLinter = pocket.Func("install:linter", "install linter", install).Hidden()
func Func ¶
Func creates a new function definition. This is the only way to create functions that can be used with Serial/Parallel.
The name is used for CLI commands (e.g., "go-format" becomes ./pok go-format). The usage is displayed in help output. The body can be:
- func(context.Context) error - a plain function
- Runnable - a Serial/Parallel composition
func (*FuncDef) Hidden ¶
Hidden returns a copy marked as hidden from CLI help. Hidden functions can still be executed but don't appear in ./pok -h. Use this for internal functions like tool installers.
func (*FuncDef) Run ¶
Run executes this function with the given context. This is useful for testing or programmatic execution.
func (*FuncDef) With ¶
With returns a copy with options attached. Options are accessible via pocket.Options[T](ctx) in the function.
Example:
type FormatOptions struct {
Config string
}
var Format = pocket.Func("format", "format code", formatImpl).
With(FormatOptions{Config: ".golangci.yml"})
func formatImpl(ctx context.Context) error {
opts := pocket.Options[FormatOptions](ctx)
// use opts.Config
}
type GenerateAllFunc ¶
GenerateAllFunc is the function signature for scaffold.GenerateAll. This is set by internal/scaffold at init time to avoid import cycles.
type Output ¶
Output holds stdout and stderr writers for task output. This is passed through the Runnable chain to direct output appropriately.
func StdOutput ¶
func StdOutput() *Output
StdOutput returns an Output that writes to os.Stdout and os.Stderr.
type PathFilter ¶
type PathFilter struct {
// contains filtered or unexported fields
}
PathFilter wraps a Runnable with path filtering. It implements Runnable, so it can be used anywhere a Runnable is expected.
func Paths ¶
func Paths(r Runnable) *PathFilter
Paths wraps a Runnable with path filtering capabilities. The returned *PathFilter can be configured with builder methods.
func (*PathFilter) DetectBy ¶
func (p *PathFilter) DetectBy(fn func() []string) *PathFilter
DetectBy sets a custom detection function. The function should return directories relative to git root. Returns a new *PathFilter (immutable).
func (*PathFilter) Except ¶
func (p *PathFilter) Except(patterns ...string) *PathFilter
Except adds exclude patterns (regexp). Directories matching any pattern are excluded from results. Returns a new *PathFilter (immutable).
func (*PathFilter) In ¶
func (p *PathFilter) In(patterns ...string) *PathFilter
In adds include patterns (regexp). Directories matching any pattern are included. Returns a new *PathFilter (immutable).
func (*PathFilter) Resolve ¶
func (p *PathFilter) Resolve() []string
Resolve returns all directories where this Runnable should run. It combines detection results with explicit includes, then filters by excludes. Results are sorted and deduplicated.
func (*PathFilter) ResolveFor ¶
func (p *PathFilter) ResolveFor(cwd string) []string
ResolveFor returns the resolved paths filtered for the given working directory. If cwd is ".", returns all resolved paths. Otherwise, returns only paths that match cwd.
func (*PathFilter) RunsIn ¶
func (p *PathFilter) RunsIn(dir string) bool
RunsIn returns true if this Runnable should run in the given directory. The directory should be relative to git root.
func (*PathFilter) SkipTask ¶
func (p *PathFilter) SkipTask(task *FuncDef, paths ...string) *PathFilter
SkipTask configures a task to be skipped in specific paths. If no paths are specified, the task is skipped everywhere within this PathFilter. Paths support regex patterns matched against the current execution path. Returns a new *PathFilter (immutable).
Example:
pocket.Paths(golang.Workflow()).
DetectBy(golang.Detect()).
SkipTask(golang.Test, "tests/go", "tests/features").
SkipTask(golang.Vulncheck) // skip everywhere
type PlanStep ¶
type PlanStep struct {
Type string // "serial", "parallel", "func"
Name string // Function name
Usage string // Function usage/description
Hidden bool // Whether this is a hidden function
Deduped bool // Would be skipped due to deduplication
Path string // Path context for path-filtered execution
Children []*PlanStep // Nested steps (for serial/parallel groups)
}
PlanStep represents a single step in the execution plan.
type Runnable ¶
type Runnable interface {
// contains filtered or unexported methods
}
Runnable is the interface for anything that can be executed. It uses unexported methods to prevent external implementation, ensuring only pocket types (FuncDef, serial, parallel, PathFilter) can satisfy it.
Users create Runnables via:
- pocket.Func() for individual functions
- pocket.Serial() for sequential execution
- pocket.Parallel() for concurrent execution
- pocket.Paths() for path filtering
func Parallel ¶
Parallel composes items to run concurrently.
Returns a Runnable that executes items in parallel. Use it to:
- Run independent tasks concurrently: Parallel(Lint, Test)
- Compose in Config: Parallel(task1, task2)
Items can be *FuncDef, Runnable, or func(context.Context) error.
Example:
var CI = pocket.Func("ci", "run CI", pocket.Parallel(
Lint,
Test,
))
func Serial ¶
Serial composes items to run sequentially.
Returns a Runnable that executes items in order. Use it to:
- Define dependencies: Serial(Install, TaskImpl)
- Compose tasks in Config: Serial(Format, Lint, Test)
Items can be *FuncDef, Runnable, or func(context.Context) error.
Example:
var Lint = pocket.Func("lint", "run linter", pocket.Serial(
golangcilint.Install,
func(ctx context.Context) error {
return pocket.Exec(ctx, "golangci-lint", "run", "./...")
},
))
type ShimConfig ¶
type ShimConfig struct {
// Name is the base name of the generated shim scripts (without extension).
// Default: "pok"
Name string
// Posix generates a bash script (./pok).
// This is enabled by default if ShimConfig is nil.
Posix bool
// Windows generates a batch file (pok.cmd).
// The batch file requires Go to be installed and in PATH.
Windows bool
// PowerShell generates a PowerShell script (pok.ps1).
// The PowerShell script can auto-download Go if not found.
PowerShell bool
}
ShimConfig controls shim script generation.
type ToolConfig ¶
type ToolConfig struct {
// UserFiles are filenames to search for in the repo root.
// Checked in order; first match wins.
UserFiles []string
// DefaultFile is the filename for the bundled default config,
// written to .pocket/tools/<name>/ if no user config exists.
DefaultFile string
// DefaultData is the bundled default configuration content.
DefaultData []byte
}
ToolConfig describes how to find or create a tool's configuration file.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
pocket
command
|
|
|
internal
|
|
|
scaffold
Package scaffold provides generation of .pocket/ scaffold files.
|
Package scaffold provides generation of .pocket/ scaffold files. |
|
shim
Package shim provides generation of the ./pok wrapper scripts.
|
Package shim provides generation of the ./pok wrapper scripts. |
|
Package tasks provides the entry point for running pocket tasks.
|
Package tasks provides the entry point for running pocket tasks. |
|
github
Package github provides GitHub-related tasks.
|
Package github provides GitHub-related tasks. |
|
golang
Package golang provides Go development tasks.
|
Package golang provides Go development tasks. |
|
lua
Package lua provides Lua-related build tasks.
|
Package lua provides Lua-related build tasks. |
|
markdown
Package markdown provides Markdown formatting tasks.
|
Package markdown provides Markdown formatting tasks. |
|
python
Package python provides Python-related build tasks using ruff and mypy.
|
Package python provides Python-related build tasks using ruff and mypy. |
|
tools
|
|
|
basedpyright
Package basedpyright provides basedpyright (Python static type checker) tool integration.
|
Package basedpyright provides basedpyright (Python static type checker) tool integration. |
|
bun
Package bun provides bun runtime integration.
|
Package bun provides bun runtime integration. |
|
golangcilint
Package golangcilint provides golangci-lint integration.
|
Package golangcilint provides golangci-lint integration. |
|
govulncheck
Package govulncheck provides govulncheck integration.
|
Package govulncheck provides govulncheck integration. |
|
mdformat
Package mdformat provides mdformat (Markdown formatter) tool integration.
|
Package mdformat provides mdformat (Markdown formatter) tool integration. |
|
mypy
Package mypy provides mypy (Python static type checker) tool integration.
|
Package mypy provides mypy (Python static type checker) tool integration. |
|
nvim
Package nvim provides Neovim tool integration.
|
Package nvim provides Neovim tool integration. |
|
prettier
Package prettier provides prettier (code formatter) integration.
|
Package prettier provides prettier (code formatter) integration. |
|
ruff
Package ruff provides ruff (Python linter and formatter) tool integration.
|
Package ruff provides ruff (Python linter and formatter) tool integration. |
|
stylua
Package stylua provides stylua tool integration.
|
Package stylua provides stylua tool integration. |
|
tsqueryls
Package tsqueryls provides ts_query_ls tool integration.
|
Package tsqueryls provides ts_query_ls tool integration. |
|
uv
Package uv provides uv (Python package manager) tool integration.
|
Package uv provides uv (Python package manager) tool integration. |