Skip to content

Plugin list in config file #221

Description

@tyru

The config file ($VOLTPATH/config.toml) should be able to contain also plugin list.
We can think that config.toml is a package.json in Node.js.
It records package's list too. and config.toml can contain locked version range too if specified.

New subcommand: volt up

$ volt up

will install/uninstall/upgrade plugins written in config.toml.
config.toml can also include disabled flags, profiles and its plugins list, and so on.

After volt up is added:

  • volt get adds specified plugins to config.toml
  • And vice versa, volt rm removes plugins from config.toml

What should be included in config.toml?

We can choose what should be included in config.toml from lock.json structure (however each value is slightly different).
Here is the items.

  • current_profile_name (string): current profile name
  • plugins (array[object])
    • type (string): plugin resource type. git (default) or static is allowed
    • path (string): plugin resource path like tyru/caw.vim, github.com/tyru/caw.vim, https://github.com/tyru/caw.vim
    • version (string): Git hash or range (like git diff argument)
  • profiles (array[object])
    • name (string): profile name
    • path (array[string]): same format as plugins.path

"volt up" should reuse "volt build" command?

Yes, the command name is inspired from vagrant ;)
It is short because it should become the command users run very often.
But what is up?
And if volt up is added, volt build is mostly useless.
So volt build should implement this feature without adding a new command, or adding subcommand to volt build?

Ref

vgo may have smarter algorithm and interface.
We can borrow the idea from it :)

P.S.

Thanks @thinca for requesting the abstract of this feature :)

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions