Skip to content

Commit d598328

Browse files
authored
feat: add output remoteName (#20)
1 parent f77c175 commit d598328

File tree

8 files changed

+47
-66
lines changed

8 files changed

+47
-66
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ latest commit or tag. The primary use case for this action is to be used across
88
[Catppuccin](https://github.com/catppuccin), allowing repositories to update
99
their submodules to the latest git tag instead of the latest commit.
1010

11+
> [!NOTE]
12+
> This action assumes that all git submodules are located in a separate GitHub
13+
> repository, please raise an
14+
> [issue](https://github.com/sgoudham/update-git-submodules/issues/new) if you'd
15+
> like to see other platforms supported.
16+
1117
### What it does
1218

1319
- It automatically parses the `.gitmodules` file to find submodules.
@@ -61,6 +67,8 @@ variables for each submodule that was updated:
6167
- `${prefix}--updated`: Always set to `true` to indicate that the submodule was updated.
6268
- `${prefix}--path`: The path to the submodule that was updated.
6369
- `${prefix}--url`: The GitHub URL of the submodule that was updated.
70+
- `${prefix}--remoteName`: The name of the remote repository of the submodule
71+
that was updated. (e.g. `sgoudham/update-git-submodules`)
6472
- `${prefix}--previousShortCommitSha`: The short commit SHA of the submodule
6573
before it was updated.
6674
- `${prefix}--previousCommitSha`: The commit SHA of the submodule before it
@@ -80,6 +88,7 @@ the path is `ports/vscode-icons`, the dynamic outputs will be:
8088
- `vscode-icons--updated`
8189
- `vscode-icons--path`
8290
- `vscode-icons--url`
91+
- `vscode-icons--remoteName`
8392
- `vscode-icons--previousShortCommitSha`
8493
- `vscode-icons--previousCommitSha`
8594
- `vscode-icons--latestShortCommitSha`
@@ -90,6 +99,7 @@ the path is `ports/vscode-icons`, the dynamic outputs will be:
9099
- `ports/vscode-icons--updated`
91100
- `ports/vscode-icons--path`
92101
- `ports/vscode-icons--url`
102+
- `ports/vscode-icons--remoteName`
93103
- `ports/vscode-icons--previousShortCommitSha`
94104
- `ports/vscode-icons--previousCommitSha`
95105
- `ports/vscode-icons--latestShortCommitSha`

dist/index.js

Lines changed: 13 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/__tests__/main.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,5 +300,5 @@ test("set GitHub Action dynamic outputs", async () => {
300300

301301
setDynamicOutputs(prefix, submodule);
302302

303-
expect(setOutput).toHaveBeenCalledTimes(10);
303+
expect(setOutput).toHaveBeenCalledTimes(11);
304304
});

src/__tests__/markdown.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ test("markdown pr body for multiple submodules", async () => {
1717
const submodules = [mdBook, nvim, vscodeIcons];
1818
const expected = `
1919
| --- | --- | --- |
20-
| [ports/mdBook](https://github.com/catppuccin/mdBook.git) | ports/mdBook | [a19a19b...c9868d3](https://github.com/catppuccin/mdBook/compare/a19a19bd14f26c3bba311bbffc5a74710add5ac2...c9868d34c04df61207141ba4b7dc51d270fda7ec) |
21-
| [ports/nvim](https://github.com/catppuccin/nvim.git) | ports/nvim | [774a4ed...4fd72a9](https://github.com/catppuccin/nvim/compare/774a4ed9a69d0a2633da60f73aa63a8e23aacced...4fd72a9ab64b393c2c22b168508fd244877fec96) |
22-
| [ports/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [71d98b8...da859f0](https://github.com/catppuccin/vscode-icons/compare/71d98b81bfdb6b8d3527037c3017eb07e6ec0621...da859f02ffb1ec834ce2efabb7f5bab8667e294c) |
20+
| [catppuccin/mdBook](https://github.com/catppuccin/mdBook.git) | ports/mdBook | [a19a19b...c9868d3](https://github.com/catppuccin/mdBook/compare/a19a19bd14f26c3bba311bbffc5a74710add5ac2...c9868d34c04df61207141ba4b7dc51d270fda7ec) |
21+
| [catppuccin/nvim](https://github.com/catppuccin/nvim.git) | ports/nvim | [774a4ed...4fd72a9](https://github.com/catppuccin/nvim/compare/774a4ed9a69d0a2633da60f73aa63a8e23aacced...4fd72a9ab64b393c2c22b168508fd244877fec96) |
22+
| [catppuccin/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [71d98b8...da859f0](https://github.com/catppuccin/vscode-icons/compare/71d98b81bfdb6b8d3527037c3017eb07e6ec0621...da859f02ffb1ec834ce2efabb7f5bab8667e294c) |
2323
`;
2424

2525
const actual = multiplePrBody(submodules);
@@ -33,7 +33,7 @@ test("single pr body for single submodule", async () => {
3333
vscodeIcons.latestCommitSha = "da859f02ffb1ec834ce2efabb7f5bab8667e294c";
3434
const expected = `
3535
| --- | --- | --- |
36-
| [ports/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [71d98b8...da859f0](https://github.com/catppuccin/vscode-icons/compare/71d98b81bfdb6b8d3527037c3017eb07e6ec0621...da859f02ffb1ec834ce2efabb7f5bab8667e294c) |
36+
| [catppuccin/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [71d98b8...da859f0](https://github.com/catppuccin/vscode-icons/compare/71d98b81bfdb6b8d3527037c3017eb07e6ec0621...da859f02ffb1ec834ce2efabb7f5bab8667e294c) |
3737
`;
3838

3939
const actual = singlePrBody(vscodeIcons);
@@ -53,9 +53,9 @@ test("markdown pr body for multiple submodules using tag strategy", async () =>
5353
const submodules = [mdBook, nvim, vscodeIcons];
5454
const expected = `
5555
| --- | --- | --- |
56-
| [ports/mdBook](https://github.com/catppuccin/mdBook.git) | ports/mdBook | [v0.1.2...v2.2.0](https://github.com/catppuccin/mdBook/compare/v0.1.2...v2.2.0) |
57-
| [ports/nvim](https://github.com/catppuccin/nvim.git) | ports/nvim | [v1.8.0...v1.9.0](https://github.com/catppuccin/nvim/compare/v1.8.0...v1.9.0) |
58-
| [ports/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [v1.14.0...v1.15.0](https://github.com/catppuccin/vscode-icons/compare/v1.14.0...v1.15.0) |
56+
| [catppuccin/mdBook](https://github.com/catppuccin/mdBook.git) | ports/mdBook | [v0.1.2...v2.2.0](https://github.com/catppuccin/mdBook/compare/v0.1.2...v2.2.0) |
57+
| [catppuccin/nvim](https://github.com/catppuccin/nvim.git) | ports/nvim | [v1.8.0...v1.9.0](https://github.com/catppuccin/nvim/compare/v1.8.0...v1.9.0) |
58+
| [catppuccin/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [v1.14.0...v1.15.0](https://github.com/catppuccin/vscode-icons/compare/v1.14.0...v1.15.0) |
5959
`;
6060

6161
const actual = multiplePrBody(submodules);
@@ -68,7 +68,7 @@ test("single pr body for single submodule using tag strategy", async () => {
6868
vscodeIcons.latestTag = "v1.15.0";
6969
const expected = `
7070
| --- | --- | --- |
71-
| [ports/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [v1.14.0...v1.15.0](https://github.com/catppuccin/vscode-icons/compare/v1.14.0...v1.15.0) |
71+
| [catppuccin/vscode-icons](https://github.com/catppuccin/vscode-icons.git) | ports/vscode-icons | [v1.14.0...v1.15.0](https://github.com/catppuccin/vscode-icons/compare/v1.14.0...v1.15.0) |
7272
`;
7373

7474
const actual = singlePrBody(vscodeIcons);

src/__tests__/utils.ts

Lines changed: 7 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,56 +9,12 @@ class SubmoduleBuilder {
99
}
1010
}
1111

12-
setName(name: string): SubmoduleBuilder {
13-
this.submodule.name = name;
14-
return this;
15-
}
16-
17-
setPath(path: string): SubmoduleBuilder {
18-
this.submodule.path = path;
19-
return this;
20-
}
21-
22-
setUrl(url: string): SubmoduleBuilder {
23-
this.submodule.url = url;
24-
return this;
25-
}
26-
27-
setPreviousShortCommitSha(sha: string): SubmoduleBuilder {
28-
this.submodule.previousShortCommitSha = sha;
29-
return this;
30-
}
31-
32-
setPreviousCommitSha(sha: string): SubmoduleBuilder {
33-
this.submodule.previousCommitSha = sha;
34-
return this;
35-
}
36-
37-
setPreviousTag(tag: string): SubmoduleBuilder {
38-
this.submodule.previousTag = tag;
39-
return this;
40-
}
41-
42-
setLatestShortCommitSha(sha: string): SubmoduleBuilder {
43-
this.submodule.latestShortCommitSha = sha;
44-
return this;
45-
}
46-
47-
setLatestCommitSha(sha: string): SubmoduleBuilder {
48-
this.submodule.latestCommitSha = sha;
49-
return this;
50-
}
51-
52-
setLatestTag(tag: string): SubmoduleBuilder {
53-
this.submodule.latestTag = tag;
54-
return this;
55-
}
56-
5712
build(): Submodule {
5813
if (
5914
!this.submodule.name ||
6015
!this.submodule.path ||
6116
!this.submodule.url ||
17+
!this.submodule.remoteName ||
6218
!this.submodule.previousShortCommitSha ||
6319
!this.submodule.previousCommitSha ||
6420
!this.submodule.latestShortCommitSha ||
@@ -74,6 +30,7 @@ export const mdBookSubmodule = (
7430
name: string = "ports/mdBook",
7531
path: string = "ports/mdBook",
7632
url: string = "https://github.com/catppuccin/mdBook.git",
33+
remoteName: string = "catppuccin/mdBook",
7734
previousShortCommitSha: string = "a19a19b",
7835
previousCommitSha: string = "a19a19bd14f26c3bba311bbffc5a74710add5ac2",
7936
previousTag: string = "v0.1.2",
@@ -84,6 +41,7 @@ export const mdBookSubmodule = (
8441
name,
8542
path,
8643
url,
44+
remoteName,
8745
previousShortCommitSha,
8846
previousCommitSha,
8947
previousTag,
@@ -96,6 +54,7 @@ export const vscodeIconsSubmodule = (
9654
name: string = "ports/vscode-icons",
9755
path: string = "ports/vscode-icons",
9856
url: string = "https://github.com/catppuccin/vscode-icons.git",
57+
remoteName: string = "catppuccin/vscode-icons",
9958
previousShortCommitSha: string = "71d98b8",
10059
previousCommitSha: string = "71d98b81bfdb6b8d3527037c3017eb07e6ec0621",
10160
previousTag: string = "v1.14.0",
@@ -106,6 +65,7 @@ export const vscodeIconsSubmodule = (
10665
name,
10766
path,
10867
url,
68+
remoteName,
10969
previousShortCommitSha,
11070
previousCommitSha,
11171
previousTag,
@@ -118,6 +78,7 @@ export const nvimSubmodule = (
11878
name: string = "ports/nvim",
11979
path: string = "ports/nvim",
12080
url: string = "https://github.com/catppuccin/nvim.git",
81+
remoteName: string = "catppuccin/nvim",
12182
previousShortCommitSha: string = "774a4ed",
12283
previousCommitSha: string = "774a4ed9a69d0a2633da60f73aa63a8e23aacced",
12384
previousTag: string = "v1.8.0",
@@ -128,6 +89,7 @@ export const nvimSubmodule = (
12889
name,
12990
path,
13091
url,
92+
remoteName,
13193
previousShortCommitSha,
13294
previousCommitSha,
13395
previousTag,

src/main.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export type Submodule = {
2828
name: string;
2929
path: string;
3030
url: string;
31+
remoteName: string;
3132
previousShortCommitSha: string;
3233
previousCommitSha: string;
3334
previousTag?: string;
@@ -92,13 +93,16 @@ export const parseGitmodules = async (
9293
const name = key.split('"')[1].trim();
9394
const path = values.path.replace(/"/g, "").trim();
9495
const url = values.url.replace(/"/g, "").trim();
96+
const urlParts = url.replace(".git", "").split("/");
97+
const remoteName = `${urlParts[3]}/${urlParts[4]}`;
9598
const [previousCommitSha, previousShortCommitSha] = await getCommit(path);
9699
const previousTag = await getPreviousTag(path);
97100

98101
return {
99102
name,
100103
path,
101104
url,
105+
remoteName,
102106
previousShortCommitSha,
103107
previousCommitSha,
104108

@@ -199,6 +203,7 @@ export const setDynamicOutputs = (prefix: string, submodule: Submodule) => {
199203
core.setOutput(`${prefix}--updated`, true);
200204
core.setOutput(`${prefix}--path`, submodule.path);
201205
core.setOutput(`${prefix}--url`, submodule.url);
206+
core.setOutput(`${prefix}--url`, submodule.remoteName);
202207
core.setOutput(
203208
`${prefix}--previousShortCommitSha`,
204209
submodule.previousShortCommitSha

src/markdown.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ const footer = () =>
66
"---\n\nThis PR was generated by [sgoudham/update-git-submodules](https://github.com/sgoudham/update-git-submodules).";
77

88
const tableHeader = () =>
9-
"| **Submodule Name** | **Submodule Path** | **Change** |\n| --- | --- | --- |";
9+
"| **Remote Repository** | **Submodule Path** | **Change** |\n| --- | --- | --- |";
1010

1111
const tableRow = (submodule: Submodule) => {
12-
const name = `[${submodule.name}](${submodule.url})`;
12+
const name = `[${submodule.remoteName}](${submodule.url})`;
1313
const cleanUrl = submodule.url.replace(".git", "");
1414
let changeDisplay = `${submodule.previousShortCommitSha}...${submodule.latestShortCommitSha}`;
1515
let changeUrl = `[${changeDisplay}](${cleanUrl}/compare/${submodule.previousCommitSha}...${submodule.latestCommitSha})`;

0 commit comments

Comments
 (0)