Skip to content

[FEAT cloudctl] - Add tool download infrastructure #71

Open

Description

@onuryilmaz

User Story

As a cloudctl user, I want cloudctl to download and cache versioned tool binaries automatically, so I don't need to manage kubectl/helm/kubelogin versions manually.

Description

Port the full download package from u8s: generic file download with SHA-256 verification, tar.gz and zip extraction, GitHub Releases API digest support (preferred, with .sha256 URL fallback), progress output to stderr, and size caps (200 MiB download, 500 MiB extraction). This is the foundation for all tool subcommands.

Acceptance Criteria

  • DownloadFile — single binary download with SHA-256 verification
  • DownloadTarGzFile — tar.gz extraction with file filter and checksum
  • DownloadZipFile — zip extraction with file filter and checksum
  • DownloadGitHubReleaseBinary — GitHub release asset download with API digest preferred, .sha256 URL fallback
  • Downloads cached in XDG cache dir under versioned filename; re-download skipped if already present
  • Progress output to stderr; 200 MiB download cap and 500 MiB extraction cap enforced

Reference Issues

Epic: #70

Activity

  1. added
    featureNew functional capabilities or significant additions to the CLI.
    maintenanceRoutine updates, dependency management, or internal refactoring
    on Aug 31, 2026
  2. github-actions commented on Aug 31, 2026

    @github-actions

    Thanks for opening this issue! 🎉

    A maintainer will triage it within 5 business days. You can learn more about our issue workflow in the Issue Lifecycle documentation.

    In the meantime, please make sure you have provided:

    • A clear problem statement
    • Steps to reproduce (for bugs)
    • Expected vs actual behavior

    This helps us route your issue faster.

  3. added
    needs-refinementNeeds scoping before implementation
    and removed
    needs-triageNew issue, not yet reviewed
    on Aug 31, 2026
  4. added
    backlogReady for sprint planning; triggers project addition
    and removed
    needs-refinementNeeds scoping before implementation
    on Sep 28, 2026
  5. self-assigned this
    on Sep 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

backlogReady for sprint planning; triggers project additionfeatureNew functional capabilities or significant additions to the CLI.good first issueGood for newcomersmaintenanceRoutine updates, dependency management, or internal refactoring

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions