exports.releaseSite = function (sitename, message, assets, env) { // 1. check that all required vars have been passed by command line // 2. check that the build directory has been created // 3. check which assets need to be released // @todo, ftp release files need to take into account the environment in their paths // 4. ftp to server // 5. increment 'releases' property in micrositeList.json // 6. store release notes somewhere? var dirname, localPaths, remotePaths, environments = ['eng', 'qa', 'prod']; // media server environments // check user errors try { check.that('hasSiteName', [sitename], 'release'); check.that('siteExists', [sitename]); check.that('hasReleaseNotes', [message]); check.that('environmentSpecified', [env]); check.that('correctEnvironment', [environments, env]); check.that('buildDirectoryExists', [sites.getSiteDir(sitename)]); } catch (e) { return; } msg.con('info', 'releasingSite', sitename); // get directory name of site being released dirname = sites.getSiteDir(sitename); // get an array of requested assets assets = build.assetsToArray(assets); // paths of local files that will be uploaded to media server localPaths = build.getAssetPaths(sitename, 'local', assets, env); // ftp files to remote server release.pushToRemoteServer(localPaths, dirname, env); // send email on release if enabled if (cfg.notifications.release.sendEmails) { // paths of files as they will be found on the media server remotePaths = build.getAssetPaths(sitename, 'ftp', assets, env); msg.con('info', 'emailSending', 'release notes'); notify.send('release', { site: sitename, msg: message, date: '04/09/2013', files: remotePaths }); } return; };
exports.purgeCdn = function (sitename, assets) { var urls, spawn, purge; // check user errors try { check.that('hasSiteName', [sitename], 'purge'); check.that('siteExists', [sitename]); check.that('buildDirectoryExists', [sites.getSiteDir(sitename)]); } catch (e) { return; } // get an array of requested assets assets = build.assetsToArray(assets); // get array of urls to be purged on cdn urls = build.getAssetPaths(sitename, 'cdn', assets); // check if any urls are returned if (urls.length < 1) { return msg.con('error', 'cdnPurgeNoUrls', sitename); } // start CDN purge msg.con('info', 'cdnPurgeStart'); // list the urls that are being purged msg.log('list', '\t', urls.join('\n\t')); // pass urls to purge.js spawn = require('child_process').spawn; purge = spawn('casperjs', ['./lib/scripts/purgeCdn.js', urls]); // log purge.js results to console purge.stdout.on('data', function (data) { return msg.log('list', data); }); purge.stdout.on('close', function (data) { msg.con('info', 'cdnPurgeEnd'); }); purge.stderr.on('data', function (data) { return msg.log('error', data); }); return; };