-
Notifications
You must be signed in to change notification settings - Fork 10
How to get your app framework etc listed
For the sake of brevity, I'll refer to your app/framework/etc simply as your "project".
- Fork the Ramen repo on GitHub.
- Add your project's install configuration to
index/index.json
, and add an install script (optional, see below) to theindex/
folder. - Submit a pull request to have your changes integrated into the canonical repository. Once accepted, this publishes your project and it is instantly available (client caching notwithstanding) for installation via Ramen.
Install configuration is a single master JSON file (index/index.json
), which clients download (unless they're overriding and using a custom repo index file) to list available projects and tell Ramen how to download what it needs to install your project. For example, here is a simplified section of the index for one of my projects, Taffy:
{
"name": "Taffy",
"desc": "A framework for creating REST API's with extremely terse, object-oriented code.",
"icon": "",
"versions": [
{
"name": "Bleeding Edge Release (BER)",
"desc": "The BER is the absolute latest available code. Possibility of bugs, but latest features!",
"install": "https://raw.github.com/CFCommunity/ramen/master/index/taffy.ber.cfm",
"require": [
{
"name": "location",
"label": "Install Location:",
"type": "folder",
"default": "{webroot}"
}
]
}
]
}
Not included in the code sample above, projects are categorized. Each category has an array of "apps", and each app is a structure resembling the one in the above sample. If you feel strongly that a new category should be added in which your project would be listed, go ahead and create it. You may want to contact us first just to make sure it'll be accepted so you don't have to change it later. For example, we won't accept a category named, "OMG TEH BESTEST!!1".
For a full explanation of everything your configuration needs to have and can make use of, see Install Configuration.
An install script is a simple CFM template that Ramen can download and execute, which in turn downloads and installs your project. In its simplest (perhaps over-simplified) form, it could resemble the following:
<cfset ramen.namespace("taffy") />
<cfset ramen.download("https://github.com/downloads/atuttle/Taffy/taffy-v1.1.zip", "taffy-1.1.zip") />
<cfset ramen.unzip("taffy-1.1.zip", ramen.getParams().location) />
<cfset ramen.cleanup() />
As you can imagine, if your project has a complex installation this script could get much more complex. Its content is entirely up to you.
And of course, if installing your project is as simple as dropping a folder somewhere, you could end up adding a slightly modified copy of the above script. That would not be very DRY, would it?! That's why we've also implemented Scriptless Installs, wherein you only add the JSON config and make use of Ramen's reusable standard installer
.