Skip to content

Instantly share code, notes, and snippets.

@marcbachmann
Last active February 4, 2016 10:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcbachmann/10a7cf9d0146008efef0 to your computer and use it in GitHub Desktop.
Save marcbachmann/10a7cf9d0146008efef0 to your computer and use it in GitHub Desktop.
Migrate CHANGELOG.md to github releases
var fs = require('fs')
var _ = require('lodash')
var async = require('async')
var GitHubApi = require('github')
// Token from your settings page on github
var token = 'YOURGITHUBTOKEN'
// Repository to migrate
var owner = 'upfrontIO'
var repo = 'livingdocs-server'
var github = new GitHubApi({version: '3.0.0'})
github.authenticate({type: 'oauth', token})
var readme = fs.readFileSync('./CHANGELOG.md', 'utf8')
var releases = readme.split(/([a-zA-Z0-9\.\-]*\s\/\s[0-9]{4}-[0-9]{1,2}-[0-9]{1,2})\s=*/g)
releases = _.map(releases, function (r) { return r.trim() })
releases = _.filter(releases, function (r) { return !!r.trim() })
var previousVersion = undefined
releases = _.reduce(releases, function (all, release) {
var isVersion = release.match(/^([a-zA-Z0-9\.\-]*)\s\/\s([0-9]{4}-[0-9]{1,2}-[0-9]{1,2})/)
if (isVersion) {
var version = isVersion[1]
var date = isVersion[2]
previousVersion = version
} else {
all.push({version: previousVersion, body: release})
}
return all
}, [])
github.releases.listReleases({
owner: owner,
repo: repo
}, function (err, ghreleases) {
if (err) {
console.error(err)
return
}
// If you don't limit the requests to github, they think you're abusing their api
async.eachSeries(releases, function (release, cb) {
var tag = 'v'+release.version
var ghrelease = _.find(ghreleases, {tag_name: tag})
var done = function (err) { if (err) {console.log(err)}; cb();}
if (ghrelease) updateRelease(release, ghrelease, done)
else createRelease(release, done)
}, function (err) {
console.log(err || 'Successfully updated all releases')
})
})
function updateRelease (release, ghrelease, done) {
github.releases.editRelease({
id: release.id,
owner: owner,
repo: repo,
tag_name: 'v'+ghrelease.tag_name,
name: "Version "+release.version,
body: release.body
}, done)
}
function createRelease (release, done) {
github.releases.createRelease({
owner: owner,
repo: repo,
tag_name: 'v'+release.version,
name: "Version "+release.version,
body: release.body
}, done)
}

13.0.2 / 2015-01-19

This is an example CHANGELOG that gets parsed and uploaded to the releases page on github.

13.0.1 / 2015-01-19

Bugfixes:

  • Fix error message when design fails to parse #665
  • Fix reindexing of documents #665

13.0.0 / 2015-01-19

Breaking Changes:

  • Use callPublishPlugin instead of eventBridge for delivery #662

Bugfixes:

  • Prevent deadlock when saving metadata #664

12.0.0 / 2015-01-15

IMPORTANT: Please run your migrations

Breaking Changes:

  • Remove internal revisionApi. Revisions are completely private #653
  • Completely remove component cards #640

Bugfixes:

  • Fix document full text search indexing bug #653
  • Fix user population on revision in documentApi.search #645

Improvements:

  • Refactor prepare migration query #654
  • Update search example config #648
  • Expose config to boot workers on server start #647
  • Show readable error message when plv8 is not available. #643
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment