Skip to content

Add asdf support to Platform Provisioning Manifests #33

Description

@darkn3rd

Currently each language has its own single-purpose version manager in the manifest schema - pyenv (Python), rbenv (Ruby), sdkman (JVM languages) - with no way to express asdf, the general-purpose, plugin-based version manager that can replace any of them depending on which plugins a manifest installs (ruby, python, java, golang, etc.).

Depends on #16 - asdf needs to be opt-in alongside pyenv/rbenv/sdkman/direct system installs (you don't want multiple version managers for the same language installing at once), which needs real --select/--exclude filtering, not just documentation-only tags:. asdf's own package entries will carry tags: [asdf].

  • Add asdf as a new package type: in resolve_order.rb's PACKAGE_TYPES
  • Add install-command handling - asdf's install is git-clone + shell-hook + per-language asdf plugin add/asdf install, not a one-line package-manager call, so this needs a script:-based bootstrap (similar to ubuntu22_rbenv) plus separate asdf install <language> <version> steps per language a manifest wants asdf-managed
  • Decide which platform(s) actually get it - bash-capable platforms only (ubuntu2204.yml, macos.yml, cygwin.yml, msys2.yml); native Windows has no bash, so asdf wouldn't apply there (asdf itself doesn't support native Windows either, only WSL/POSIX shells)
  • Decide tagging granularity - a single tags: [asdf] for the bootstrap step, but should each asdf-managed language also carry a language-specific tag (e.g. [asdf, ruby-version-manager]) so --select/--exclude can swap asdf in for just one language rather than all of them at once?
  • Document asdf in scriptbox/config/README.md's "Version Managers" list, alongside pyenv/rbenv/sdkman
  • Confirm whether scriptbox/scripts/verify_commands.rb needs any change, or whether it already covers asdf-installed languages transparently (it detects binaries by name, not by install method)

This is additive/optional - existing platforms already install each language fine without asdf. This is about giving manifest authors the choice of a single unified version manager where they want it, once #16 makes that choice actually selectable.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions