Skip to content

Commit 389400b

Browse files
authored
refactor: make links clickable (#85) [skip ci]
2 parents c79ceb1 + 007b0f8 commit 389400b

5 files changed

+47
-35
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"fork-version": "node dist/cli.js",
7474
"dev": "tsup --watch",
7575
"build": "tsup",
76-
"generate-json-schema": "node scripts/generate-json-schema.js",
76+
"update-json-schema": "node scripts/update-json-schema.js",
7777
"update-readme-cli-options": "node scripts/update-readme-cli-options.js",
7878
"lint": "eslint --fix \"src/**/*.ts\"",
7979
"lint:check": "eslint \"src/**/*.ts\"",

scripts/generate-json-schema.js

-29
This file was deleted.

scripts/update-json-schema.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env node
2+
// @ts-check
3+
4+
import { join } from "node:path";
5+
import { pathToFileURL } from "node:url";
6+
import { writeFileSync } from "node:fs";
7+
import { zodToJsonSchema } from "zod-to-json-schema";
8+
import { ForkConfigSchema } from "../src/config/schema.js";
9+
import { clickableLink } from "./utils/clickable-link.js";
10+
11+
const schemaLocation = join(import.meta.dirname, "..", "schema", `latest.json`);
12+
const jsonSchema = zodToJsonSchema(ForkConfigSchema);
13+
14+
writeFileSync(
15+
schemaLocation,
16+
JSON.stringify(
17+
{
18+
$schema: "http://json-schema.org/draft-07/schema#",
19+
type: "object",
20+
additionalProperties: false,
21+
properties: jsonSchema["properties"],
22+
},
23+
null,
24+
2,
25+
),
26+
);
27+
28+
console.log(
29+
`Updated JSON schema: ${clickableLink(pathToFileURL(schemaLocation).href, schemaLocation)}`,
30+
);

scripts/update-readme-cli-options.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
#!/usr/bin/env node
22
// @ts-check
33

4-
import { dirname, join } from "node:path";
5-
import { fileURLToPath } from "node:url";
4+
import { join } from "node:path";
5+
import { pathToFileURL } from "node:url";
66
import { readFileSync, writeFileSync } from "node:fs";
77
import { helperText } from "../src/config/cli-arguments.js";
8+
import { clickableLink } from "./utils/clickable-link.js";
89

9-
const projectRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
10-
const readmeLocation = join(projectRoot, "README.md");
11-
10+
const readmeLocation = join(import.meta.dirname, "..", "README.md");
1211
const readmeContent = readFileSync(readmeLocation, "utf-8");
1312

1413
const startMarker = "<!-- START COMMAND LINE OPTIONS -->";
@@ -27,3 +26,5 @@ ${helperText}
2726
${endMarker}`,
2827
),
2928
);
29+
30+
console.log(`Updated README: ${clickableLink(pathToFileURL(readmeLocation).href, readmeLocation)}`);

scripts/utils/clickable-link.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#quick-example
3+
* https://github.com/Alhadis/OSC8-Adoption/?tab=readme-ov-file#testing-support
4+
* @param {string} url
5+
* @param {string} text
6+
* @returns {string}
7+
*/
8+
export function clickableLink(url, text) {
9+
return `\u001b]8;;${url}\u001b\\${text}\u001b]8;;\u001b\\`;
10+
}

0 commit comments

Comments
 (0)