Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP for Meteor integration #27

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions package.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// Package metadata file for Meteor.js. Maintainer: @chipcastle.
'use strict';

// TODO Fill in atmosphere url
var packageName = 'jspdf:autotable'; // http://atmospherejs.com/
var gitHubPath = 'someatoms/jsPDF-AutoTable'; // https://github.com/someatoms/jsPDF-AutoTable
// TODO This package need to be published on npmjs.org
var npmPackageName = 'jspdf-autotable'; // https://libraries.io/bower/jspdf-autotable
var where = 'client'; // where to install: 'client' or 'server'. For both, pass nothing.

/* 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. Find 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, 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;

try {
var packageJson = JSON.parse(Npm.require('fs').readFileSync('jsPDF-AutoTable/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 version = JSON.parse(body)[0]['name']; // e.g. "v4.3.0"
fut.return(version.replace(/^\D+/, '')); // trim leading non-digits
} 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({
name: packageName,
summary: 'PDF table generator in javascript (jspdf plugin)',
version: version,
git: 'https://github.com/MeteorPackaging/jsPDF-AutoTable.git',
documentation: 'README.md'
});


Package.onUse(function (api) {
api.addFiles([
'jsPDF-AutoTable/jspdf.plugin.autotable.js'
], where);
});
15 changes: 15 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "PDF table generator in javascript (jspdf plugin)",
"version": "1.2.3",
"scripts": {
"test": "meteor test-packages ./",
"testci": "spacejam --mongo-url mongodb:// test-packages ./",
"publish": "meteor publish"
},
"dependences": {
"jspdf": "~1.0.178"
},
"devDependencies": {
"spacejam": "^1.1.4"
}
}