Skip to content

Commit

Permalink
Update README cross reference tables as part of release process. (#176)
Browse files Browse the repository at this point in the history
Update README cross reference tables as part of release process.
  • Loading branch information
rwjblue authored Aug 28, 2019
2 parents a33790f + a2cd5c4 commit 16e3613
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 63 deletions.
46 changes: 32 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,18 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j

### New Modules to Globals

<!-- MODULE_TO_GLOBAL_CROSS_REFERENCE_START -->

| Before | After |
| --- | --- |
| `Ember._action` | `import { action } from '@ember/object';` |
| `Ember._componentManagerCapabilities` | `import { capabilities } from '@ember/component';` |
| `Ember._getComponentTemplate` | `import { getComponentTemplate } from '@ember/component';` |
| `Ember._modifierManagerCapabilities` | `import { capabilities } from '@ember/modifier';` |
| `Ember._setComponentManager` | `import { setComponentManager } from '@ember/component';` |
| `Ember._setComponentTemplate` | `import { setComponentTemplate } from '@ember/component';` |
| `Ember._setModifierManager` | `import { setModifierManager } from '@ember/modifier';` |
| `Ember._templateOnlyComponent` | `import templateOnlyComponent from '@ember/component/template-only';` |
| `Ember._tracked` | `import { tracked } from '@glimmer/tracking';` |
| `Ember.$` | `import $ from 'jquery';` |
| `Ember.A` | `import { A } from '@ember/array';` |
Expand Down Expand Up @@ -82,8 +89,6 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j
| `Ember.Debug.registerWarnHandler` | `import { registerWarnHandler } from '@ember/debug';` |
| `Ember.DefaultResolver` | `import GlobalsResolver from '@ember/application/globals-resolver';` |
| `Ember.defineProperty` | `import { defineProperty } from '@ember/object';` |
| `Ember.deprecate` | `import { deprecate } from '@ember/application/deprecations';` |
| `Ember.deprecateFunc` | `import { deprecateFunc } from '@ember/application/deprecations';` |
| `Ember.Engine` | `import Engine from '@ember/engine';` |
| `Ember.EngineInstance` | `import EngineInstance from '@ember/engine/instance';` |
| `Ember.Enumerable` | `import Enumerable from '@ember/enumerable';` |
Expand Down Expand Up @@ -203,8 +208,12 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j
| `Ember.VERSION` | `import { VERSION } from '@ember/version';` |
| `Ember.warn` | `import { warn } from '@ember/debug';` |

<!-- MODULE_TO_GLOBAL_CROSS_REFERENCE_END -->

### New Modules to Globals

<!-- MODULE_BY_MODULE_LISTING_START -->

#### `@ember/application`
| Module | Global |
| --- | --- |
Expand All @@ -213,8 +222,6 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j
| `import { onLoad } from '@ember/application';` | `Ember.onLoad` |
| `import { runLoadHooks } from '@ember/application';` | `Ember.runLoadHooks` |
| `import { setOwner } from '@ember/application';` | `Ember.setOwner` |
| `import { deprecate } from '@ember/application/deprecations';` | `Ember.deprecate` |
| `import { deprecateFunc } from '@ember/application/deprecations';` | `Ember.deprecateFunc` |
| `import GlobalsResolver from '@ember/application/globals-resolver';` | `Ember.DefaultResolver` |
| `import ApplicationInstance from '@ember/application/instance';` | `Ember.ApplicationInstance` |
| `import Namespace from '@ember/application/namespace';` | `Ember.Namespace` |
Expand All @@ -237,16 +244,19 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j
| `import { isEnabled } from '@ember/canary-features';` | `Ember.FEATURES.isEnabled` |

#### `@ember/component`
| Module | Global |
| --- | --- |
| `import Component from '@ember/component';` | `Ember.Component` |
| `import { capabilities } from '@ember/component';` | `Ember._componentManagerCapabilities` |
| `import { setComponentManager } from '@ember/component';` | `Ember._setComponentManager` |
| `import Checkbox from '@ember/component/checkbox';` | `Ember.Checkbox` |
| `import Helper from '@ember/component/helper';` | `Ember.Helper` |
| `import { helper as buildHelper } from '@ember/component/helper';` | `Ember.Helper.helper` |
| `import TextArea from '@ember/component/text-area';` | `Ember.TextArea` |
| `import TextField from '@ember/component/text-field';` | `Ember.TextField` |
| Module | Global |
| --- | --- |
| `import Component from '@ember/component';` | `Ember.Component` |
| `import { capabilities } from '@ember/component';` | `Ember._componentManagerCapabilities` |
| `import { getComponentTemplate } from '@ember/component';` | `Ember._getComponentTemplate` |
| `import { setComponentManager } from '@ember/component';` | `Ember._setComponentManager` |
| `import { setComponentTemplate } from '@ember/component';` | `Ember._setComponentTemplate` |
| `import Checkbox from '@ember/component/checkbox';` | `Ember.Checkbox` |
| `import Helper from '@ember/component/helper';` | `Ember.Helper` |
| `import { helper as buildHelper } from '@ember/component/helper';` | `Ember.Helper.helper` |
| `import templateOnlyComponent from '@ember/component/template-only';` | `Ember._templateOnlyComponent` |
| `import TextArea from '@ember/component/text-area';` | `Ember.TextArea` |
| `import TextField from '@ember/component/text-field';` | `Ember.TextField` |

#### `@ember/controller`
| Module | Global |
Expand Down Expand Up @@ -298,6 +308,12 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j
| `import EmberMap from '@ember/map';` | `Ember.Map` |
| `import MapWithDefault from '@ember/map/with-default';` | `Ember.MapWithDefault` |

#### `@ember/modifier`
| Module | Global |
| --- | --- |
| `import { capabilities } from '@ember/modifier';` | `Ember._modifierManagerCapabilities` |
| `import { setModifierManager } from '@ember/modifier';` | `Ember._setModifierManager` |

#### `@ember/object`
| Module | Global |
| --- | --- |
Expand Down Expand Up @@ -497,6 +513,8 @@ JSON data for [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-j
| `import { resolve } from 'rsvp';` | `Ember.RSVP.resolve` |


<!-- MODULE_BY_MODULE_LISTING_END -->

### Scripts

The tables above can be generated using the scripts in the `scripts` folder, e.g.:
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@
}
},
"release-it": {
"hooks": {
"after:bump": "node scripts/update-readme.js"
},
"plugins": {
"release-it-lerna-changelog": {
"infile": "CHANGELOG.md"
Expand Down
49 changes: 27 additions & 22 deletions scripts/generate-by-module-markdown-table.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,25 @@ function sortByPackageAndExport([, , mappingA], [, , mappingB]) {
return compare(mappingA.module, mappingB.module);
}

function printTable(table) {
function code(str) {
return '`' + str + '`';
}

function pad(str, max) {
let extra = ' '.repeat(max - str.length);
return ` ${str}${extra} `;
}

function main() {
let table = mappings
.filter(mapping => !mapping.deprecated)
.map(normalize)
.sort(sortByGroup)
.reduce(buildTable, {});
let output = [];

Object.keys(table).map(name => {
print('#### ' + code(name));
output.push('#### ' + code(name));

let group = table[name];
let rows = group.rows;
Expand All @@ -64,30 +80,19 @@ function printTable(table) {
rows.unshift(['---', '---']);
rows.unshift(['Global', 'Module']);
rows.map(([before, after]) => {
print(`|${pad(after, group.maxAfter)}|${pad(before, group.maxBefore)}|`);
output.push(
`|${pad(after, group.maxAfter)}|${pad(before, group.maxBefore)}|`
);
});

print();
output.push('');
});
}

function code(str) {
return '`' + str + '`';
}

function pad(str, max) {
let extra = ' '.repeat(max - str.length);
return ` ${str}${extra} `;
return output.join('\n');
}

function print() {
console.log.apply(console, arguments);
if (require.main === module) {
console.log(main());
} else {
module.exports = main;
}

let table = mappings
.filter(mapping => !mapping.deprecated)
.map(normalize)
.sort(sortByGroup)
.reduce(buildTable, {});

printTable(table);
65 changes: 38 additions & 27 deletions scripts/generate-markdown-table.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,6 @@
let mappings = require('../mappings');
let helpers = require('./shared');

let maxBefore = 0;
let maxAfter = 0;

let rows = mappings
.filter(it => !it.deprecated)
.sort(byGlobal)
.map(mapping => {
let before = mapping.global;
let after = helpers.generateImportForMapping(mapping);

before = code(before);
after = code(after);

maxBefore = Math.max(maxBefore, before.length);
maxAfter = Math.max(maxAfter, after.length);

return [before, after];
});

// Add headers to beginning of array
rows.unshift(['---', '---']);
rows.unshift(['Before', 'After']);

rows = rows.map(([before, after]) => {
console.log(`|${pad(before, maxBefore)}|${pad(after, maxAfter)}|`);
});

function code(str) {
return '`' + str + '`';
}
Expand All @@ -42,3 +15,41 @@ function pad(str, max) {
function byGlobal(a, b) {
return a.global.localeCompare(b.global);
}

function main() {
let output = [];
let maxBefore = 0;
let maxAfter = 0;

let rows = mappings
.filter(it => !it.deprecated)
.sort(byGlobal)
.map(mapping => {
let before = mapping.global;
let after = helpers.generateImportForMapping(mapping);

before = code(before);
after = code(after);

maxBefore = Math.max(maxBefore, before.length);
maxAfter = Math.max(maxAfter, after.length);

return [before, after];
});

// Add headers to beginning of array
rows.unshift(['---', '---']);
rows.unshift(['Before', 'After']);

rows = rows.map(([before, after]) => {
output.push(`|${pad(before, maxBefore)}|${pad(after, maxAfter)}|`);
});

return output.join('\n');
}

if (require.main === module) {
console.log(main());
} else {
module.exports = main;
}
31 changes: 31 additions & 0 deletions scripts/update-readme.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const fs = require('fs');
const generateGlobalToModuleXref = require('./generate-markdown-table');
const generateModuleByModuleXref = require('./generate-by-module-markdown-table');

function updateREADME() {
let originalContents = fs.readFileSync('README.md', 'utf8');

let updatedContents = originalContents.replace(
/<!-- MODULE_TO_GLOBAL_CROSS_REFERENCE_START -->[\s\S]*<!-- MODULE_TO_GLOBAL_CROSS_REFERENCE_END -->/,
// using replacement function here because our output includes $` which is a special replacement value
// in String.prototype.replace, using a function avoids that pitfall
() => {
return `<!-- MODULE_TO_GLOBAL_CROSS_REFERENCE_START -->\n\n${generateGlobalToModuleXref()}\n\n<!-- MODULE_TO_GLOBAL_CROSS_REFERENCE_END -->`;
}
);

let finalContents = updatedContents.replace(
/<!-- MODULE_BY_MODULE_LISTING_START -->[\s\S]*<!-- MODULE_BY_MODULE_LISTING_END -->/m,
// using replacement function here because our output includes $` which is a special replacement value
// in String.prototype.replace, using a function avoids that pitfall
() => {
return `<!-- MODULE_BY_MODULE_LISTING_START -->\n\n${generateModuleByModuleXref()}\n\n<!-- MODULE_BY_MODULE_LISTING_END -->`;
}
);

fs.writeFileSync('README.md', finalContents, 'utf8');
}

if (require.main === module) {
updateREADME();
}

0 comments on commit 16e3613

Please sign in to comment.