Repository: incubator-apex-site Updated Branches: refs/heads/master ceb677b5a -> 7424ddbc5
Adding task to fetch roadmap jiras and save as jiras.json Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/commit/f532a454 Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/tree/f532a454 Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-site/diff/f532a454 Branch: refs/heads/master Commit: f532a454fcfff40c94884465351e23265f6e1ae8 Parents: 54aafc7 Author: sashadt <[email protected]> Authored: Thu Dec 31 17:04:31 2015 -0800 Committer: sashadt <[email protected]> Committed: Thu Dec 31 17:04:31 2015 -0800 ---------------------------------------------------------------------- gulpfile.js | 172 ++++++++++++- jiras.json | 720 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- 3 files changed, 894 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/f532a454/gulpfile.js ---------------------------------------------------------------------- diff --git a/gulpfile.js b/gulpfile.js index 5361bf5..9d34727 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -12,6 +12,8 @@ var fs = require('fs'); var async = require('async'); var _ = require('lodash'); var exec = require('child_process').exec; +var semver = require('semver'); +var naturalSort = require('javascript-natural-sort'); // Constants var TEMP_PARTIAL_LOCATION = './.tmp/partials/'; @@ -69,7 +71,11 @@ gulp.task('html', ['md2html'], function() { // Render the files in pages gulp.src('./src/pages/*.html') - .pipe(handlebars({ nav: require('./navigation.json'), releases: require('./releases.json') }, options)) + .pipe(handlebars({ + nav: require('./navigation.json'), + releases: require('./releases.json'), + jiras: require('./jiras.json') + }, options)) .pipe(gulp.dest(BUILD_LOCATION)) .on('error', function(err) { console.warn(err); @@ -106,6 +112,170 @@ gulp.task('copy:images', function() { // Default task is to build the site gulp.task('default', ['less', 'html', 'copy:js', 'copy:images']); + +// Fetch all JIRAs assodicated with the current project to create a road map +gulp.task('fetch-jiras', function(taskCb) { + + var projects = [ + { name: 'APEXCORE', apiUrl: 'https://issues.apache.org/jira/rest/api/2/', browseUrl: 'https://issues.apache.org/jira/browse/' }, + { name: 'MLHR', apiUrl: 'https://malhar.atlassian.net/rest/api/2/', browseUrl: 'https://malhar.atlassian.net/browse/' } + // Replace when migration from malhar.atlassian.net to ASF (issues.apache.org) JIRA is complete + // { key: 'apex-malhar', url: 'https://issues.apache.org/jira/rest/api/2/', browseUrl: 'https://issues.apache.org/jira/browse/', project: 'APEXMALHAR' }, + ]; + + + // JQL terms are separated with AND/OR and parameters outside JQL are separated with & + // + // Query to look up all APEXCORE issues with label of roadmap + // https://issues.apache.org/jira/rest/api/2/search?jql=project=APEXCORE+AND+labels+in+(roadmap)&startAt=0&maxResults=100 + // + // Query which returns only specified fields + // https://issues.apache.org/jira/rest/api/2/search?jql=project=APEXCORE+AND+labels+in+(roadmap)&startAt=0&maxResults=100&fields=summary,priority,status + // + // Query to get list of all APEXCORE versions + // https://issues.apache.org/jira/rest/api/2/project/APEXCORE/versions + // + // Browse a single JIRA issue is browseUrl + issue.key + // https://issues.apache.org/jira/browse/APEXCORE-292 + // + // Browse a version in the roadmap is browseUrl + project + fixforversion + version.id + // https://issues.apache.org/jira/browse/APEXCORE/fixforversion/12333948 + + + // For each project, get the jiras + async.map(projects, function(project, cb) { + + console.log('Loading', project.name, 'JIRAs from', project.apiUrl); + + // Request the page that lists the release versions, + // e.g. https://dist.apache.org/repos/dist/release/incubator/apex + var requestUrl = project.apiUrl + 'project/' + project.name + '/versions'; + request({ + url: requestUrl, + json: true + }, + function(err, httpResponse, versions) { + + // Abort on error + if (err) { + console.log('Error when trying to request URL: ', requestUrl); + console.log(err); + return cb(err); + } + + var unreleasedVersions = versions.filter(function(n) { + return !n.released; + }).sort(function(a,b) { + return semver.compare(a.name, b.name); + }); + + //DEBUG + var unreleasedVersionsList = unreleasedVersions.map(function(n){return n.name;}).join(','); + console.log(project.name, 'unreleased versions:', unreleasedVersionsList); + + var apiRequest = { + jql: 'project = ' + project.name + ' AND labels in (roadmap) AND status NOT IN ( Closed, Resolved )', + startAt: 0, + maxResults: 1000, + fields: ['summary','priority','status', 'fixVersions'] + }; + + request.post({ + url: project.apiUrl + 'search', + json: apiRequest + }, + function(err, httpResponse, jiras) { + + // Abort on error + if (err) { + return cb(err); + } + + var pageCount = (jiras.total && jiras.maxResults) ? Math.ceil(jiras.total / jiras.maxResults) : 1; + + console.log(project.name, 'matching jiras:', jiras.total, 'jiras/page:', jiras.maxResults, 'pages:', pageCount); + + // Iterate over multiple pages if more than one page is available + if (pageCount > 1) { + var pageCount = Math.ceil(jiras.total / jiras.maxResults); + var pageSize = jiras.maxResults; + + var apiRequests = []; + for (var i = 1; i < pageCount; i++) { + apiRequests[i-1] = _.extend({}, + apiRequest, + { + startAt: i * pageSize, + maxResults: pageSize + } + ); + } + + // Execute async page loads for jiras spanning multiple pages + async.concat(apiRequests, function(apiPageRequest, pageCb){ + + request.post({ + url: project.apiUrl + 'search', + json: apiPageRequest + }, + function(err, httpResponse, pageJiras) { + + // Abort on error + if (err) { + return pageCb(err); + } + pageCb(null, pageJiras.issues); + }); + + }, function(err, remainingJiras){ + + // Abort if error occurred somewhere + if (err) { + return cb(err); + } + + cb(null, _.extend({}, project, { + jiras: jiras.issues.concat(remainingJiras).sort(function(a,b) {return naturalSort(a.key, b.key); }) + })); + + }); + + } else { + // Return with a new project object with jiras. cb is from async.map call above + cb(null, _.extend({}, project, { + jiras: jiras.issues.sort(function(a,b) {return naturalSort(a.key, b.key); }) + })); + } + + }); + + }); + + + + }, function(err, projectResults) { // this is the async.map(projects) callback + + if (err) { + console.log('Unable to create jiras.json due to errors'); + return; + } + + // This will be written to jiras.json + var fileContents = {}; + + // Use the project name as key and provide associated array of matching jiras + projectResults.forEach(function(project) { + _.set(fileContents, project.name, project.jiras); + }); + + // Write the file to jiras.json + fs.writeFile('./jiras.json', JSON.stringify(fileContents, 0, 2), taskCb); + + }); + + +}); + // Creates releases.json file. // // 1. Requests page that lists release versions (https://dist.apache.org/repos/dist/release/incubator/apex[/malhar]) http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/f532a454/jiras.json ---------------------------------------------------------------------- diff --git a/jiras.json b/jiras.json new file mode 100644 index 0000000..81b6e94 --- /dev/null +++ b/jiras.json @@ -0,0 +1,720 @@ +{ + "APEXCORE": [ + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919181", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919181", + "key": "APEXCORE-3", + "fields": { + "summary": "Ability for an operator to populate DAG at launch time", + "fixVersions": [ + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333950", + "id": "12333950", + "name": "3.3.0", + "archived": false, + "released": false + } + ], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/2", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/critical.png", + "name": "Critical", + "id": "2" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/3", + "description": "This issue is being actively worked on at the moment by the assignee.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/inprogress.png", + "name": "In Progress", + "id": "3", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/4", + "id": 4, + "key": "indeterminate", + "colorName": "yellow", + "name": "In Progress" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919188", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919188", + "key": "APEXCORE-10", + "fields": { + "summary": "Enable non-affinity of operators per node (not containers)", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919232", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919232", + "key": "APEXCORE-60", + "fields": { + "summary": "Iterative processing support", + "fixVersions": [ + { + "self": "https://issues.apache.org/jira/rest/api/2/version/12333950", + "id": "12333950", + "name": "3.3.0", + "archived": false, + "released": false + } + ], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919288", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919288", + "key": "APEXCORE-119", + "fields": { + "summary": "Add Support For A New Type Of (Distributed) Operator", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919332", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919332", + "key": "APEXCORE-163", + "fields": { + "summary": "Dynamic application property changes", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919371", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919371", + "key": "APEXCORE-202", + "fields": { + "summary": "Integration with Samoa", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919400", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919400", + "key": "APEXCORE-231", + "fields": { + "summary": "Ability to configure attributes dynamically", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919401", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919401", + "key": "APEXCORE-232", + "fields": { + "summary": "Ability to add new processing code to the DAG", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919402", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919402", + "key": "APEXCORE-233", + "fields": { + "summary": "Ability to specify single instance objects in configuration", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919403", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919403", + "key": "APEXCORE-234", + "fields": { + "summary": "Investigate other ways to specify properties in property files", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12919404", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12919404", + "key": "APEXCORE-235", + "fields": { + "summary": "Explicit support for batch processing", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12922256", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12922256", + "key": "APEXCORE-289", + "fields": { + "summary": "Encrypted Streams in Apex DAG", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12923907", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12923907", + "key": "APEXCORE-293", + "fields": { + "summary": "Add core and malhar documentation to project web site", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + }, + { + "expand": "operations,editmeta,changelog,transitions,renderedFields", + "id": "12924154", + "self": "https://issues.apache.org/jira/rest/api/2/issue/12924154", + "key": "APEXCORE-295", + "fields": { + "summary": "Running a Storm topology on Apex.", + "fixVersions": [], + "priority": { + "self": "https://issues.apache.org/jira/rest/api/2/priority/3", + "iconUrl": "https://issues.apache.org/jira/images/icons/priorities/major.png", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://issues.apache.org/jira/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://issues.apache.org/jira/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://issues.apache.org/jira/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "New" + } + } + } + } + ], + "MLHR": [ + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "21200", + "self": "https://malhar.atlassian.net/rest/api/2/issue/21200", + "key": "MLHR-1720", + "fields": { + "summary": "Development of Inner Join Operator", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/3", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/major.svg", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/3", + "description": "This issue is being actively worked on at the moment by the assignee.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/inprogress.png", + "name": "In Progress", + "id": "3", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/4", + "id": 4, + "key": "indeterminate", + "colorName": "yellow", + "name": "In Progress" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "22414", + "self": "https://malhar.atlassian.net/rest/api/2/issue/22414", + "key": "MLHR-1811", + "fields": { + "summary": "Add Non-Equality Join Condition", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/3", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/major.svg", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "22515", + "self": "https://malhar.atlassian.net/rest/api/2/issue/22515", + "key": "MLHR-1818", + "fields": { + "summary": "Create a Calcite operator to enable SQL commands to be run", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/3", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/major.svg", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "22805", + "self": "https://malhar.atlassian.net/rest/api/2/issue/22805", + "key": "MLHR-1843", + "fields": { + "summary": "Split Malhar Library and Malhar Contrib package into baby packages", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/critical.svg", + "name": "Critical", + "id": "2" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "23312", + "self": "https://malhar.atlassian.net/rest/api/2/issue/23312", + "key": "MLHR-1873", + "fields": { + "summary": "Create a fault-tolerant/scalable cache component backed by a persistent store", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/3", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/major.svg", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/3", + "description": "This issue is being actively worked on at the moment by the assignee.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/inprogress.png", + "name": "In Progress", + "id": "3", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/4", + "id": 4, + "key": "indeterminate", + "colorName": "yellow", + "name": "In Progress" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "23702", + "self": "https://malhar.atlassian.net/rest/api/2/issue/23702", + "key": "MLHR-1904", + "fields": { + "summary": "Rewrite kafka input operator to use 0.9.0 new consumer", + "fixVersions": [ + { + "self": "https://malhar.atlassian.net/rest/api/2/version/12000", + "id": "12000", + "name": "3.3.0", + "archived": false, + "released": false + } + ], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/3", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/major.svg", + "name": "Major", + "id": "3" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "24104", + "self": "https://malhar.atlassian.net/rest/api/2/issue/24104", + "key": "MLHR-1938", + "fields": { + "summary": "Operator checkpointing in distributed in-memory store", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/4", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/minor.svg", + "name": "Minor", + "id": "4" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "24105", + "self": "https://malhar.atlassian.net/rest/api/2/issue/24105", + "key": "MLHR-1939", + "fields": { + "summary": "Stream API", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/2", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/critical.svg", + "name": "Critical", + "id": "2" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + }, + { + "expand": "operations,versionedRepresentations,editmeta,changelog,transitions,renderedFields", + "id": "24200", + "self": "https://malhar.atlassian.net/rest/api/2/issue/24200", + "key": "MLHR-1942", + "fields": { + "summary": "Apex Operator for Apache Geode.", + "fixVersions": [], + "priority": { + "self": "https://malhar.atlassian.net/rest/api/2/priority/4", + "iconUrl": "https://malhar.atlassian.net/images/icons/priorities/minor.svg", + "name": "Minor", + "id": "4" + }, + "status": { + "self": "https://malhar.atlassian.net/rest/api/2/status/1", + "description": "The issue is open and ready for the assignee to start work on it.", + "iconUrl": "https://malhar.atlassian.net/images/icons/statuses/open.png", + "name": "Open", + "id": "1", + "statusCategory": { + "self": "https://malhar.atlassian.net/rest/api/2/statuscategory/2", + "id": 2, + "key": "new", + "colorName": "blue-gray", + "name": "To Do" + } + } + } + } + ] +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-apex-site/blob/f532a454/package.json ---------------------------------------------------------------------- diff --git a/package.json b/package.json index 7eafda1..f584345 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,10 @@ "gulp-marked": "^1.0.0", "handlebars": "^4.0.2", "highlight.js": "^8.9.1", + "javascript-natural-sort": "^0.7.1", "jsdom": "3.1.2", "lodash": "^3.10.1", - "request": "^2.65.0" + "request": "^2.65.0", + "semver": "^5.1.0" } }
