View Single Post
Old 11-25-2015, 01:53 PM   #43
Human being with feelings
cfillion's Avatar
Join Date: May 2015
Location: Québec, Canada
Posts: 3,063

Originally Posted by X-Raym View Post
Also note that checking a script collection against a simple spreadsheet may be easier than checking against a full repo, which would require to check individual files header for a potential script update (unless you plan to make it redownload all files everytime).
I think the manager could work like this:
  1. The metadata in the headers is checked for validity before even being merged in the repository (done but I used eel/greasemonkey/doxygen's syntax – should be easy to adapt to Wordpress syntax)
  2. Each new commit (not the whole repository, thanks to GitHub Hooks) is processed by an automatic script which parses only the modified files and updates a XML database (todo)
  3. The Package Manager extension downloads that database every few days (the download thing is partially done, "every few days" is todo)
  4. Only scripts the user wants to use (EDIT: and dependencies) are downloaded from the repository or from elsewhere (optional Source-URL metadata?)
  5. History of old versions with their changelogs is kept in the XML database (maybe limited to X versions behind so it doesn't grow too much?)
Optional Source-URL metadata can be useful for themes and other non plain-text stuff that souldn't be hosted in a git repository.
EDIT: Or when there is a different file to download depending on the platform (eg. native extensions)

Originally Posted by X-Raym View Post
Note: IMO, individual download would be the best if this thing is meant to evolves with other kind of resource such as projects templates, configzip and theme. and because these doesn't have header to be parsed, spreadsheets, with the last version colum, seems the only way to push updates.
I thought about using files containing only metadata like this to keep track of this kind of content (the parser for this syntax is ready to be used but if Wordpress-like is prefered it can be changed):

@desc A theme where everything is in shades of blue
@version 1.0
  Increased contrast in the dark blue shades
  Fixed a red icon that sould have been blue

Originally Posted by X-Raym View Post
can you remind me what is wrong with underscore in scripts names ?
Because if the username may contain an underscore and the script name may too, the computer can't easily tell them apart.

Originally Posted by mpl View Post
Here my thoughts didn`t changed and closer to SWS kind of sharing. Github only as hosting for the whole repo, and some installer, which will:
1) download and unpack repo to /Reaper/Scripts/
2) add manager to extensions
3) while installing let user choose scripts to add to Action List by author/category/single (like Waves installer) and store this settings for future updates
to make install process being simple for end user.
Future updater (can be "silent") can use check/uncheck system to download all repo, but add to Action List only couple of scripts, for example only envelope scripts or scripts only from spk77 or just some checked scripts and keep them up-to-date (but actually whole repo should be updated).
I don't agree with the idea of sending the whole repository content to everyone every time because we can't assume git will be available on every computer. The whole zip archive would need to be redownloaded and extracted at each "daily" refresh right?
Even if it is done in the background it would eat more bandwidth and disk space for stuff the user doesn't want/need anyway (theoretical worst case scenario: a 10Gb theme repository re-downloaded every day).

It also make partial upgrade (option to not upgrade a single script right now) harder (well it probably just requires to make an extra copy of the version in use in the Script directory and putting the whole up-to-date repository somewhere else). EDIT: And downgrading very hard.

The zip archive way has a clear advantage to the database way though: the possibility to register scripts in the Action List later without an internet connection.
Speaking of which, has anyone tried to do this registering thing yet? Can the RS<sha1> identifier be anything (I can't figure out what REAPER is generating it from)? Does reaper has to be restarted for the changes in reaper-kb.ini to take effect?

Anyway on my side I'll continue working on converting a XML database to a usable package list structure in memory for the C++ extension, and a rudimentary package list dialog to start with just in case.

Last edited by cfillion; 11-25-2015 at 03:06 PM.
cfillion is offline   Reply With Quote