Skip to content

Commit c8f7466

Browse files
authored
Merge pull request #255 from vim-denops/check-supported-versions
☕ Check supported versions
2 parents e7df460 + 45ec29b commit c8f7466

File tree

7 files changed

+151
-7
lines changed

7 files changed

+151
-7
lines changed

.github/workflows/test.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,19 @@ on:
1111
- "deno.jsonc"
1212
- ".github/workflows/test.yml"
1313
workflow_dispatch:
14+
inputs:
15+
denops_branch:
16+
description: 'Denops revision to test'
17+
required: false
18+
default: 'main'
1419

1520
defaults:
1621
run:
1722
shell: bash --noprofile --norc -eo pipefail {0}
1823

24+
env:
25+
DENOPS_BRANCH: ${{ github.event.inputs.denops_branch || 'main' }}
26+
1927
jobs:
2028
check:
2129
strategy:
@@ -44,6 +52,14 @@ jobs:
4452
run: deno fmt --check
4553
- name: Type check
4654
run: deno task check
55+
- name: Gen check
56+
run: |
57+
deno task gen
58+
git diff --exit-code
59+
- name: Supported version inconsistency check
60+
run: |
61+
deno task apply:supported-versions
62+
git diff --exit-code
4763
4864
test:
4965
strategy:
@@ -53,7 +69,7 @@ jobs:
5369
- macos-latest
5470
- ubuntu-latest
5571
deno_version:
56-
- "1.45.x"
72+
- "1.45.0"
5773
- "1.x"
5874
host_version:
5975
- vim: "v9.1.0448"
@@ -77,7 +93,7 @@ jobs:
7793
7894
- name: Try switching denops branch
7995
run: |
80-
git -C /tmp/denops.vim switch ${{ github.head_ref || github.ref_name }} || true
96+
git -C /tmp/denops.vim switch ${{ env.DENOPS_BRANCH }} || true
8197
git -C /tmp/denops.vim branch
8298
8399
- uses: rhysd/action-setup-vim@v1

.scripts/apply-supported-versions.ts

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import {
2+
loadSupportedVersions,
3+
type SupportedVersions,
4+
} from "./supported_versions.ts";
5+
6+
async function main(): Promise<void> {
7+
const supportedVersions = await loadSupportedVersions("main");
8+
await updateREADME(supportedVersions);
9+
await updateGithubWorkflowsTest(supportedVersions);
10+
}
11+
12+
async function updateREADME(
13+
supportedVersions: SupportedVersions,
14+
): Promise<void> {
15+
const url = new URL(import.meta.resolve("../README.md"));
16+
let text = await Deno.readTextFile(url);
17+
// Deno
18+
text = text.replace(
19+
/Deno\s+\d+\.\d+\.\d+/,
20+
`Deno ${supportedVersions.deno}`,
21+
);
22+
text = text.replace(
23+
/Deno-Support%20\d+\.\d+\.\d+/,
24+
`Deno-Support%20${supportedVersions.deno}`,
25+
);
26+
text = text.replace(
27+
/https:\/\/github\.com\/denoland\/deno\/tree\/v\d+\.\d+\.\d+/,
28+
`https://github.com/denoland/deno/tree/v${supportedVersions.deno}`,
29+
);
30+
// Vim
31+
text = text.replace(
32+
/Vim\s+\d+\.\d+\.\d+/,
33+
`Vim ${supportedVersions.vim}`,
34+
);
35+
text = text.replace(
36+
/Vim-Support%20\d+\.\d+\.\d+/,
37+
`Vim-Support%20${supportedVersions.vim}`,
38+
);
39+
text = text.replace(
40+
/https:\/\/github\.com\/vim\/vim\/tree\/v\d+\.\d+\.\d+/,
41+
`https://github.com/vim/vim/tree/v${supportedVersions.vim}`,
42+
);
43+
// Neovim
44+
text = text.replace(
45+
/Neovim\s+\d+\.\d+\.\d+/,
46+
`Neovim ${supportedVersions.neovim}`,
47+
);
48+
text = text.replace(
49+
/Neovim-Support%20\d+\.\d+\.\d+/,
50+
`Neovim-Support%20${supportedVersions.neovim}`,
51+
);
52+
text = text.replace(
53+
/https:\/\/github\.com\/neovim\/neovim\/tree\/v\d+\.\d+\.\d+/,
54+
`https://github.com/neovim/neovim/tree/v${supportedVersions.neovim}`,
55+
);
56+
await Deno.writeTextFile(url, text);
57+
}
58+
59+
async function updateGithubWorkflowsTest(
60+
supportedVersions: SupportedVersions,
61+
): Promise<void> {
62+
const url = new URL(import.meta.resolve("../.github/workflows/test.yml"));
63+
let text = await Deno.readTextFile(url);
64+
// Deno
65+
text = text.replace(
66+
/deno_version:(.*?)"\d+\.\d+\.\d+"/s,
67+
`deno_version:$1"${supportedVersions.deno}"`,
68+
);
69+
// Vim
70+
text = text.replace(
71+
/vim:(.*?)"v\d+\.\d+\.\d+"/s,
72+
`vim:$1"v${supportedVersions.vim}"`,
73+
);
74+
// Neovim
75+
text = text.replace(
76+
/nvim:(.*?)"v\d+\.\d+\.\d+"/s,
77+
`nvim:$1"v${supportedVersions.neovim}"`,
78+
);
79+
await Deno.writeTextFile(url, text);
80+
}
81+
82+
if (import.meta.main) {
83+
try {
84+
await main();
85+
} catch (error) {
86+
console.error(error);
87+
Deno.exit(1);
88+
}
89+
}

.scripts/gen-function/gen-function.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import { format } from "./format.ts";
44
import { DOCS_OVERRIDES } from "./override.ts";
55
import { transform } from "./transform.ts";
66
import { downloadString } from "../utils.ts";
7+
import { loadSupportedVersions } from "../supported_versions.ts";
78

8-
const VIM_VERSION = "9.1.0448";
9-
const NVIM_VERSION = "0.10.0";
9+
const supportedVersions = await loadSupportedVersions();
10+
const VIM_VERSION = supportedVersions.vim;
11+
const NVIM_VERSION = supportedVersions.neovim;
1012

1113
const commonGenerateModule = "../../function/_generated.ts";
1214
const vimGenerateModule = "../../function/vim/_generated.ts";

.scripts/gen-option/gen-option.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import { format } from "./format.ts";
44
import { DOCS_OVERRIDES } from "./override.ts";
55
import { transform } from "./transform.ts";
66
import { downloadString } from "../utils.ts";
7+
import { loadSupportedVersions } from "../supported_versions.ts";
78

8-
const VIM_VERSION = "9.1.0448";
9-
const NVIM_VERSION = "0.10.0";
9+
const supportedVersions = await loadSupportedVersions();
10+
const VIM_VERSION = supportedVersions.vim;
11+
const NVIM_VERSION = supportedVersions.neovim;
1012

1113
const commonGenerateModule = "../../option/_generated.ts";
1214
const vimGenerateModule = "../../option/vim/_generated.ts";

.scripts/supported_versions.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { ensure, is, type Predicate } from "@core/unknownutil";
2+
3+
export type SupportedVersions = {
4+
deno: string;
5+
vim: string;
6+
neovim: string;
7+
};
8+
9+
const isSupportedVersions = is.ObjectOf({
10+
deno: is.String,
11+
vim: is.String,
12+
neovim: is.String,
13+
}) satisfies Predicate<SupportedVersions>;
14+
15+
function getSupportedVersionJsonUrl(branch: string): URL {
16+
return new URL(
17+
`https://raw.githubusercontent.com/vim-denops/denops.vim/${branch}/denops/supported_versions.json`,
18+
);
19+
}
20+
21+
export async function loadSupportedVersions(
22+
branch?: string,
23+
): Promise<SupportedVersions> {
24+
const url = getSupportedVersionJsonUrl(
25+
branch ?? Deno.env.get("DENOPS_BRANCH") ?? "main",
26+
);
27+
const resp = await fetch(url);
28+
const json = await resp.json();
29+
return ensure(json, isSupportedVersions);
30+
}

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
[![Test](https://github.com/vim-denops/deno-denops-std/actions/workflows/test.yml/badge.svg)](https://github.com/vim-denops/deno-denops-std/actions/workflows/test.yml)
55
[![codecov](https://codecov.io/github/vim-denops/deno-denops-std/branch/main/graph/badge.svg?token=RKAZMUQ3D9)](https://codecov.io/github/vim-denops/deno-denops-std)
66

7+
[![Deno 1.45.0 or above](https://img.shields.io/badge/Deno-Support%201.45.0-yellowgreen.svg?logo=deno)](https://github.com/denoland/deno/tree/v1.45.0)
8+
[![Vim 9.1.0448 or above](https://img.shields.io/badge/Vim-Support%209.1.0448-yellowgreen.svg?logo=vim)](https://github.com/vim/vim/tree/v9.1.0448)
9+
[![Neovim 0.10.0 or above](https://img.shields.io/badge/Neovim-Support%200.10.0-yellowgreen.svg?logo=neovim&logoColor=white)](https://github.com/neovim/neovim/tree/v0.10.0)
10+
711
Standard module for [denops.vim].
812

913
This module is assumed to be used for developing denops plugins. The code is

deno.jsonc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
"update:commit": "deno task -q update --commit --prefix :package: --pre-commit=fmt,lint",
9090
"gen:function": "deno run -A ./.scripts/gen-function/gen-function.ts",
9191
"gen:option": "deno run -A ./.scripts/gen-option/gen-option.ts",
92-
"gen": "deno task gen:function && deno task gen:option && deno fmt"
92+
"gen": "deno task gen:function && deno task gen:option && deno fmt",
93+
"apply:supported-versions": "deno run --allow-net --allow-read --allow-write .scripts/apply-supported-versions.ts"
9394
}
9495
}

0 commit comments

Comments
 (0)