-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit PR notes to draftlogs and add scripts to provide draft release notes (CHANGELOG.md) and empty draftlogs #5780
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 8 commits
a4a2244
80d614e
7154fa4
4e68725
7dcb82e
9bdd412
3a91c0e
eefab9b
ec4417f
d17e77c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
- Improve README for ES6 module import [[#5779](https://github.com/plotly/plotly.js/pull/5779)], | ||
with thanks to @andreafonso for the contribution! |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
## Directory of draft logs to help prepare the upcoming [CHANGELOG](https://github.com/plotly/plotly.js/blob/master/CHANGELOG.md) | ||
|
||
It is required that the PR contributors start the filename with a number. | ||
This number should preferably be the PR number. | ||
The number of issue they are trying to close could also be used. | ||
The markdown file should end with one of the followings: | ||
1. `_fix.md` to propose a bug fix | ||
2. `_add.md` to propose new features | ||
3. `_remove.md` to propose a feature removal | ||
4. `_change.md` to propose a minor/major change | ||
5. `_deprecate.md` to propose a feature deprecate | ||
archmoj marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Example filename and content for PR numbered 5546 for adding a new feature | ||
- filename: `5546_add.md` | ||
- content: | ||
``` | ||
- Add `icicle` trace type [[#5546](https://github.com/plotly/plotly.js/pull/5546)] | ||
``` | ||
which would render | ||
- Add `icicle` trace type [[#5546](https://github.com/plotly/plotly.js/pull/5546)] | ||
|
||
> Please start your single-line or multiple lined message with a verb. You could basically use the PR description while providing a link to the PR similar to the above example is appreciated too. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,13 @@ | ||
var path = require('path'); | ||
var fs = require('fs-extra'); | ||
var common = require('./util/common'); | ||
var constants = require('./util/constants'); | ||
var makeEmptyDirectory = require('./util/make_empty_directory'); | ||
var emptyDir = makeEmptyDirectory.emptyDir; | ||
var makeDir = makeEmptyDirectory.makeDir; | ||
|
||
var dist = constants.pathToDist; // dist | ||
var distTopojson = constants.pathToTopojsonDist; // dist/topojson | ||
|
||
// main | ||
emptyDir(distTopojson); | ||
emptyDir(dist); | ||
makeDir(dist); | ||
makeDir(distTopojson); | ||
|
||
function emptyDir(dir) { | ||
if(common.doesDirExist(dir)) { | ||
console.log('empty ' + dir); | ||
try { | ||
var allFiles = fs.readdirSync(dir); | ||
allFiles.forEach(function(file) { | ||
// remove file | ||
fs.unlinkSync(path.join(dir, file)); | ||
}); | ||
|
||
fs.rmdirSync(dir); | ||
} catch(err) { | ||
console.error(err); | ||
} | ||
} | ||
} | ||
|
||
function makeDir(dir) { | ||
if(!common.doesDirExist(dir)) { | ||
// create folder | ||
fs.mkdirSync(dir); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
var constants = require('./util/constants'); | ||
var makeEmptyDirectory = require('./util/make_empty_directory'); | ||
var emptyDir = makeEmptyDirectory.emptyDir; | ||
var makeDir = makeEmptyDirectory.makeDir; | ||
|
||
var pathToDraftlogs = constants.pathToDraftlogs; | ||
|
||
var chZero = '0'.charCodeAt(0); | ||
var chNine = '9'.charCodeAt(0); | ||
|
||
function startsWithNumber(v) { | ||
var ch = v.charCodeAt(0); | ||
return chZero <= ch && ch <= chNine; | ||
} | ||
|
||
// main | ||
emptyDir(pathToDraftlogs, { filter: startsWithNumber }); | ||
makeDir(pathToDraftlogs); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
var constants = require('./util/constants'); | ||
|
||
var pathToDraftlogs = constants.pathToDraftlogs; | ||
var pathToChangelog = constants.pathToChangelog; | ||
|
||
var chZero = '0'.charCodeAt(0); | ||
var chNine = '9'.charCodeAt(0); | ||
|
||
function startsWithNumber(v) { | ||
var ch = v.charCodeAt(0); | ||
return chZero <= ch && ch <= chNine; | ||
} | ||
|
||
var allLogs = fs.readdirSync(pathToDraftlogs).filter(startsWithNumber); | ||
|
||
var len = allLogs.length; | ||
if(!len) return; | ||
|
||
var writeAfterMe = 'where X.Y.Z is the semver of most recent plotly.js release.'; | ||
var changelog = fs.readFileSync(pathToChangelog).toString().split(writeAfterMe); | ||
var head = changelog[0]; | ||
var foot = changelog[1]; | ||
|
||
var all = { | ||
Added: [], | ||
Removed: [], | ||
Deprecated: [], | ||
Changed: [], | ||
Fixed: [] | ||
}; | ||
|
||
var ENTER = '\n'; | ||
|
||
var skippedFiles = []; | ||
for(var i = 0; i < len; i++) { | ||
var filename = allLogs[i]; | ||
var message = fs.readFileSync(path.join(pathToDraftlogs, filename), { encoding: 'utf-8' }).toString(); | ||
// trim empty lines | ||
message = message.split(ENTER).filter(function(e) { return !!e; }).join(ENTER); | ||
|
||
if(filename.endsWith('_add.md')) { | ||
all.Added.push(message); | ||
} else if(filename.endsWith('_remove.md')) { | ||
all.Removed.push(message); | ||
} else if(filename.endsWith('_deprecate.md')) { | ||
all.Deprecated.push(message); | ||
} else if(filename.endsWith('_change.md')) { | ||
all.Changed.push(message); | ||
} else if(filename.endsWith('_fix.md')) { | ||
all.Fixed.push(message); | ||
} else { | ||
skippedFiles.push(filename); | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Else throw an error, logging the filename as having been ignored. Might want to also loosen the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we have a test which disallows use of uppercase in filenames. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We do test for uppercase, but I don't think it'll dig into the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good call. Addressed in 3a91c0e. |
||
} | ||
|
||
var draftNewChangelog = [ | ||
head + writeAfterMe, | ||
'', | ||
'## [X.Y.Z] -- UNRELEASED' | ||
]; | ||
|
||
var append = function(key) { | ||
var newMessages = all[key]; | ||
if(!newMessages.length) return; | ||
draftNewChangelog.push(''); | ||
draftNewChangelog.push('### ' + key); | ||
draftNewChangelog.push(newMessages.join(ENTER)); | ||
}; | ||
|
||
append('Added'); | ||
append('Removed'); | ||
append('Deprecated'); | ||
append('Changed'); | ||
append('Fixed'); | ||
|
||
draftNewChangelog.push(foot); | ||
|
||
fs.writeFileSync(pathToChangelog, draftNewChangelog.join(ENTER), { encoding: 'utf-8' }); | ||
|
||
if(skippedFiles.length) { | ||
throw JSON.stringify({ | ||
'skippedFiles': skippedFiles | ||
}, null, 2); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
var path = require('path'); | ||
var fs = require('fs-extra'); | ||
var common = require('./common'); | ||
|
||
module.exports = { | ||
emptyDir: emptyDir, | ||
makeDir: makeDir | ||
}; | ||
|
||
function emptyDir(dir, opts) { | ||
if(common.doesDirExist(dir)) { | ||
console.log('empty ' + dir); | ||
try { | ||
var allFiles = fs.readdirSync(dir); | ||
var hasFilter = false; | ||
if(opts && opts.filter) { | ||
hasFilter = true; | ||
allFiles = allFiles.filter(opts.filter); | ||
} | ||
|
||
allFiles.forEach(function(file) { | ||
// remove file | ||
fs.unlinkSync(path.join(dir, file)); | ||
}); | ||
|
||
if(!hasFilter) { | ||
fs.rmdirSync(dir); | ||
} | ||
} catch(err) { | ||
console.error(err); | ||
} | ||
} | ||
} | ||
|
||
function makeDir(dir) { | ||
if(!common.doesDirExist(dir)) { | ||
// create folder | ||
fs.mkdirSync(dir); | ||
} | ||
} |
Uh oh!
There was an error while loading. Please reload this page.