mirror of https://github.com/RubaXa/Sortable.git
Dan Dascalescu
9 years ago
6 changed files with 147 additions and 80 deletions
@ -0,0 +1,34 @@ |
|||||||
|
base64@1.0.3 |
||||||
|
binary-heap@1.0.3 |
||||||
|
blaze@2.1.2 |
||||||
|
blaze-tools@1.0.3 |
||||||
|
callback-hook@1.0.3 |
||||||
|
check@1.0.5 |
||||||
|
dburles:mongo-collection-instances@0.3.4 |
||||||
|
ddp@1.1.0 |
||||||
|
deps@1.0.7 |
||||||
|
ejson@1.0.6 |
||||||
|
geojson-utils@1.0.3 |
||||||
|
html-tools@1.0.4 |
||||||
|
htmljs@1.0.4 |
||||||
|
id-map@1.0.3 |
||||||
|
jquery@1.11.3_2 |
||||||
|
json@1.0.3 |
||||||
|
lai:collection-extensions@0.1.4 |
||||||
|
local-test:rubaxa:sortable@1.2.1 |
||||||
|
logging@1.0.7 |
||||||
|
meteor@1.1.6 |
||||||
|
minifiers@1.1.5 |
||||||
|
minimongo@1.0.8 |
||||||
|
mongo@1.1.0 |
||||||
|
observe-sequence@1.0.6 |
||||||
|
ordered-dict@1.0.3 |
||||||
|
random@1.0.3 |
||||||
|
reactive-var@1.0.5 |
||||||
|
retry@1.0.3 |
||||||
|
rubaxa:sortable@1.2.1 |
||||||
|
spacebars-compiler@1.0.6 |
||||||
|
templating@1.1.1 |
||||||
|
tinytest@1.0.5 |
||||||
|
tracker@1.0.7 |
||||||
|
underscore@1.0.3 |
@ -1,35 +1,85 @@ |
|||||||
// package metadata file for Meteor.js
|
// Package metadata file for Meteor.js
|
||||||
'use strict'; |
'use strict'; |
||||||
|
|
||||||
var packageName = 'rubaxa:sortable'; // http://atmospherejs.com/rubaxa/sortable
|
var packageName = 'rubaxa:sortable'; // https://atmospherejs.com/rubaxa/sortable
|
||||||
|
var gitHubPath = 'RubaXa/Sortable'; // https://github.com/RubaXa/Sortable
|
||||||
|
var npmPackageName = 'sortablejs'; // https://www.npmjs.com/package/sortablejs - optional but recommended; used as fallback if GitHub fails
|
||||||
|
|
||||||
var packageJson = JSON.parse(Npm.require("fs").readFileSync('package.json')); |
/* All of the below is just to get the version number of the 3rd party library. |
||||||
|
* First we'll try to read it from package.json. This works when publishing or testing the package |
||||||
|
* but not when running an example app that uses a local copy of the package because the current
|
||||||
|
* directory will be that of the app, and it won't have package.json. Finding the path of a file is hard: |
||||||
|
* http://stackoverflow.com/questions/27435797/how-do-i-obtain-the-path-of-a-file-in-a-meteor-package
|
||||||
|
* Therefore, we'll fall back to GitHub (which is more frequently updated), and then to NPMJS. |
||||||
|
* We also don't have the HTTP package at this stage, and if we use Package.* in the request() callback, |
||||||
|
* it will error that it must be run in a Fiber. So we'll use Node futures. |
||||||
|
*/ |
||||||
|
var request = Npm.require('request'); |
||||||
|
var Future = Npm.require('fibers/future'); |
||||||
|
|
||||||
|
var fut = new Future; |
||||||
|
var version; |
||||||
|
|
||||||
|
if (!version) try { |
||||||
|
var packageJson = JSON.parse(Npm.require('fs').readFileSync('../package.json')); |
||||||
|
version = packageJson.version; |
||||||
|
} catch (e) { |
||||||
|
// if the file was not found, fall back to GitHub
|
||||||
|
console.warn('Could not find ../package.json to read version number from; trying GitHub...'); |
||||||
|
var url = 'https://api.github.com/repos/' + gitHubPath + '/tags'; |
||||||
|
request.get({ |
||||||
|
url: url, |
||||||
|
headers: { |
||||||
|
'User-Agent': 'request' // GitHub requires it
|
||||||
|
} |
||||||
|
}, function (error, response, body) { |
||||||
|
if (!error && response.statusCode === 200) { |
||||||
|
var versions = JSON.parse(body).map(function (version) { |
||||||
|
return version['name'].replace(/^\D+/, '') // trim leading non-digits from e.g. "v4.3.0"
|
||||||
|
}).sort(); |
||||||
|
fut.return(versions[versions.length -1]); |
||||||
|
} else { |
||||||
|
// GitHub API rate limit reached? Fall back to npmjs.
|
||||||
|
console.warn('GitHub request to', url, 'failed:\n ', response && response.statusCode, response && response.body, error || '', '\nTrying NPMJS...'); |
||||||
|
url = 'http://registry.npmjs.org/' + npmPackageName + '/latest'; |
||||||
|
request.get(url, function (error, response, body) { |
||||||
|
if (!error && response.statusCode === 200) |
||||||
|
fut.return(JSON.parse(body).version); |
||||||
|
else |
||||||
|
fut.throw('Could not get version information from ' + url + ' either (incorrect package name?):\n' + (response && response.statusCode || '') + (response && response.body || '') + (error || '')); |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
version = fut.wait(); |
||||||
|
} |
||||||
|
|
||||||
|
// Now that we finally have an accurate version number...
|
||||||
Package.describe({ |
Package.describe({ |
||||||
name: packageName, |
name: packageName, |
||||||
summary: 'Sortable: reactive minimalist reorderable drag-and-drop lists on modern browsers and touch devices', |
summary: 'Sortable: reactive minimalist reorderable drag-and-drop lists on modern browsers and touch devices', |
||||||
version: packageJson.version, |
version: version, |
||||||
git: 'https://github.com/RubaXa/Sortable.git', |
git: 'https://github.com/RubaXa/Sortable.git', |
||||||
documentation: 'meteor/README.md' |
documentation: 'README.md' |
||||||
}); |
}); |
||||||
|
|
||||||
Package.onUse(function (api) { |
Package.onUse(function (api) { |
||||||
api.versionsFrom(['METEOR@0.9.0', 'METEOR@1.0']); |
api.versionsFrom(['METEOR@0.9.0', 'METEOR@1.0']); |
||||||
api.use('templating', 'client'); |
api.use('templating', 'client'); |
||||||
api.use('dburles:mongo-collection-instances@0.3.4'); // to watch collections getting created
|
api.use('dburles:mongo-collection-instances@0.3.4'); // to watch collections getting created
|
||||||
api.export('Sortable'); // exported on the server too, as a global to hold the array of sortable collections (for security)
|
api.export('Sortable'); // exported on the server too, as a global to hold the array of sortable collections (for security)
|
||||||
api.addFiles([ |
api.addFiles([ |
||||||
'Sortable.js', |
'../Sortable.js', |
||||||
'meteor/template.html', // the HTML comes first, so reactivize.js can refer to the template in it
|
'template.html', // the HTML comes first, so reactivize.js can refer to the template in it
|
||||||
'meteor/reactivize.js' |
'reactivize.js' |
||||||
], 'client'); |
], 'client'); |
||||||
api.addFiles('meteor/methods-client.js', 'client'); |
api.addFiles('methods-client.js', 'client'); |
||||||
api.addFiles('meteor/methods-server.js', 'server'); |
api.addFiles('methods-server.js', 'server'); |
||||||
}); |
}); |
||||||
|
|
||||||
Package.onTest(function (api) { |
Package.onTest(function (api) { |
||||||
api.use(packageName, 'client'); |
api.use(packageName, 'client'); |
||||||
api.use('tinytest', 'client'); |
api.use('tinytest', 'client'); |
||||||
|
|
||||||
api.addFiles('meteor/test.js', 'client'); |
api.addFiles('test.js', 'client'); |
||||||
}); |
}); |
||||||
|
@ -0,0 +1,8 @@ |
|||||||
|
REM Test Meteor package before publishing to Atmospherejs.com |
||||||
|
@echo off |
||||||
|
|
||||||
|
REM Sanity check: make sure we're in the directory of the script |
||||||
|
set DIR=%~dp0 |
||||||
|
cd %DIR% |
||||||
|
|
||||||
|
meteor test-packages ./ %* |
Loading…
Reference in new issue