Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 11-25-2015, 08:01 AM   #41
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

The header version showcased by mpl is actually not the last version I proposed.

Here the last one:
ReaScript: Template Script, Header and Loops & ReaScript Updater Idea (step 1) - Cockos Confederated Forums

The difference is that versions infos is not in the header but in the changelog below,
and there is screenshots and instruction usage

Note that this header is based on WordPress plugins and and Themes header, a way to internally write metas which have proven to be efficient on more than 20% on the websites wolrdwibe.
It is humanly readable and can be easily parse by applications.
WordPress use this header to determine the version of the plugins you use, and check against the official repo to see if there was an update.

Because I wanted the changelog to be part of scripts, and to avoid information redondance, the changelog is written below the header, an efficient way (with YYYY-MM-DD iso date format.

I already build a scripts that can analyse this header.



So we can say it works, and it is eel/lua friendly. I use it in all my 270 scripts.

As you can see, I use a script to populate an spreadsheet that list all my scripts.
With spreadheets you can do things you can't easily do from a github repo, like building a responsive/searchable/filterable table from all your scripts database, and having a RSS feed for your updates.
This is things that are printed on my ReaScript Pack page. (The last updates section is printed from the RSS feed of my spreadsheet).

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).

Having a resource library as spreadsheet have some advantages:
  • Low maintenance needs (anyone who as branch conflict in git knows what I'm takling about). It is just a spreadsheet.
  • Coders free to choose their distribution platform (an individual link page could be added, with a link to the raw file for downloading the ressource - tssi can also be applied in script header) / gitlab / github / stash / ftp. This means independence.
  • No need to learn git for those who don't want to, or to be part of the team.

Having a git based resource repo do have an avantage:
  • A nice download zip button
The spreadsheet format (or at least XML format) resource based libraries is actually what most system I checked used. It worth taking a look at how code editor are doing it because there do it prettey well (Atom, Bracket, Notepad++)...



In order to see how an updater can be reproduced, I also tried to make some investigation about Lua Socket library.


Q: Lua Socket Installation - Cockos Confederated Forums


Indeed, we in fact already have a way to analyse a script header, it would be easy to make it scan a whole folder with subfolder and so the next step is just to access the spreadsheet with FTP. But sure if the project goes beyond a scripts updater, having an extension / third party program with more advanced GUI libraries would be far better.
But having an extension so that we can withing REAPER check, download, and install scripts without restart would be far more user-friendly.


Sorry if my answer is poorly construct, I lack of time to be fully invested, and this thread is going pretty fast.


In resume:
  • Common scripts header ?
  • Common integrated changelog format ?
  • Common GitHub or simple Spreadsheet ?
  • Udpater, Browser with individual ressource download or Full Pack Downloader ?
  • Focus on JSFX/ReaScripts or all kind of ressource ?
For the moment, I choose independence, but I'll follow this discussion with a lot of interest.


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 wish installing resource for REAPER would be as easy as within Atom. Package Browsing, individual download, auto-updates... This is cool


But once again, individual download may not be very nice for scripts and JSFX.


Waiting for your thought about all this !


--
can you remind me what is wrong with underscore in scripts names ?
X-Raym is offline   Reply With Quote
Old 11-25-2015, 09:35 AM   #42
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Thanks for reply, X-Raym. You already did a lot for extending REAPER capabilities and your opinion important for me and for this thread of course.

I`ll answer quickly to your questions for not to spend your time
Quote:
Common scripts header ?
I don`t really think this is important for user, because he don`t care what is inside code. So it is only techical needs for updater. I think, I`ll update all current scripts in repo by adding this header. And also future stuff must have this header (at least main info).

Quote:
Common integrated changelog format ?
Also agree. It will hard to remember initial release date, but I`ll try to do that also.

Quote:
Common GitHub or simple Spreadsheet ?
Udpater, Browser with individual ressource download or Full Pack Downloader ?
I note you never give user direct link to script he needs, but write approximately this "Download links : See my signature!" which means "Download all my stuff and find what you need".
Here my thoughts didn`t changed and they still closer to SWS kind of sharing.
So, 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 these 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).

Quote:
Focus on JSFX/ReaScripts or all kind of ressource ?
For this moment I suggest to concentrate attention only around scripts, and if it will be supported by community and if it will grow up, we`ll should think about another things (JS, OSCII-bot, Theme stuff maybe).


Quote:
what is wrong with underscore in scripts names
My habbit to use underscores was born only because of more readable github links (which is stupid I guess). It is also makes action list looks worse. So here is no problem, <author_script name.lua> format is OK for me.

I also tried to implement somehow download/unzip actions with Lua os.execute + command promt (natively with w7+ powershell) / terminal (natively with curl), but for now with no luck.

Last edited by mpl; 11-25-2015 at 11:43 AM.
mpl is offline   Reply With Quote
Old 11-25-2015, 01:53 PM   #43
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,910
Default

Quote:
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)

Quote:
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):

designer123_EverythingInBlue.theme
Code:
@desc A theme where everything is in shades of blue
@version 1.0
@changelog
  Increased contrast in the dark blue shades
  Fixed a red icon that sould have been blue
@source https://stash.reaper.fm/download.php?id=1234
Opinions?

Quote:
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.

Quote:
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
Old 11-25-2015, 03:03 PM   #44
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

Another quick note before a longer answer

@cfillion
Quote:
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)?
It is based on file name and path within the script folder.
that's all I know !

good luck with your research !
X-Raym is offline   Reply With Quote
Old 11-25-2015, 03:29 PM   #45
Lawrence
Human being with feelings
 
Join Date: Mar 2007
Posts: 21,551
Default

Spreadsheets work well enough, although if you're going to put scriipts in spreadsheets you probably alao need a column to cover any dependencies, like (if the case) what options or preferences need to be set and how to do whatever it does, when that's applicable.

Question: I haven't personally tried it, but do scripts "install" via drag and drop? I mean, if I drop a script file on Reaper's UI will it "install it", put it in the script directory and list it or do you have to manually copy it there?

Like somebody suggested earlier, when it comes to the masses in general is should probably be as easy as possible to find and just use, with minimal hassle.
Lawrence is offline   Reply With Quote
Old 11-25-2015, 04:24 PM   #46
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,910
Default

Quote:
Originally Posted by X-Raym View Post
It is based on file name and path within the script folder.
that's all I know !

good luck with your research !
Thanks for the hint! I whish it was just sha1($path) (or slight variations of thereof) but so far I couldn't produce a hash matching REAPER's...
I'll try again using WDL's own sha1 implementation next time, maybe I'll get lucky.

Quote:
Originally Posted by Lawrence View Post
Question: I haven't personally tried it, but do scripts "install" via drag and drop?
No


Last edited by cfillion; 11-25-2015 at 08:14 PM.
cfillion is offline   Reply With Quote
Old 11-25-2015, 09:32 PM   #47
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
we can't assume git will be available on every computer
What means "git is available" if we need only one direct link to download (as X-Raym have for his own pack in his siganture)? Do you mean not every man has internet to download small file or someone use Dial-Up connection?

Quote:
theoretical worst case scenario: a 10Gb theme repository re-downloaded every day
People install SWS even if they don`t need all of this stuff, but only ReaConsole, for example. I hardly browsed all known stuff in cockos forum, downloaded and unpacked as more scripts as possible. Final unpacked repo of 500+ scripts is 4MB (1MB zipped). And updates of whole repo could come monthly/half-year/never.

I may misunderstood you guys. Spreadsheet is just list of links + info, like just text database, right? If so I still think it is one more unnecessary stage for end user who wants to explore scripts stuff in work (not only by description), because a lot of them in the stash (for example spk77, it take me 5 hours to download/sort his scripts yesterday) which I guess you will refers from that spreadsheet will be in zip archive and it will needs to be unpacked firstly, then manually added. So that not means easy automated process of installation. It also will be hard to ask author of the content to use header, proper script titles, to fix bugs etc which all can be editable on git easily.

X-Raym,
Quote:
This is things that are printed on my ReaScript Pack page. (The last updates section is printed from the RSS feed of my spreadsheet).
(I tried to update page, it did work some time ago, last month maybe)


Last edited by mpl; 11-25-2015 at 10:07 PM.
mpl is offline   Reply With Quote
Old 11-25-2015, 10:06 PM   #48
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,910
Default

Quote:
Originally Posted by mpl View Post
What means "git is available" if we need only one direct link to download (as X-Raym have for his own pack in his siganture)? Do you mean not every man has internet to download small file or someone use Dial-Up connection?
I mean we can't simply run a "git pull" to update the copy of the repository on the user's computers, because git is probably not installed there. The entire resource collection must be redownloaded including files that were not modified since the last time, unless we keep track of the updates and install only what the users wants. It's not a show stopper but it's a bit inefficient in my opinion.

Quote:
Originally Posted by mpl View Post
If so I still think it is one more unnecessary stage for end user who wants to explore scripts stuff in work (not only by description), because a lot of stuff in the stash (for example) which I guess you will refers from that spreadsheet will be in zip archive and it will needs to be unpacked firstly, then manually added. So that not means easy automated process of installation.
The user doesn't use directly or even see the database/spreadsheet file by itself. It's is a single file that is downloaded regularly in the background by the installer and stays in the background.
The user should only have to interact with a searchable list of scripts sorted by category with buttons to install/update/uninstall, and a few settings (like auto-update on/off).

As for the remaining scripts in the stash, shouldn't we just host a copy of them in the repostory? This way the installer would not have to mess around with zip files it has unpack automatically.

Quote:
Originally Posted by mpl View Post
etc which all can be editable on git easily.
I'm not sure I understand what you mean by this?

Last edited by cfillion; 11-25-2015 at 10:13 PM.
cfillion is offline   Reply With Quote
Old 11-25-2015, 10:20 PM   #49
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
As for the remaining scripts in the stash, shouldn't we just host a copy of them in the repostory
Yes, I already ask spk77 about uploading his stuff to the repo (I already download / unpack / sort it properly), but he didn`t answered yet.
But as I understood, X-Raym says to host scripts only in their original place:
Quote:
Originally Posted by X-Raym View Post
Coders free to choose their distribution platform (an individual link page could be added, with a link to the raw file for downloading the ressource - tssi can also be applied in script header) / gitlab / github / stash / ftp. This means independence.
But really, why should we care about is links still works, is raw exists, is ftp accessible etc? That why I suggest to hold all of this in one place (at least as copy of original stuff).

Quote:
what you mean by this?
I just wanted to say, plain text more editable than zipped package. Sorry for my English.

I may not figured it properly, but if we say about spreadsheet it is a good idea if it comes with repo and used by updater. But it is hard to merge pull requests and edit this spreadsheet simultaneously. Maybe it should works with repo nominal versions (again like SWS), and not update with every commit. For example, collect all commits from some time period and manually give a sign to updater which will say "repo is updated, download me" or ask user "repo is updated, download?" + readable changelog of whole repo (which can hold info only about something big and leave small bugfixes)

Bad thing is I like X-Raym repo and I want him to be a part of this project, but I dont know is there a possibility to clone his repo into another common and keep it constantly updated from original OR maybe updater will merge while installing my git repo, X-Raym and common (other users) git repo, because I found our repos is biggest in Reaper community (there is also 70+ spk77 scripts I sorted, their sources placed in stash).

Last edited by mpl; 11-25-2015 at 11:34 PM.
mpl is offline   Reply With Quote
Old 11-25-2015, 11:31 PM   #50
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,910
Default

Quote:
Originally Posted by mpl View Post
I may not figured it properly, but if we say about spreadsheet it is a good idea if it comes with repo and used by updater. But it is hard to merge pull requests and edit this spreadsheet simultaneously.
I think too that maintaining such a file by hand is bad. Ideally it should be maintained automatically like Homebrew does to update their "bottles":

Example: https://github.com/Homebrew/homebrew...2d62ba58d9c55d

GitHub hooks: https://help.github.com/articles/about-webhooks/.

It does not seem too hard to implement, but the weak point is that the automatic maintainer bot must stay online permanently for free (if it goes down, spreadsheet updates goes down temporarily until somebody notice and fix... not ideal anymore)...

Quote:
Originally Posted by mpl View Post
Maybe it should works with repo nominal versions (again like SWS), and not update with every commit.
Yes that's a better idea at least for now (because it doesn't require to keep a bot/server online).

The difference is that instead of seeing one script updated every day, user would see a batch of 30 updates but only one day per month (no big deal right?).

Review of these two scenarios:

1/6. Pull request accepted and merged -> goes to the automatic script for processing
-- or --
1/6. Automatic release script is ran by a human maintainer every now and then

2. Does this pushes a new version of a script? (version metadata changed)
3. If yes, continue:
4. Insert the new version data in the database (download url and changelog)

5. A short while later the REAPER extension fetches the new database and notice the update
6. User is prompted "Version 2.0 of XYZ.lua is available! Update? <changelog since the version currently installed>"

EDIT: Here's a prototype of the database format I'm working on: http://sprunge.us/YaAC?xml Thoughts?
(It's made to be generated from the metadata in the script's headers, either automatically by a bot or semi-automatically by a tool ran once in a while by a human being)

Last edited by cfillion; 11-25-2015 at 11:56 PM.
cfillion is offline   Reply With Quote
Old 11-25-2015, 11:57 PM   #51
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Prompt user about every script update could be way much annoying than promt about whole update (official update of whole repo can be pushed manually by me, for example). And updater can mark script in list which has update (and doubleclick can show changes from installed version and update button).

Last edited by mpl; 11-26-2015 at 12:28 AM.
mpl is offline   Reply With Quote
Old 11-26-2015, 12:33 AM   #52
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 4,910
Default

You're right. Maybe it should be a setting?

[ ] Disable automatic update checking
[x] Check at startup for major repository-wide release (default)
[ ] Enable minor updates (check at startup only too)
[ ] Completely prevent music making and normal REAPER use by checking every two seconds!

It's getting a bit more complex:

Code:
-> time ->
minor = v1    v2   v3   v4   v5  -  v6
major = -  v1 -    -    v4   -  v5
Personally I like to receive updates frequently but I understand how annoying it can get for some users not caring for these sort of things.

EDIT: With such a setup, when a major release user installs a script for the first time, should he get the "older" version from the current major release or the latest one with the possibility to upgrade manually?

Last edited by cfillion; 11-26-2015 at 12:54 AM.
cfillion is offline   Reply With Quote
Old 11-26-2015, 12:45 AM   #53
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

(edited) I still think user shouldn't care about all of that. He only should download installer once and use search in action list later as he use native actions or SWS.

So the updater/manager may only roughly replace repo with new one by getting official release pushed by some team member manually, replace all files whatever they updated or not (I suppose new version of any script is better than previous so it should always keep being updated). All "info" stuff (spreadsheets etc) we discussed here useful for scripters mainly, except script description (which manager tool could shows by selecting script in list and click on its menu, for example). So I think future manager should mainly operate including scripts from pack into action list rather than think what to do with new versions. To close "updates" discussion we could just make "manual/auto-update/check on reaper start" check in manager settings and dont make user head explode with strange settings like major/minor updates etc.

That`s base we firstly should start to make, I think. If we will speak a lot about potential deep functionality, we will never build something but only will discussing. Sorry for pointed this, I really want to implement this somehow just to let this project evolution begin, and not like X-Raym ideas were really cool but after 8 months nothing was implemented. Unfortunately my knowledges about C++ is very limited now, so I hope cfillion will build simple manager before I spent 1-2 years to figure how to build extension for this.

I also start adding headers from X-Raym template, currently only FX section has it.

Last edited by mpl; 11-26-2015 at 05:15 AM.
mpl is offline   Reply With Quote
Old 11-26-2015, 01:12 AM   #54
EpicSounds
Human being with feelings
 
EpicSounds's Avatar
 
Join Date: Jul 2009
Posts: 7,562
Default

outside perspective - user should be able to request an updated list from the server, download the scripts that are interesting. Manually request an updated list at another date and be notified somehow if the installed scripts are changed in current list. New additions should be updated as well.
Never auto update, never searching for updates without permission.
__________________
REAPER Video Tutorials, Tips & Tricks and more at The REAPER Blog
EpicSounds is offline   Reply With Quote
Old 11-26-2015, 12:32 PM   #55
Lannister
Human being with feelings
 
Lannister's Avatar
 
Join Date: Jan 2014
Location: Norway
Posts: 140
Default

Quote:
Originally Posted by EpicSounds View Post
outside perspective - user should be able to request an updated list from the server, download the scripts that are interesting. Manually request an updated list at another date and be notified somehow if the installed scripts are changed in current list. New additions should be updated as well.
Never auto update, never searching for updates without permission.
This would be really cool to have
Lannister is offline   Reply With Quote
Old 11-26-2015, 02:39 PM   #56
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

spk77 allowed me to add his scripts to the repo, so I hardly browsed Cockos forum/stash, sorted, properly named, merged scripts with imported functions and added 70+ new scripts (not all, some of them I`ll add later).

Just to compare:

Last edited by mpl; 11-26-2015 at 02:46 PM.
mpl is offline   Reply With Quote
Old 11-26-2015, 04:23 PM   #57
planetnine
Human being with feelings
 
planetnine's Avatar
 
Join Date: Oct 2007
Location: Lincoln, UK
Posts: 7,917
Default

mpl, what do you recommend for a group of scripts that need to be used together? add a zip file? or is there a way to link a set of actions?



>
__________________
Nathan, Lincoln, UK. | Item Marker Tool. (happily retired) | Source Time Position Tool. | CD Track Marker Tool. | Timer Recording Tool. | dB marks on MCP faders FR.
planetnine is online now   Reply With Quote
Old 11-26-2015, 07:48 PM   #58
Lawrence
Human being with feelings
 
Join Date: Mar 2007
Posts: 21,551
Default

Quote:
Originally Posted by cfillion View Post
No
Thanks. Imo, products that do drag and drop should probably always do something convenient with any of it's supported formats, drag and drop. If you drop a lua script or whatever, it should probably copy it to the script directory and refresh the script directory (if the latter is necessary to list it right away).
Lawrence is offline   Reply With Quote
Old 11-26-2015, 08:25 PM   #59
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
Originally Posted by planetnine View Post
mpl, what do you recommend for a group of scripts that need to be used together? add a zip file? or is there a way to link a set of actions?
>
Merge them. As Breeeder/spk77 Glue tool in Item folder, for example. I know, that is better to use imported stuff like spk77 use classes, but it will be difficult to separate regular scripts and functions it needs.

CopyPaste scripts or something is OK in repo, I think. Description should be always in header though (or GUI if possible).

Last edited by mpl; 11-26-2015 at 08:35 PM.
mpl is offline   Reply With Quote
Old 11-27-2015, 07:59 AM   #60
planetnine
Human being with feelings
 
planetnine's Avatar
 
Join Date: Oct 2007
Location: Lincoln, UK
Posts: 7,917
Default

I have two one-shot scripts that are driven from a custom action (stretch-marker displacement), and a deferred script that can be used with them. They really need to be offered as a set, and aren't really useful at all standalone. Is there no mechanism in Github for that?

I appreciate Github is for collaborative coding rather than user distribution, but I could do with offering a linked group of tracks for this one.



>
__________________
Nathan, Lincoln, UK. | Item Marker Tool. (happily retired) | Source Time Position Tool. | CD Track Marker Tool. | Timer Recording Tool. | dB marks on MCP faders FR.
planetnine is online now   Reply With Quote
Old 11-27-2015, 11:34 AM   #61
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Well, here can`t say anything.
There is my Quantize Tool in repo ("/Misc") and midi/osc control for it, which is different scripts, but it is looks like linked stuff. So maybe only good description is enough.

Last edited by mpl; 11-27-2015 at 11:57 AM.
mpl is offline   Reply With Quote
Old 11-27-2015, 11:38 AM   #62
spk77
Human being with feelings
 
Join Date: Aug 2012
Location: Finland
Posts: 2,668
Default

Hmmm, what if there are f.ex. png files included?

"Track IO mixer" zip file contains all these:
spk77 is offline   Reply With Quote
Old 11-27-2015, 11:56 AM   #63
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

It works if uploading from GitHub App.

https://github.com/ReaTeam/ReaScript...ixer%2014nov15

Also found this
mpl is offline   Reply With Quote
Old 11-27-2015, 12:07 PM   #64
Lawrence
Human being with feelings
 
Join Date: Mar 2007
Posts: 21,551
Default

Hey guys, take a look at Visual Studio's "code snippet" format.

It's xml formatted to contain all relevant metadata plus a "block" that holds the actual code, which in our case would be the script itself. I'll fire up VS and post one so those without VS can see the format. Seems like something similar would be near perfect for sharing scripts with metadata.

Edit: Here's a sample below. As you can see, the file contains all relevant metadata that might be used for browsing or listing. Title, Author, Description, etc, etc. You could click on something like this in Reaper and see all of those details before grabbing or installing a script and the XML code block could hold any kind of code, Lua, whatever... because it also identifies the code in the tags.

Code:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
	<CodeSnippet Format="1.0.0">
		<Header>
			<Title>checked</Title>
			<Shortcut>checked</Shortcut>
			<Description>Code snippet for checked block</Description>
			<Author>Microsoft Corporation</Author>
			<SnippetTypes>
				<SnippetType>Expansion</SnippetType>
				<SnippetType>SurroundsWith</SnippetType>
			</SnippetTypes>
		</Header>
		<Snippet>
			<Code Language="csharp"><![CDATA[checked
                	   {
                	    CODE GOES HERE
                	   }
                        ]]>
			</Code>
		</Snippet>
	</CodeSnippet>
</CodeSnippets>
The really cool thing about snippets (unrelated to this) is the shortcut tag. Type the shortcut word or phrase and it will drop the code block in.

Last edited by Lawrence; 11-27-2015 at 12:20 PM.
Lawrence is offline   Reply With Quote
Old 11-27-2015, 12:47 PM   #65
planetnine
Human being with feelings
 
planetnine's Avatar
 
Join Date: Oct 2007
Location: Lincoln, UK
Posts: 7,917
Default

Sorry guys, this isn't getting any clearer. I don't have a lot of time to learn Github and I haven't a clue what to do with it.


>
__________________
Nathan, Lincoln, UK. | Item Marker Tool. (happily retired) | Source Time Position Tool. | CD Track Marker Tool. | Timer Recording Tool. | dB marks on MCP faders FR.
planetnine is online now   Reply With Quote
Old 11-27-2015, 12:55 PM   #66
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Well, I don`t have much time too, but I can just hold repo and periodically update it manually if you haven`t a lot of time to learn it. I use git app for windows to make process of updating as less painfull as possible. I use a lot of user created stuff since I dicovered REAPER, and I searched a lot for this - forum threads, asking stupid questions etc. From my point of view - best thing here is all stuff is one place, so user can quickly extract what he only needs, than everytime search forum hardly and not get he wants often because of bad searching skills, for example.

Last edited by mpl; 11-27-2015 at 01:01 PM.
mpl is offline   Reply With Quote
Old 11-27-2015, 01:09 PM   #67
planetnine
Human being with feelings
 
planetnine's Avatar
 
Join Date: Oct 2007
Location: Lincoln, UK
Posts: 7,917
Default

Im cool with the principle, mpl, I just don't know how to make it work, what the app and the shell do, how to add stuff etc...



>
__________________
Nathan, Lincoln, UK. | Item Marker Tool. (happily retired) | Source Time Position Tool. | CD Track Marker Tool. | Timer Recording Tool. | dB marks on MCP faders FR.
planetnine is online now   Reply With Quote
Old 11-27-2015, 01:18 PM   #68
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Since I don`t speak English it would be hard to explain, maybe someone sometime somewhere will make a tutoial how to use this and why it is de-facto standart of developement platform. Basics looks like this:
clone repo -> do changes -> create pull request -> wait for review and accept

Last edited by mpl; 11-28-2015 at 04:10 AM.
mpl is offline   Reply With Quote
Old 11-28-2015, 02:23 AM   #69
spk77
Human being with feelings
 
Join Date: Aug 2012
Location: Finland
Posts: 2,668
Default

mpl has sent me an invitation, but I can't "see" it anywhere (on my github account).

I guess I should also receive an email:
If the user is not a member of your organization, they'll receive an email inviting them to the organization. They will need to accept the invitation before becoming a member of the organization.
spk77 is offline   Reply With Quote
Old 11-28-2015, 03:37 AM   #70
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Are you sure git notifications didn`t marked as spam messages in your email or maybe your acc isn`t spk77?



Lawrence, I don`t know what is the best way to use header. I mean, can X-Raym example header be readable by future extension, or it should have another synthax?

Last edited by mpl; 11-28-2015 at 06:48 AM.
mpl is offline   Reply With Quote
Old 11-28-2015, 05:15 AM   #71
planetnine
Human being with feelings
 
planetnine's Avatar
 
Join Date: Oct 2007
Location: Lincoln, UK
Posts: 7,917
Default

I can't remember the wording, but I didn't recognise mine as an invitation at first and it got buried



>
__________________
Nathan, Lincoln, UK. | Item Marker Tool. (happily retired) | Source Time Position Tool. | CD Track Marker Tool. | Timer Recording Tool. | dB marks on MCP faders FR.
planetnine is online now   Reply With Quote
Old 11-28-2015, 06:20 AM   #72
spk77
Human being with feelings
 
Join Date: Aug 2012
Location: Finland
Posts: 2,668
Default

Quote:
Originally Posted by mpl View Post
Are you sure git notifications didn`t marked as spam messages in your email or maybe your acc isn`t spk77?



Lawrence, I don`t know what is the best way to use header. I mean is X-Raym examlple header can be readable by future extension, or it should have another synthax?
Oh yes! That's not my account, it's spk1977, sorry about that.

Edit: This is my github account: https://github.com/spk1977
spk77 is offline   Reply With Quote
Old 11-28-2015, 06:26 AM   #73
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Now it should be ok
mpl is offline   Reply With Quote
Old 11-28-2015, 06:28 AM   #74
spk77
Human being with feelings
 
Join Date: Aug 2012
Location: Finland
Posts: 2,668
Default

Joined!
spk77 is offline   Reply With Quote
Old 11-28-2015, 06:44 AM   #75
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

@mpl
Oh thanks for the bug report on my site, I saw that few days ago and it is corrected now,
My bad :P
----
I think that users should always last versions of the scripts and pack, to avoid useless bug reports of things already fixed or obsolote.
Also, some code fixes/enhancement is not a big deal at script pack level, but can do a huge diffrrence at script level. And because it is all about showing script power... You get the idea.
Thats why a never link to individual script file. Just to the master one.
Maybe it is better to only have one big pack, like a big extension... Easier to manage for users and maintainers.
just thinking...
X-Raym is offline   Reply With Quote
Old 11-28-2015, 06:55 AM   #76
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 7,215
Default

Now I have seen the email notification to join the group and joined. Thanks for the invite
heda is offline   Reply With Quote
Old 11-28-2015, 07:01 AM   #77
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

Based on my previous post:
So the idea of a script manager would be to
- check the github status
- see if there is new commit
- download pack if there is
- extract pack
- import new scripts in action list (or all for first install)
- delete obsolote ones

Scripts header is still useful for
- storing metas
- storing individual instructions/compatibilty etc
- storing changelog

This make le think that a common repo is easier. Easier to check new commit that checking everyones github Or stash account.

Still thinking about this. :P
X-Raym is offline   Reply With Quote
Old 11-28-2015, 07:09 AM   #78
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

Quote:
Originally Posted by X-Raym View Post
see if there is new commit
It is bad idea (check previous posts).
There could be a lot commits even per hour! So I think information about major update of whole repo should going to user after manually pushing this update via date, for example (so updater after every REAPER run (optionally) will check current date and compare it with some file inside repo says about release date). Or update could be checked manually by user via manual downloading zip from GitHub or something like "Update" button inside extension (which automatically will download and extract archive).

I absolutely agree that every script needs header. What I don`t know is what synthax should be used to make header readable by extension. That why I stopped updating headers one by one manually.

(edit) As I said above inserting all scripts stuff into Action List make Action List grows dramatically. So main point of script manager should be editing action list than adding/removing files or other file operations. This actually can be done by script (except download/zip, I don`t know how to do it natively in Lua), although extension is better as every direct way to do something if possible.

Last edited by mpl; 11-28-2015 at 07:31 AM.
mpl is offline   Reply With Quote
Old 11-28-2015, 07:34 AM   #79
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,866
Default

@mpl
Oh yes of course to not be invasive we could set 'regular tile period checker' (like at every reaper startup like SWS and REAPER updates, but only one check per day, or per week etc), but based on commit would be IMHO better than 'on major uptades'. A part new comments in code, every updatew are major as tbey can fix important bugs. This ks how we differ from extensions builder: we don't need compilation (aka 'major updates' to push new things.
So checking based on regular period of time and 'check is there is new commit' is perfect I thing, easy to maintain, easy to check, and can provide updates quickly.

For scriots header, it will be good to stay at what we started as it is already on 300-400 scripts... Would be such a pain to rewrite them all.
X-Raym is offline   Reply With Quote
Old 11-28-2015, 07:41 AM   #80
mpl
Human being with feelings
 
mpl's Avatar
 
Join Date: Oct 2013
Location: Moscow, Russia
Posts: 3,956
Default

To add at least empty header, I`ll write script for adding this, but I will still should edit it manually (we have already 142 files...).
mpl is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 02:41 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.