godyl

command module
v0.1.12 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2026 License: MIT Imports: 4 Imported by: 0

README

godyl logo

godyl

Asset downloader


GitHub release Homepage Go Reference Go Report Card Build Status

Godyl in Action

For full documentation, see homepage

godyl helps with batch-downloading, checksum verifying, and installing statically compiled binaries from:

  • GitHub releases
  • GitLab releases
  • URLs
  • Go projects

As an alternative to above, custom commands can be used as well.

godyl will infer the platform and architecture from the system it is running on, and will attempt to download the appropriate binary.

This uses simple heuristics to select the correct binary to download, and will not work for all projects.

However, most properties can be overridden, with hints and skip used to help godyl make the correct decision.

Tool is inspired by task, dra and ansible

For a quick installation, you can use the provided installation script:

curl -sSL https://raw.githubusercontent.com/idelchi/godyl/refs/heads/main/install.sh | sh -s -- -d ~/.local/bin

Documentation

Overview

Godyl batch-downloads and installs statically compiled binaries from:

- GitHub releases - GitLab releases - URLs - Go projects

Directories

Path Synopsis
internal
app
Package app provides the entrypoint for the application, creating the root command and executing it.
Package app provides the entrypoint for the application, creating the root command and executing it.
cache
Package cache handles the caching of the downloaded items.
Package cache handles the caching of the downloaded items.
cli
Package cli implements the command structure and execution for the tool.
Package cli implements the command structure and execution for the tool.
cli/auth
Package auth contains the subcommand definition for `auth`.
Package auth contains the subcommand definition for `auth`.
cli/auth/remove
Package remove contains the subcommand definition for `auth remove`.
Package remove contains the subcommand definition for `auth remove`.
cli/auth/status
Package status contains the subcommand definition for `auth status`.
Package status contains the subcommand definition for `auth status`.
cli/auth/store
Package store contains the subcommand definition for `auth store`.
Package store contains the subcommand definition for `auth store`.
cli/cache
Package cache contains the subcommand definition for `cache`.
Package cache contains the subcommand definition for `cache`.
cli/cache/clean
Package clean contains the subcommand definition for `clean`.
Package clean contains the subcommand definition for `clean`.
cli/cache/path
Package path contains the subcommand definition for `cache path`.
Package path contains the subcommand definition for `cache path`.
cli/cache/remove
Package remove contains the subcommand definition for `cache remove`.
Package remove contains the subcommand definition for `cache remove`.
cli/config
Package config contains the subcommand definition for `config`.
Package config contains the subcommand definition for `config`.
cli/config/path
Package path contains the subcommand definition for `config path`.
Package path contains the subcommand definition for `config path`.
cli/config/remove
Package remove contains the subcommand definition for `config remove`.
Package remove contains the subcommand definition for `config remove`.
cli/config/set
Package set contains the subcommand definition for `config set`.
Package set contains the subcommand definition for `config set`.
cli/core
Package core provides shared utilities and types for CLI command handling.
Package core provides shared utilities and types for CLI command handling.
cli/download
Package download contains the subcommand definition for `download`.
Package download contains the subcommand definition for `download`.
cli/dump
Package dump contains the subcommand definition for `dump`.
Package dump contains the subcommand definition for `dump`.
cli/dump/auth
Package auth contains the subcommand definition for `dump auth`.
Package auth contains the subcommand definition for `dump auth`.
cli/dump/cache
Package cache contains the subcommand definition for `dump cache`.
Package cache contains the subcommand definition for `dump cache`.
cli/dump/config
Package config contains the subcommand definition for `dump config`.
Package config contains the subcommand definition for `dump config`.
cli/dump/defaults
Package defaults contains the subcommand definition for `dump defaults`.
Package defaults contains the subcommand definition for `dump defaults`.
cli/dump/env
Package env contains the subcommand definition for `dump env`.
Package env contains the subcommand definition for `dump env`.
cli/dump/platform
Package platform contains the subcommand definition for `dump platform`.
Package platform contains the subcommand definition for `dump platform`.
cli/dump/tools
Package tools contains the subcommand definition for `dump tools`.
Package tools contains the subcommand definition for `dump tools`.
cli/install
Package install contains the subcommand definition for `install`.
Package install contains the subcommand definition for `install`.
cli/paths
Package paths contains the subcommand definition for `paths`.
Package paths contains the subcommand definition for `paths`.
cli/status
Package status contains the subcommand definition for `status`.
Package status contains the subcommand definition for `status`.
cli/update
Package update contains the subcommand definition for `update`.
Package update contains the subcommand definition for `update`.
cli/validate
Package validate contains the subcommand definition for `validate`.
Package validate contains the subcommand definition for `validate`.
cli/version
Package version contains the subcommand definition for `version`.
Package version contains the subcommand definition for `version`.
config/cache
Package cache provides the configuration for the cache subcommand and its subcommands.
Package cache provides the configuration for the cache subcommand and its subcommands.
config/config
Package config provides configuration management functionality.
Package config provides configuration management functionality.
config/download
Package download provides configuration for download operations.
Package download provides configuration for download operations.
config/dump
Package dump provides the configuration for the `dump` command.
Package dump provides the configuration for the `dump` command.
config/dump/tools
Package tools provides configuration for dumping tool information.
Package tools provides configuration for dumping tool information.
config/install
Package install provides configuration for the install command.
Package install provides configuration for the install command.
config/root
Package root provides the root configuration structure for the application.
Package root provides the root configuration structure for the application.
config/shared
Package shared provides shared configuration structures and utilities used across different commands.
Package shared provides shared configuration structures and utilities used across different commands.
config/status
Package status provides configuration and flags for the `godyl status` command.
Package status provides configuration and flags for the `godyl status` command.
config/update
Package update provides configuration and flags for the `godyl update` command.
Package update provides configuration and flags for the `godyl update` command.
data
Package data provides utilities for managing configuration and cache files and directories.
Package data provides utilities for managing configuration and cache files and directories.
debug
Package debug provides debugging utilities for development and troubleshooting.
Package debug provides debugging utilities for development and troubleshooting.
defaults
Package defaults provides functionality for managing default values and configurations.
Package defaults provides functionality for managing default values and configurations.
detect
Package detect provides functionality for detecting and managing platform-specific information, including the operating system, architecture, system library, file extension, and distribution.
Package detect provides functionality for detecting and managing platform-specific information, including the operating system, architecture, system library, file extension, and distribution.
detect/platform
Package platform provides types and utilities for representing and working with different system platforms, including architectures, operating systems, libraries, and distributions.
Package platform provides types and utilities for representing and working with different system platforms, including architectures, operating systems, libraries, and distributions.
github
Package github provides functionality to interact with GitHub repositories, releases, and assets via the GitHub API.
Package github provides functionality to interact with GitHub repositories, releases, and assets via the GitHub API.
gitlab
Package gitlab provides functionality to interact with GitLab repositories, releases, and assets via the GitLab API.
Package gitlab provides functionality to interact with GitLab repositories, releases, and assets via the GitLab API.
goi
Package goi provides functionality for managing and installing Go binaries.
Package goi provides functionality for managing and installing Go binaries.
ierrors
Package ierrors provides error types for internal use.
Package ierrors provides error types for internal use.
iutils
Package iutils provides specific helpers for internal use.
Package iutils provides specific helpers for internal use.
match
Package match provides functionality to evaluate and match assets against specific platform requirements and name-based hints.
Package match provides functionality to evaluate and match assets against specific platform requirements and name-based hints.
presentation
Package presentation handles all UI and formatting logic.
Package presentation handles all UI and formatting logic.
processor
Package processor handles the processing of tool installations and management.
Package processor handles the processing of tool installations and management.
progress
Package progress provides progress tracking functionality.
Package progress provides progress tracking functionality.
results
Package results manages result collection and aggregation.
Package results manages result collection and aggregation.
runner
Package runner handles the execution of tool operations.
Package runner handles the execution of tool operations.
templates
Package templates provides template processing utilities for configuration and content generation.
Package templates provides template processing utilities for configuration and content generation.
tokenstore
Package tokenstore provides secure token storage and retrieval functionality.
Package tokenstore provides secure token storage and retrieval functionality.
tokenstore/keyring
Package keyring is a simple wrapper that adds timeouts to the zalando/go-keyring package.
Package keyring is a simple wrapper that adds timeouts to the zalando/go-keyring package.
tools
Package tools provides structures and methods for managing tool configurations, including downloading, validating, and executing tools in various environments.
Package tools provides structures and methods for managing tool configurations, including downloading, validating, and executing tools in various environments.
tools/checksum
Package checksum provides a structure for defining and working with checksums.
Package checksum provides a structure for defining and working with checksums.
tools/command
Package command provides utilities to manage and execute shell commands.
Package command provides utilities to manage and execute shell commands.
tools/exe
Package exe provides functionality for configuring tool executables.
Package exe provides functionality for configuring tool executables.
tools/fallbacks
Package fallbacks provides functionality for managing tool fallback sources.
Package fallbacks provides functionality for managing tool fallback sources.
tools/hints
Code generated by "string-enumer -t Match -o match_enumer___generated.go ."; DO NOT EDIT.
Code generated by "string-enumer -t Match -o match_enumer___generated.go ."; DO NOT EDIT.
tools/inherit
Package inherit provides types for handling tool inheritance configurations.
Package inherit provides types for handling tool inheritance configurations.
tools/mode
Package mode provides functionality for specifying tool operational modes.
Package mode provides functionality for specifying tool operational modes.
tools/result
Package result provides a Result struct to represent the outcome of a tool installation operation.
Package result provides a Result struct to represent the outcome of a tool installation operation.
tools/skip
Package skip provides functionality for managing tool skip conditions.
Package skip provides functionality for managing tool skip conditions.
tools/sources
Package sources provides abstractions for handling various types of installation sources, including GitHub repositories, direct URLs, Go projects, and command-based sources.
Package sources provides abstractions for handling various types of installation sources, including GitHub repositories, direct URLs, Go projects, and command-based sources.
tools/sources/github
Package github provides functionality for interacting with GitHub repositories, including fetching release information, matching assets to specific requirements, and downloading files from repository releases.
Package github provides functionality for interacting with GitHub repositories, including fetching release information, matching assets to specific requirements, and downloading files from repository releases.
tools/sources/gitlab
Package gitlab provides functionality for interacting with GitLab repositories, including fetching release information, matching assets to specific requirements, and downloading files from repository releases.
Package gitlab provides functionality for interacting with GitLab repositories, including fetching release information, matching assets to specific requirements, and downloading files from repository releases.
tools/sources/go
Package goc provides functionality for handling Go-based installations and managing Go commands using GitHub repositories.
Package goc provides functionality for handling Go-based installations and managing Go commands using GitHub repositories.
tools/sources/install
Package install provides shared utilities and types used across various modules, including functions for handling downloads, metadata management, file operations, and installation processes.
Package install provides shared utilities and types used across various modules, including functions for handling downloads, metadata management, file operations, and installation processes.
tools/sources/none
Package none provides a no-op source implementation for tools that don't require external sources.
Package none provides a no-op source implementation for tools that don't require external sources.
tools/sources/url
Package url provides functionality to handle URLs as sources for downloading and managing files.
Package url provides functionality to handle URLs as sources for downloading and managing files.
tools/strategy
Package strategy provides functionality for managing tool installation strategies.
Package strategy provides functionality for managing tool installation strategies.
tools/tags
Package tags provides functionality for managing tool tags and filtering.
Package tags provides functionality for managing tool tags and filtering.
tools/tool
Package tool provides core functionality for managing tool configurations.
Package tool provides core functionality for managing tool configurations.
tools/values
Package values provides functionality for managing tool configuration values.
Package values provides functionality for managing tool configuration values.
tools/version
Package version provides functionality for managing tool version information.
Package version provides functionality for managing tool version information.
updater
Package updater provides functionality for updating tools and managing update strategies.
Package updater provides functionality for updating tools and managing update strategies.
pkg
cobraext
Package cobraext extends the cobra command-line framework.
Package cobraext extends the cobra command-line framework.
dag
Package dag implements a generic directed acyclic graph with cycle detection, topological sorting, and ancestor chain computation.
Package dag implements a generic directed acyclic graph with cycle detection, topological sorting, and ancestor chain computation.
download
Package download provides file‑download utilities with timeout, retry, and optional SSL‑verification control.
Package download provides file‑download utilities with timeout, retry, and optional SSL‑verification control.
download/progress
Package progress implements file transfer progress tracking with concurrent progress bars (Tracker) and a no-op implementation (Noop) for when tracking is disabled, both implementing the Trackable interface.
Package progress implements file transfer progress tracking with concurrent progress bars (Tracker) and a no-op implementation (Noop) for when tracking is disabled, both implementing the Trackable interface.
editor
Package editor provides functionality to edit YAML files while preserving comments.
Package editor provides functionality to edit YAML files while preserving comments.
env
Package env provides utilities for managing environment variables in Go.
Package env provides utilities for managing environment variables in Go.
executable
Package executable provides utilities for working with executable files and their versions.
Package executable provides utilities for working with executable files and their versions.
generic
Package generic provides lightweight, generic helpers for slices, zero checks, path expansion, deep copying, and basic filtering.
Package generic provides lightweight, generic helpers for slices, zero checks, path expansion, deep copying, and basic filtering.
logger
Package logger provides a simple logging framework that supports log levels.
Package logger provides a simple logging framework that supports log levels.
path/file
Package file provides a typed abstraction over filesystem file paths.
Package file provides a typed abstraction over filesystem file paths.
path/files
Package files provides utilities for managing collections of files.
Package files provides utilities for managing collections of files.
path/folder
Package folder provides a typed abstraction over filesystem directory paths.
Package folder provides a typed abstraction over filesystem directory paths.
pretty
Package pretty contains functions for prettifying and visualizing data in JSON YAML, and ENV formats.
Package pretty contains functions for prettifying and visualizing data in JSON YAML, and ENV formats.
ptrmap
Package ptrmap provides a function to collect pointers to struct fields from a given struct.
Package ptrmap provides a function to collect pointers to struct fields from a given struct.
score
Package score provides utilities for scoring and selecting items based on multiple criteria.
Package score provides utilities for scoring and selecting items based on multiple criteria.
stdin
Package stdin provides simple utilities for reading from stdin, as well as determining if stdin is a terminal or if something has been piped to it.
Package stdin provides simple utilities for reading from stdin, as well as determining if stdin is a terminal or if something has been piped to it.
unmarshal
Package unmarshal provides YAML decoding helpers for flexible input formats.
Package unmarshal provides YAML decoding helpers for flexible input formats.
validator
Package validator provides a wrapper around go-playground/validator with built-in translation support for validation error messages.
Package validator provides a wrapper around go-playground/validator with built-in translation support for validation error messages.
version
Package version provides some utilities for working with version strings.
Package version provides some utilities for working with version strings.
wildcard
Package wildcard provides simple, safe string matching where only '*' is treated as a wildcard matching any sequence of characters (excluding newlines).
Package wildcard provides simple, safe string matching where only '*' is treated as a wildcard matching any sequence of characters (excluding newlines).

Jump to

Keyboard shortcuts

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