diff --git a/.gitignore b/.gitignore index 8bfec3e..93f1361 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ node_modules npm-debug.log -index.js diff --git a/contributing.md b/contributing.md index d398520..125417e 100644 --- a/contributing.md +++ b/contributing.md @@ -2,6 +2,12 @@ We welcome contributions. Please provide pull requests and notify @springmeyer for review. +### Changing index.js + +Do not change index.js directly as it is generated. Modify index._ instead and run +`node generate.js` instead. If the node binary is differently named on your operating +system (e.g. nodejs) use that instead. + ### Releasing 1) Create a milestone for the upcoming release @@ -50,4 +56,3 @@ NOTE: make sure your git checkout is clean first: `git status` should show no ch ```bash npm publish ``` - diff --git a/index._ b/index._ index c3d6824..35eb297 100644 --- a/index._ +++ b/index._ @@ -1,3 +1,8 @@ +/* +THIS FILE IS GENERATED PROGAMMATICALLY. DO NOT MODIFIY DIRECTLY. +Modify index._ instead and run node generate.js +*/ + var path = require('path'); var semver = require('semver'); diff --git a/index.js b/index.js new file mode 100644 index 0000000..158da93 --- /dev/null +++ b/index.js @@ -0,0 +1,124 @@ +/* +THIS FILE IS GENERATED PROGAMMATICALLY. DO NOT MODIFIY DIRECTLY. +Modify index._ instead and run node generate.js +*/ + +var path = require('path'); +var semver = require('semver'); + + +var versions = [ + '2.0.0', + '2.0.1', + '2.0.2', + '2.1.0', + '2.1.1', + '2.2.0', + '2.3.0', + '3.0.0', + '3.0.3', + '3.0.6' +]; + +// These older versions don't have the datasource info +var no_datasources = [ + '2.0.0', + '2.0.1', + '2.0.2', + '2.1.0', + '2.1.1', + '2.2.0' +]; +module.exports.versions = versions; +module.exports.latest = versions[versions.length - 1]; + +var getSatisfyingVersion = function (wanted) { + var version = semver.maxSatisfying(versions, wanted), parsed; + if (!version) { + try { + parsed = semver(wanted); + parsed.patch = 'x'; + version = semver.maxSatisfying(versions, parsed.format()); + } catch (err) { + version = null; + } + } + return version; +}; + +var loadBrowser = function (version) { + var versionRefs = { + '2.0.0': { + 'ref': require('./2.0.0/reference.json'), + 'datasources': null + }, + '2.0.1': { + 'ref': require('./2.0.1/reference.json'), + 'datasources': null + }, + '2.0.2': { + 'ref': require('./2.0.2/reference.json'), + 'datasources': null + }, + '2.1.0': { + 'ref': require('./2.1.0/reference.json'), + 'datasources': null + }, + '2.1.1': { + 'ref': require('./2.1.1/reference.json'), + 'datasources': null + }, + '2.2.0': { + 'ref': require('./2.2.0/reference.json'), + 'datasources': null + }, + '2.3.0': { + 'ref': require('./2.3.0/reference.json'), + 'datasources': require('./2.3.0/datasources.json').datasources + }, + '3.0.0': { + 'ref': require('./3.0.0/reference.json'), + 'datasources': require('./3.0.0/datasources.json').datasources + }, + '3.0.3': { + 'ref': require('./3.0.3/reference.json'), + 'datasources': require('./3.0.3/datasources.json').datasources + }, + '3.0.6': { + 'ref': require('./3.0.6/reference.json'), + 'datasources': require('./3.0.6/datasources.json').datasources + } + }; + + var ref = versionRefs[version].ref; + if (no_datasources.indexOf(version) <= -1) { + ref.datasources = versionRefs[version].datasources; + } + + return ref; +}; + +var load = function (version) { + var ref = require(path.join(__dirname, version, 'reference.json')); + if (no_datasources.indexOf(version) <= -1) { + ref.datasources = require(path.join(__dirname, version, 'datasources.json')).datasources; + } + + return ref; +}; + +module.exports.load = function(wanted) { + var version = getSatisfyingVersion(wanted), + ref; + if (!version) { + throw new Error("Unknown mapnik-reference version: '" + wanted + "'"); + } + if (process.browser) { + ref = loadBrowser(version); + } + else { + ref = load(version); + } + + return ref; +} diff --git a/package.json b/package.json index b3f8b5c..0305c37 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,7 @@ "url": "git://github.com/mapnik/mapnik-reference.git" }, "scripts": { - "test": "mocha -R spec --timeout 50000", - "prepublish": "node generate.js", - "postinstall": "node generate.js" + "test": "mocha -R spec --timeout 50000" }, "devDependencies": { "glob": "4.x",