Skip to content
This repository has been archived by the owner on Jun 28, 2022. It is now read-only.

Plugins - Implement Plugin Framework #4

Open
ReenigneArcher opened this issue Aug 16, 2021 · 3 comments
Open

Plugins - Implement Plugin Framework #4

ReenigneArcher opened this issue Aug 16, 2021 · 3 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@ReenigneArcher
Copy link
Member

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

If RetroArcher supported plugins it would provide an easier way for people to make RetroArcher better without having to contribute to the core project (which can be quite overwhelming).

Describe the solution you'd like
A clear and concise description of what you want to happen.

Something similar to plugins from one of these:

  • Plex Media Server
  • Kodi
  • HomeAssistant

More research is needed

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Examples of possible plugins:

  • Additional standalone emulators
  • A bios verifier tool
  • Resource monitoring dashboard
@ReenigneArcher ReenigneArcher added the help wanted Extra attention is needed label Aug 16, 2021
@ReenigneArcher
Copy link
Member Author

ReenigneArcher commented Nov 16, 2021

Some ideas...

Plugin Repository (decided against this, separate github organization instead with separate repos)

  • Could create a RetroArcher.plugins repo which would be separated from RetroArcher.X.
  • The repo could have 3 branches
    • master (stable)
    • nightly (latest)
    • template (mostly empty, just contain template files)
  • Workflow could be something like this:
    • Plugin Developers fork the repo
    • Create a new branch in their fork using template branch as a base
    • When finished with release do a PR back to the main repo's nightly branch

Plugin Requirements

  • all plugins to be installed to a specified folder, likely named plug-ins
  • plug-ins will need some kind of manifest file with all the metadata... json is probably a good format for this
  • settings/configurations

Likely required changed to RetroArcher.X

  • create an interface for dealing with plugins, which could:
    • install plugins that are part of the RetroArcher.plugins repo
    • uninstall any installed plugins
    • for installed plugins, load a configuration UI (html) page associated with that plugin
  • for each folder in plugin directory, import the plugin... each plugin's main file will probably need to be named __init__.py
  • if the plugin was imported successfully, list the plugin in the plugins menu/page

@ReenigneArcher
Copy link
Member Author

Here's a preview of the in process plugin management page.
image

Plugins to be installed to the plugins folder within the RetroArcher root directory.

Idea for structure of a plugin:

└───example-plugin
    │   manifest.xml
    │
    ├───bin
    ├───code
    │       requirements.txt
    │       __init__.py
    │
    ├───html
    │       config.html
    │       index.html
    │
    ├───lib
    └───resources
        ├───css
        ├───fonts
        ├───images
        │       background.png
        │       icon.png
        │
        └───js

Milestones:

  • Install plugins using git
  • Check plugins for updates using git
  • Define requirements for plugins
  • Document plugins

@ReenigneArcher ReenigneArcher self-assigned this Dec 31, 2021
@ReenigneArcher ReenigneArcher changed the title Add a way to support third party plugins Plugins - Implement Plugin Framework Dec 31, 2021
@github-actions
Copy link

github-actions bot commented Apr 1, 2022

This issue is stale because it has been open for 30 days with no activity. Remove the stale label or comment, otherwise this will be closed in 5 days.

@github-actions github-actions bot added the stale This issue is stale. label Apr 1, 2022
@ReenigneArcher ReenigneArcher removed the stale This issue is stale. label Apr 3, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant