Hi Marcus,

We have considerable progress on an enhanced plugin system for Avo2. This would 
potentially include the input generators and format scripts as well.

Here's the question for debate. I have Ethan starting to work on the plugin 
manager. More details are below for those interested.

Option 1: He can either make a call to GitHub API to get a zip of the release:
https://developer.github.com/v3/repos/releases/#get-the-latest-release

Now he needs to decompress everything recursively into a user directory. This 
needs code (e.g., LibArchive) as another dependency.
(Maybe Kitware already has code that handles tars or zips cross-platform?)

Option 2: He writes code to recursively download all the files in a repository 
directory using the GitHub API.

Option 3: We add a dependency on LibGit2

Thoughts? Should we just add LibArchive as a third party dependency?
-Geoff


More Details:
People will be able to open up a "Plugin Manager" feature in Avogadro and find 
new types of scripts and/or updates to their installed scripts. Each plugin 
would then live in its own repository, and we can use GitHub API (or other web 
API) to poll for releases.

Plugin Repository 
(example 
https://github.com/paulboone/avogadro-plugin-examples/tree/scikit-nano/scikit-nano)
 - plugin.json - metadata about the plugin, including user description and list 
of command files
 - requirements.txt - required packages (e.g., numpy for python)
.. possibly multiple commands

This makes it fairly easy to have a plugin that uses a larger Python package 
(e.g., cclib, ASE, RDKit, etc.) and offer multiple commands.

It also means plugin authors have freedom to package extra files and dirs in 
whatever layout they want. But we need to download a whole subdirectory.


------------------------------------------------------------------------------
_______________________________________________
Avogadro-devel mailing list
Avogadro-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/avogadro-devel

Reply via email to