Find a file
2022-02-12 01:47:23 -06:00
src Basic plugin installation solid 2022-02-12 01:47:23 -06:00
manifest.yml Basic plugin installation solid 2022-02-12 01:47:23 -06:00
readme.md Basic plugin installation solid 2022-02-12 01:47:23 -06:00

Pluggable CLI

  • Each subcommand is a plugin?
  • Versioning and/or stability will be important?
    • Maybe plugins never change and instead you prefix them with a version?
      • How can we build stability into the system?
  • Some subset or all plugins are already known
  • Auto-download plugins when attempting to run a command
  • Completions for subcommands
    • Are completions provided for commands not-yet-installed? Does attempting to complete a subcommand's commands install the plugin and process its completions?
  • Will have configuration

Core functions

  • What plugins are available to me?
    • HTTP GET (and cache?) some known human- and machine-readable manifest
      • JSON, YAML, Cue, or Ion?
  • Install a plugin
    • HTTP GET
  • Delete a plugin
    • rm -r dir
  • Update self
    • download new binary and replace self with it
  • Update plugin
    • replace plugin
  • Run a plugin with some given arguments
    • call plugin with args

Components I See

  • Core
    • Knows where to find manifest (may cache locally)
    • Installs, updates, deletes plugins using information in manifest
    • Can update or uninstall itself
    • Can run plugins
  • Manifest
    • Contains information about where to find plugins and their versions
  • Plugins
    • Probably dumb scripts that call fancier things