Off Topic Discussion - ShepherdDev/rock-misc GitHub Wiki
All Rock Plugins will be identified by a rockplugin.json
or rockplugin-XYZ.json
file in either the root repository folder. In addition to format of the project file as discussed here there would be an additional, optional, field called paths
. This would be an array to any paths that relate to this plugin. If empty or absent then root directory
is assumed.
Example 1
rockplugin.json
{
"name": "Workflow Additions"
...
}
This would indicate that the plugin located in the root folder (implying a non-monolithic repository) is the Workflow Additions
plugin.
Example 2
rockplugin-room.json
{
"name": "Room Management",
...
"paths": ["com.centralaz.RoomManagement", "RockWeb/Plugins/com_centralaz/RoomManagement"]
}
This would indicate that the plugin called Room Management
has files in the /com.centralaz.RoomManagement
path as well as /RockWeb/Plugins/com_centralaz/RoomManagement
path.
Scraping
A repository is registered with the scraper by having the rock-rms
tag on it.
Repositories are scraped by using the GitHub API which allows listing of files in a particular branch.
The scraper will then periodically check all branches for files matching the rockplugin.json
or rockplugin-*.json
names and process them. If the branch is master
then the plugin is considered to be in a stable state, otherwise it is considered to be in some form of development/testing.
Note: We reserve the right to limit branch scraping in the future. We recommend you conform to standards of using
develop
,develop-
prefix orfeature-
prefix when doing feature development.
New Monolithic Repositories
If you really really really want to function in a monolithic structure then you need to adhere to a few rules to help keep this organized for the scraper and other developers.
- The
master
branch is reserved for "release" ready code. - Branching strategy should follow:
- master
- develop-plugin-a
- develop-plugin-b
Work is done and committed to the develop-xyz
branches and when ready for release, merged into the master
branch. You may also use feature-
branches if you have multiple people working on a single plugin, in which case we recommend something like feature-dh-plugin-a-feature_name
where dh
== initials of the feature author.
Migrating Existing Monolithic Repositories
TBD
- It appears that github allows for renaming of branches fairly easily.