Comments (17)
👍
from xrmtoolbox.
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 PluginBase
extension that will check new version of current plugin, right?
from xrmtoolbox.
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.
from xrmtoolbox.
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.
from xrmtoolbox.
from xrmtoolbox.
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.
from xrmtoolbox.
Jedi mind tricks shell perform I, so it will be abstract GithubPluginBase
that extends PluginBase
and implements IGitHubPlugin
?
from xrmtoolbox.
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...
from xrmtoolbox.
My advice is to allow impementing IUpdatable
interface. This interface will require one field -- Github repo and a branch name. This branch should contain plugin.json
with semver
version.
Autoupdate does not have to be mandatory.
from xrmtoolbox.
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?
from xrmtoolbox.
It could be different well known code hosting sites, I'm just suggesting a principle of version detection.
from xrmtoolbox.
IMHO I think the basic solution @MscrmTools (and me) is using by having a naming convention for the tag_name
field on the release is quite good enough. It worked with CodePlex, it works with GitHub, and it is OOB in that sense.
The level of abstraction / interfacing is another question, my first approach would have been to just expose the existing method as public and adding parameters to look up the repo...
Might be a bit "unfancy", but works ;)
from xrmtoolbox.
I would put ourselves to @rappen's hands as soon as he has an active request for this feature. 💯
from xrmtoolbox.
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.
I will implement it in a more generic way though, by adding user and repo as input parameters to the version checker.
Commit for FXB here: rappen/FetchXMLBuilder@c5cc598
from xrmtoolbox.
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?
from xrmtoolbox.
Agree. Only Release.
I guess only github-user and -repo is necessary as parameters to the public method. I also noticed the download link was static, not based on user/repo.
from xrmtoolbox.
Got it! Updated too!
from xrmtoolbox.
Related Issues (20)
- Add Average DL Download
- No Plugin will Install HOT 4
- User Settings Utility - Error when connecting to On-Prem CRM 2016 Instance HOT 7
- Slow Starting and Tool update issues HOT 1
- [BUG] Dll of tool is not getting installed HOT 2
- when i start the xrm toolbox its showing error xrm toolbox is not yet initinalized and also when i open configuration toolbox its shwoing that xrm toolbox is not yet initialized wait few second i don't know whats problem but i try many methods and and also download and restart many time but found still same issue[BUG] HOT 3
- [BUG] App wont Launch due to Invalid DockState HOT 4
- Could not load file or assembly CINTEROS.XRM.FETCHXMLBUILDER.DLL HOT 1
- MessageWidth/Height is semi-respected
- Unable to connect: Method not found [BUG] HOT 7
- [BUG] Issue with Missing XrmToolBox Dependency in NuGet Package HOT 6
- [BUG] Inquiry Regarding Pending Registration Status of My Tool HOT 4
- XRMtoolbox issue after updating to new version HOT 1
- [BUG] Connection mix between 2 environments and 2 users
- XRM
- XrmToolBox
- Latest Version with Tool library failed HOT 2
- Unable to use XrmToolBox
- [BUG] Cannot authenticate to Dataverse - A Dataverse sever name is required
- Unsanitzed Input Leading to Command Injection [BUG]
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xrmtoolbox.