Skip to content

Commit 6033d9c

Browse files
authored
feat: export meta object (#238)
* feat: export meta object * Create loud-elephants-attend.md * fix
1 parent 7c2e179 commit 6033d9c

File tree

11 files changed

+89
-21
lines changed

11 files changed

+89
-21
lines changed

.changeset/loud-elephants-attend.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-yml": minor
3+
---
4+
5+
feat: export meta object

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
},
1212
"scripts": {
1313
"prebuild": "npm run -s clean",
14-
"build": "npm run build:ts",
14+
"build": "npm run build:meta && npm run build:ts",
15+
"build:meta": "npm run ts -- ./tools/update-meta.ts",
1516
"build:ts": "tsc --project ./tsconfig.build.json",
1617
"clean": "rimraf .nyc_output dist coverage",
1718
"lint": "eslint . --ext .js,.vue,.ts,.json,.md,.yml,.yaml",

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import base from "./configs/base";
44
import recommended from "./configs/recommended";
55
import standard from "./configs/standard";
66
import prettier from "./configs/prettier";
7+
import * as meta from "./meta";
78

89
const configs = {
910
base,
@@ -18,6 +19,7 @@ const rules = ruleList.reduce((obj, r) => {
1819
}, {} as { [key: string]: RuleModule });
1920

2021
export = {
22+
meta,
2123
configs,
2224
rules,
2325
};

src/meta.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// IMPORTANT!
2+
// This file has been automatically generated,
3+
// in order to update its content execute "yarn build:meta"
4+
export const name = "eslint-plugin-yml" as const;
5+
export const version = "1.6.0" as const;

tests/src/meta.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import assert from "assert";
2+
import plugin from "../../src";
3+
import { version } from "../../package.json";
4+
const expectedMeta = {
5+
name: "eslint-plugin-yml",
6+
version,
7+
};
8+
9+
describe("Test for meta object", () => {
10+
it("A plugin should have a meta object.", () => {
11+
assert.deepStrictEqual(plugin.meta, expectedMeta);
12+
});
13+
14+
for (const [name, processor] of Object.entries(
15+
// @ts-expect-error -- missing processors
16+
plugin.processors || {}
17+
)) {
18+
it(`"${name}" processor should have a meta object.`, () => {
19+
// @ts-expect-error -- missing type
20+
assert.deepStrictEqual(processor.meta, expectedMeta);
21+
});
22+
}
23+
});

tools/lib/changesets-util.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,9 @@
1-
import assembleReleasePlan from "@changesets/assemble-release-plan";
2-
import readChangesets from "@changesets/read";
3-
import { read } from "@changesets/config";
4-
import { getPackages } from "@manypkg/get-packages";
5-
import { readPreState } from "@changesets/pre";
1+
import getReleasePlan from "@changesets/get-release-plan";
62
import path from "path";
73

8-
const root = path.resolve(__dirname, "../..");
9-
104
/** Get new version string from changesets */
115
export async function getNewVersion(): Promise<string> {
12-
const packages = await getPackages(root);
13-
const preState = await readPreState(root);
14-
const config = await read(root, packages);
15-
const changesets = await readChangesets(root);
16-
17-
const releasePlan = assembleReleasePlan(
18-
changesets,
19-
packages,
20-
config,
21-
preState
22-
);
6+
const releasePlan = await getReleasePlan(path.resolve(__dirname, "../.."));
237

248
return releasePlan.releases.find(({ name }) => name === "eslint-plugin-yml")!
259
.newVersion;

tools/update-meta.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import fs from "fs";
2+
import path from "path";
3+
import { ESLint } from "eslint";
4+
import { name, version } from "../package.json";
5+
import { getNewVersion } from "./lib/changesets-util";
6+
7+
const META_PATH = path.join(__dirname, "../src/meta.ts");
8+
9+
void main();
10+
11+
/** main */
12+
async function main() {
13+
if (!fs.existsSync(META_PATH)) {
14+
fs.writeFileSync(META_PATH, "", "utf8");
15+
}
16+
const eslint = new ESLint({ fix: true });
17+
const [result] = await eslint.lintText(
18+
`/*
19+
* IMPORTANT!
20+
* This file has been automatically generated,
21+
* in order to update its content execute "npm run update"
22+
*/
23+
export const name = ${JSON.stringify(name)} as const;
24+
export const version = ${JSON.stringify(await getVersion())} as const;
25+
`,
26+
{ filePath: META_PATH }
27+
);
28+
fs.writeFileSync(META_PATH, result.output!);
29+
}
30+
31+
/** Get version */
32+
function getVersion() {
33+
// eslint-disable-next-line no-process-env -- ignore
34+
if (process.env.IN_VERSION_CI_SCRIPT) {
35+
return getNewVersion();
36+
}
37+
return version;
38+
}

tools/update-rules.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ function camelCase(str: string) {
1212
return str.replace(/[-/_](\w)/gu, (_, c) => (c ? c.toUpperCase() : ""));
1313
}
1414

15-
let content = `
15+
let content = `/*
16+
* IMPORTANT!
17+
* This file has been automatically generated,
18+
* in order to update its content execute "npm run update"
19+
*/
1620
import type { RuleModule } from "../types"
1721
${rules
1822
.map(

tools/update-rulesets.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ const CONFIGS = {
4545
};
4646

4747
for (const rec of ["recommended", "standard", "prettier"] as const) {
48-
let content = `
48+
let content = `/*
49+
* IMPORTANT!
50+
* This file has been automatically generated,
51+
* in order to update its content execute "npm run update"
52+
*/
4953
import path from "path"
5054
const base = require.resolve("./base")
5155
const baseExtend =

tools/update.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ import "./update-rulesets";
33
import "./update-docs";
44
import "./update-readme";
55
import "./update-docs-rules-index";
6+
import "./update-meta";

0 commit comments

Comments
 (0)