UNPKG

frau-publisher

Version:

A free-range-app utility for publishing to our CDN.

86 lines (73 loc) 2.01 kB
'use strict'; const chalk = require('chalk'); const semver = require('semver'); function validateOpts(opts) { if (!opts) { throw new Error('Missing options'); } } // Check if it is a release version or a dev version and return the correct path for it function getDevPath(opts) { validateOpts(opts); if (opts.version) { return '/'; } return '/dev/'; } module.exports = function(opts) { const options = { getTargetDirectory: function() { validateOpts(opts); if (!opts.targetDirectory && !opts.id) { throw new Error('Missing targetDirectory'); } if (opts.id) { console.log(chalk.red('The targetDirectory should be specified on options rather than id. Specifying targetDirectory via id will not be supported in a future release.')); } if (!opts.targetDirectory && opts.id) { opts.targetDirectory = opts.id; } return opts.targetDirectory; }, getVersion: function() { validateOpts(opts); if (!opts.devTag && !opts.version) { throw new Error('Missing version or devTag'); } if (opts.version) { const validatedVersion = semver.valid(opts.version); if (validatedVersion === null) { throw new Error('"' + opts.version + '" is not a valid version number. See semver.org for more details.'); } return validatedVersion; } // if false, there has to be a devTag return opts.devTag; }, getCreds: function() { const creds = { apiVersion: '2006-03-01' }; if (!opts.creds) { return creds; } if (opts.creds.key) { creds.accessKeyId = opts.creds.key; } if (opts.creds.secret) { creds.secretAccessKey = opts.creds.secret; } if (opts.creds.sessionToken) { creds.sessionToken = opts.creds.sessionToken; } return creds; }, getUploadPath: function() { validateOpts(opts); const devPath = getDevPath(opts); // version gets priority over devTag return opts.initialPath + this.getTargetDirectory() + devPath + this.getVersion(); } }; return options; };