Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extension Integration: Extension Management #1018

Open
bryphe opened this issue Dec 7, 2019 · 0 comments
Open

Extension Integration: Extension Management #1018

bryphe opened this issue Dec 7, 2019 · 0 comments

Comments

@bryphe
Copy link
Member

@bryphe bryphe commented Dec 7, 2019

This issue tracks the managing of extensions, including:

  • Install / Uninstall

To start, we'll be integrating with the VSCode extension gallery to pull and query for extensions. However, as we support some VimL extensions, we'll be pulling in data from other places (for example, vim-awesome looks like it has a nice API for discovery: https://vimawesome.com/) - so we should keep in mind support for multiple extension 'sources'.

Right now, we load all extensions in the user's .config/oni2/extensions folder - so you can manually extract VSCode vsix extensions and bring them over. However, this is not a convenient method for installation.

Part 1: Initial Management via CLI:

  • Add a --list-extensions command that will display the current set of installed extensions
  • Add a --query-extension <filter> that will search for an extension by name and provide metadata
  • Add an --install-extension <path> command that will download the extension specified by <id> and unpack the VSIX into the ./config/oni2/extensions folder.
  • Add an --install-extension <id> command that will download the extension specified by <id> and unpack the VSIX into the ./config/oni2/extensions folder.
  • Add an --uninstall-extension <id> command that will delete the extension specified by <id>

Unfortunately, we don't have a cross-platform Reason API for working with files that works on Windows (yet) - so we'll fallback to using some node integration scripts for the download and unpacking.

Part 2: UI Management:
Once we have the core primitives for install / uninstall, we can start to expose this in the UI.

  • Add an option in the command palette to 'Install extensions...'. When this command is used, we will open a new menu that will query the extension API, filter results, and allow users to install an extension.
  • Add a special notification that shows progress while installing and success / failure status.
  • Add a sidebar pane to show the list of currently installed extensions.

Part 3: Enable / Disable Extensions:

  • Expose a UI entry point to enable / disable extensions

Part 4: Auto-update:

  • Check updates for extensions
  • Prompt user for updates
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.