mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Add publish-for-arch command
This commit is contained in:
@@ -19,6 +19,7 @@ var utils = require('./utils.js');
|
||||
var httpHelpers = require('./http-helpers.js');
|
||||
var archinfo = require('./archinfo.js');
|
||||
var tropohouse = require('./tropohouse.js');
|
||||
var packages = require('./packages.js');
|
||||
|
||||
// Given a site name passed on the command line (eg, 'mysite'), return
|
||||
// a fully-qualified hostname ('mysite.meteor.com').
|
||||
@@ -1486,28 +1487,9 @@ main.registerCommand({
|
||||
conn.call('publishPackageVersion',
|
||||
uploadInfo.uploadToken, bundleResult.tarballHash);
|
||||
|
||||
process.stdout.write('Creating package build...\n');
|
||||
uploadInfo = conn.call('createPackageBuild', {
|
||||
packageName: pkg.name,
|
||||
version: version,
|
||||
architecture: pkg.architectures().join('+')
|
||||
});
|
||||
packageClient.createAndPublishBuiltPackage(conn, pkg,
|
||||
options.packageDir);
|
||||
|
||||
bundleResult = packageClient.bundleBuild(pkg, options.packageDir);
|
||||
|
||||
process.stdout.write('Uploading build...\n');
|
||||
packageClient.uploadTarball(uploadInfo.uploadUrl,
|
||||
bundleResult.buildTarball);
|
||||
|
||||
process.stdout.write('Publishing package build...\n');
|
||||
conn.call('publishPackageBuild',
|
||||
uploadInfo.uploadToken, bundleResult.tarballHash);
|
||||
|
||||
conn.close();
|
||||
process.stdout.write('Published ' + pkg.name +
|
||||
', version ' + version);
|
||||
|
||||
process.stdout.write('\nDone!\n');
|
||||
return 0;
|
||||
});
|
||||
|
||||
@@ -1528,6 +1510,62 @@ main.registerCommand({
|
||||
});
|
||||
});
|
||||
|
||||
main.registerCommand({
|
||||
name: 'publish-for-arch',
|
||||
minArgs: 0,
|
||||
maxArgs: 0,
|
||||
options: {
|
||||
versionString: { type: String, required: true },
|
||||
name: { type: String, required: true }
|
||||
}
|
||||
}, function (options) {
|
||||
var cat = release.current.catalog;
|
||||
if (! cat.getPackage(options.name)) {
|
||||
process.stderr.write('No package named ' + options.name);
|
||||
return 1;
|
||||
}
|
||||
var pkgVersion = cat.getVersion(options.name, options.versionString);
|
||||
if (! pkgVersion) {
|
||||
process.stderr.write('There is no version ' +
|
||||
options.versionString + ' for package ' +
|
||||
options.name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (! pkgVersion.source || ! pkgVersion.source.url) {
|
||||
process.stderr.write('There is no source uploaded for ' +
|
||||
options.name + ' ' + options.versionString);
|
||||
return 1;
|
||||
}
|
||||
|
||||
var sourceTarball = httpHelpers.getUrl({
|
||||
url: pkgVersion.source.url,
|
||||
encoding: null
|
||||
});
|
||||
var sourcePath = files.mkdtemp(options.name + '-' +
|
||||
options.versionString + '-source-');
|
||||
files.extractTarGz(sourceTarball, sourcePath);
|
||||
|
||||
// XXX Factor out with packageClient.bundleSource so that we don't
|
||||
// have knowledge of the tarball structure in two places.
|
||||
var packageDir = path.join(sourcePath, options.name);
|
||||
|
||||
if (! fs.existsSync(packageDir)) {
|
||||
process.stderr.write('Malformed source tarball');
|
||||
return 1;
|
||||
}
|
||||
|
||||
var pkg = new packages.Package(release.current.library, packageDir);
|
||||
pkg.initFromPackageDir(options.name, packageDir);
|
||||
pkg.build();
|
||||
pkg.saveAsUnipackage(path.join(packageDir, '.build'));
|
||||
|
||||
var conn = packageClient.loggedInPackagesConnection();
|
||||
packageClient.createAndPublishBuiltPackage(conn, pkg, packageDir);
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// dummy
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -267,7 +267,7 @@ exports.bundleSource = function (pkg, packageDir) {
|
||||
};
|
||||
};
|
||||
|
||||
exports.uploadTarball = function (putUrl, tarball) {
|
||||
var uploadTarball = function (putUrl, tarball) {
|
||||
var size = fs.statSync(tarball).size;
|
||||
var rs = fs.createReadStream(tarball);
|
||||
httpHelpers.request({
|
||||
@@ -283,7 +283,9 @@ exports.uploadTarball = function (putUrl, tarball) {
|
||||
rs.close();
|
||||
};
|
||||
|
||||
exports.bundleBuild = function (pkg, packageDir) {
|
||||
exports.uploadTarball = uploadTarball;
|
||||
|
||||
var bundleBuild = function (pkg, packageDir) {
|
||||
var tempDir = files.mkdtemp('build-package-');
|
||||
var packageTarName = pkg.name + '-' + pkg.metadata.version + '-' +
|
||||
pkg.architectures().join('+');
|
||||
@@ -307,3 +309,30 @@ exports.bundleBuild = function (pkg, packageDir) {
|
||||
tarballHash: tarballHash
|
||||
};
|
||||
};
|
||||
|
||||
exports.bundleBuild = bundleBuild;
|
||||
|
||||
exports.createAndPublishBuiltPackage = function (conn, pkg, packageDir) {
|
||||
process.stdout.write('Creating package build...\n');
|
||||
var uploadInfo = conn.call('createPackageBuild', {
|
||||
packageName: pkg.name,
|
||||
version: pkg.metadata.version,
|
||||
architecture: pkg.architectures().join('+')
|
||||
});
|
||||
|
||||
var bundleResult = bundleBuild(pkg, packageDir);
|
||||
|
||||
process.stdout.write('Uploading build...\n');
|
||||
uploadTarball(uploadInfo.uploadUrl,
|
||||
bundleResult.buildTarball);
|
||||
|
||||
process.stdout.write('Publishing package build...\n');
|
||||
conn.call('publishPackageBuild',
|
||||
uploadInfo.uploadToken, bundleResult.tarballHash);
|
||||
|
||||
conn.close();
|
||||
process.stdout.write('Published ' + pkg.name +
|
||||
', version ' + pkg.metadata.version);
|
||||
|
||||
process.stdout.write('\nDone!\n');
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user