UNPKG

fuelux

Version:

Base Fuel UX styles and controls

142 lines (134 loc) 5.56 kB
module.exports = function (grunt) { var semver = require('semver'); var originalVersion = grunt.file.readJSON('./package.json').version; function getPackage () { return grunt.file.readJSON('./package.json'); } function getGithubToken () { return grunt.file.exists('./GITHUB_TOKEN.json') ? grunt.file.readJSON('./GITHUB_TOKEN.json').token : ''; } return { // See [How to release a new version: Prerequisites](https://github.com/ExactTarget/fuelux/wiki/How-to-release-a-new-version#prerequisites-1) for information on generating release notes. // Install with: gem install github_changelog_generator // 'github_changelog_generator -u ExactTarget -p fuelux --no-author --between-tags 3.11.4,3.11.5 --compare-link -t ' notes: { command: 'github_changelog_generator -u ExactTarget -p fuelux --no-author --between-tags ' + originalVersion + ',' + getPackage().version + ' --compare-link -t ' + getGithubToken() }, manualnotes: { command: function getCommand () { if (grunt.config('release.generatelogsmanuallystart') === undefined || grunt.config('release.generatelogsmanuallyend') === undefined) { grunt.log.write('release start and end must be specified. Run task with grunt prompt:generatelogsmanually'); return false; } grunt.log.write('Running: github_changelog_generator -u ExactTarget -p fuelux --no-author --between-tags ' + grunt.config('release.generatelogsmanuallystart') + ',' + grunt.config('release.generatelogsmanuallyend') + ' --compare-link -t '); grunt.log.write('\nPlease be patient.'); return 'github_changelog_generator -u ExactTarget -p fuelux --no-author --between-tags ' + grunt.config('release.generatelogsmanuallystart') + ',' + grunt.config('release.generatelogsmanuallyend') + ' --compare-link -t ' + getGithubToken(); } }, checkoutRemoteReleaseBranch: { // this makes a local branch based on the prior prompt, such as release_{TIMESTAMP} // then update tags from remote in order to prevent duplicate tags command: function () { grunt.config('release.localBranch', 'release_' + new Date().getTime()); var command = [ 'git fetch --tags ' + grunt.config('release.remoteRepository'), 'git fetch ' + grunt.config('release.remoteRepository'), 'git checkout -b ' + grunt.config('release.localBranch') + ' ' + grunt.config('release.remoteRepository') + '/' + grunt.config('release.remoteBaseBranch') ].join(' && '); grunt.log.write('Checking out new local branch based on ' + grunt.config('release.remoteBaseBranch') + ': ' + command); return command; } }, addReleaseFiles: { command: function () { var command = 'git add ' + grunt.config('release.files').join(' '); grunt.log.write('Staging: ' + command); return command; } }, commit: { command: function () { var command = 'git commit -m "release ' + getPackage().version + '"'; grunt.log.write('Committing: ' + command); return command; } }, tag: { command: function () { var command = 'git tag -a "' + getPackage().version + '" -m "' + getPackage().version + '"'; grunt.log.write('Tagging: ' + command); return command; } }, pushLocalBranchToUpstream: { command: function () { var command = 'git push ' + grunt.config('release.remoteRepository') + ' ' + grunt.config('release.localBranch') + ':' + grunt.config('release.remoteDestinationBranch'); grunt.log.write('Pushing: ' + command); return command; } }, pushTagToUpstream: { command: function () { var command = 'git push ' + grunt.config('release.remoteRepository') + ' ' + getPackage().version; grunt.log.write('Publishing tag: ' + command); return command; } }, pushLocalBranchToUpstreamMaster: { command: function () { var command = 'git push ' + grunt.config('release.remoteRepository') + ' ' + grunt.config('release.localBranch') + ':master'; grunt.log.write(command); return command; } }, uploadToCDN: { command: function () { function createUploadCommand (version) { return ['mv dist ' + version, 'scp -i ~/.ssh/fuelcdn -oHostKeyAlgorithms=+ssh-dss -r "' + version + '"/ ' + '<%= cdnLoginFile.user %>' + '@' + '<%= cdnLoginFile.server %>' + ':' + '<%= cdnLoginFile.folder %>', 'mv "' + version + '" dist', 'echo "Done uploading files."'].join(' && '); } var command = [ getPackage().version, semver.major(getPackage().version) + '.' + semver.minor(getPackage().version), semver.major(getPackage().version) ].map(createUploadCommand).join(' && '); grunt.log.write('Uploading: ' + command); grunt.log.writeln(''); return command; } }, publishToNPM: { command: function () { var command = 'npm publish'; grunt.log.write(command); return command; } }, copyToReference: { command: function copyDistToRef() { var moveDist = [ 'rm -rf reference/dist', 'mkdir reference/dist', 'cp -R dist/* reference/dist' ].join(' && '); grunt.log.write('Copying dist into reference/dist for use in visual regression testing.\n'); grunt.log.write(moveDist); var deleteFluff = [ 'rm reference/dist/css/fuelux.css.map', 'rm reference/dist/css/fuelux.min.css', 'rm reference/dist/fuelux.zip', 'rm reference/dist/js/fuelux.min.js' ].join(' && '); grunt.log.write('\nRemovine .zip and .min files to save space in repo'); grunt.log.write(deleteFluff); return moveDist + ' && ' + deleteFluff; } } }; };