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 or feature- 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.

  1. The master branch is reserved for "release" ready code.
  2. 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.