-
-
Notifications
You must be signed in to change notification settings - Fork 208
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
Make GitHub version checker public for plugins #59
Comments
👍 |
I've seen that some code for markdown manipulation was checked in recently. But it should be adopted to work with plugins as well... So we're talking about |
As checking for new version is source control system dependent, it should be implemented in IGithubPlugin and ICodeplexPlugin interface so that it would be possible to check on respective source control system for updates. As for markdown display, I added something to format it correctly. Well, at least, the maximum I can do since github markdown seems to be a specific implantation of markdown. |
This brings up an interesting design decision. I created the ICodeplexPlugin and IGithubPlugin for the toolbox to be able to show ratings of plugins. This requires the developer to declare and implement the interface. Ideally (IMHO) we would create an IVersionChecker (or preferably some bettered named interface, naming things is hard), that both ICodeplexPlugin and IGitHubPlugin can implement. That way the calling code just cares that it implements IVersionChecker, not if its an IGitHubPlugin or an ICodeplexPlugin, and if someone manages to host something on their own public website, they could still implement the interface. |
It sounds like @rappen is talking about creating an abstract GithubPluginBase for the toolbox that implements version checking automagically, and a way to display release notes. I like the idea but thought it would be a good idea to brainstorm where that will lead us to. It might be better to have some other class that performs the actual version check logic besides the Plugin itself. the Plugin can expose a property of the class, but it doesn't have to be able to implement the interface itself. The beautiful part about the PluginBase is we can change the IPlugin interface and as long as the PluginBase provides an implementation, no one who inherits from the PluginBase will break. |
Jedi mind tricks shell perform I, so it will be abstract |
Unless we want to do some other class that the plugin base can expose as a property. That way if a plugin doesnt inherit from plugin base, they could still potentially reuse your logic... |
My advice is to allow impementing Autoupdate does not have to be mandatory. |
Are you saying that we should only support Github as a repository for XrmToolBox plugins? I have the code to check a new version on CodePlex but what if other repositories are used? |
It could be different well known code hosting sites, I'm just suggesting a principle of version detection. |
IMHO I think the basic solution @MscrmTools (and me) is using by having a naming convention for the |
I would put ourselves to @rappen's hands as soon as he has an active request for this feature. 💯 |
I will probably not have the time to implement this in near future. Making my own version of this in FXB until we have a common way of handling this. |
About this one, I can expose the class publicly. I just noticed that I check for any new version, even if it is a prerelease. Do we agree I should check only for release and not for pre release as well? |
Agree. Only Release. |
Got it! Updated too! |
I noticed the version checking in XTB and thought this could be implemented in plugins too.
It would probably be quite easy to make it a bit more dynamic (repo name, download url etc) and a public method that can be called from plugins that reside on GitHub and want to use it.
I also think it is possible to implement a markdown to rtf conversion to be able to display the release notes a bit nicer.
I'd gladly implement this if I get the chance :)
The text was updated successfully, but these errors were encountered: