Skip to content

Commit 69c8855

Browse files
authored
Add a prettier config. (#25)
Ensure Prettier formatted code is styled consistently rather than allowing system prettier configs to apply. Also adds a presubmit check to enforce prettier formatting.
1 parent ad34a4c commit 69c8855

File tree

24 files changed

+1695
-1765
lines changed

24 files changed

+1695
-1765
lines changed

.github/workflows/presubmit.yaml

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,38 @@
1-
name: Buildifier
1+
name: Presubmit
22
on:
3-
push:
4-
branches: [main]
5-
pull_request:
6-
branches: [main]
7-
# Allow manual execution.
8-
workflow_dispatch:
3+
push:
4+
branches: [main]
5+
pull_request:
6+
branches: [main]
7+
# Allow manual execution.
8+
workflow_dispatch:
99
jobs:
10-
buildifier:
11-
runs-on: ubuntu-latest
12-
steps:
13-
- uses: actions/checkout@v4
14-
- uses: actions/setup-go@v5
15-
with:
16-
go-version: '1.24.0'
17-
- name: install
18-
run: go install github.com/bazelbuild/buildtools/buildifier@latest
19-
- name: check
20-
run: buildifier --mode=check -r .
21-
- name: lint
22-
run: buildifier --lint=warn -r .
23-
continue-on-error: true
10+
buildifier:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: actions/setup-go@v5
15+
with:
16+
go-version: '1.24.0'
17+
- name: install
18+
run: go install github.com/bazelbuild/buildtools/buildifier@latest
19+
- name: check
20+
run: buildifier --mode=check -r .
21+
- name: lint
22+
run: buildifier --lint=warn -r .
23+
continue-on-error: true
24+
prettier:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: pnpm/action-setup@v2
29+
with:
30+
version: 10.17.1
31+
- uses: actions/setup-node@v5
32+
with:
33+
node-version: 22.18.0
34+
cache: 'pnpm'
35+
- name: install
36+
run: pnpm install
37+
- name: check
38+
run: pnpm format:check

.prettierignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.prettierrc
2+
pnpm-lock.yaml

.prettierrc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"printWidth": 80,
3+
"tabWidth": 2,
4+
"useTabs": false,
5+
"semi": true,
6+
"singleQuote": true,
7+
"quoteProps": "preserve",
8+
"bracketSpacing": false,
9+
"trailingComma": "all",
10+
"arrowParens": "always",
11+
"embeddedLanguageFormatting": "off",
12+
"bracketSameLine": true,
13+
"singleAttributePerLine": false,
14+
"jsxSingleQuote": false,
15+
"htmlWhitespaceSensitivity": "strict"
16+
}

MODULE.bazel.lock

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

browsers/private/update-tool/download.mts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import {
33
BrowserPlatform,
44
computeExecutablePath,
55
getDownloadUrl,
6-
} from "@puppeteer/browsers";
7-
import path from "node:path";
6+
} from '@puppeteer/browsers';
7+
import path from 'node:path';
88

9-
import { platforms } from "./platforms.mjs";
10-
import { downloadFileThroughStreaming, sha256 } from "./download_helpers.mjs";
9+
import {platforms} from './platforms.mjs';
10+
import {downloadFileThroughStreaming, sha256} from './download_helpers.mjs';
1111

1212
export interface BrowserBinaryInfo {
1313
browser: Browser;
@@ -24,7 +24,7 @@ export async function downloadAndHashBinariesForBrowser(
2424
browser: Browser,
2525
buildId: string,
2626
namedFiles: Partial<Record<BrowserPlatform, Record<string, string>>> = {},
27-
excludeFilesForPerformance: Partial<Record<BrowserPlatform, string[]>> = {}
27+
excludeFilesForPerformance: Partial<Record<BrowserPlatform, string[]>> = {},
2828
): Promise<BrowserBinaryInfo[]> {
2929
const downloadAndHashTasks: Promise<BrowserBinaryInfo>[] = [];
3030

@@ -53,7 +53,7 @@ export async function downloadAndHashBinariesForBrowser(
5353
excludeFilesForPerformance: platformExcludePatterns,
5454
namedFiles: platformNamedFiles,
5555
};
56-
})()
56+
})(),
5757
);
5858
}
5959

browsers/private/update-tool/download_helpers.mts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import { Readable } from "node:stream";
10-
import fs from "node:fs";
11-
import { createHash } from "node:crypto";
9+
import {Readable} from 'node:stream';
10+
import fs from 'node:fs';
11+
import {createHash} from 'node:crypto';
1212

1313
/**
1414
* Downloads a file and stores it at the given location.
@@ -18,7 +18,7 @@ import { createHash } from "node:crypto";
1818
*/
1919
export async function downloadFileThroughStreaming(
2020
sourceUrl: URL,
21-
destinationPath: string
21+
destinationPath: string,
2222
): Promise<void> {
2323
return new Promise(async (resolve, reject) => {
2424
const result = await fetch(sourceUrl);
@@ -34,19 +34,19 @@ export async function downloadFileThroughStreaming(
3434
const stream = Readable.fromWeb(result.body);
3535
const outStream = fs.createWriteStream(destinationPath);
3636

37-
stream.on("error", (err) => reject(err));
38-
stream.on("close", () => resolve());
37+
stream.on('error', (err) => reject(err));
38+
stream.on('close', () => resolve());
3939
stream.pipe(outStream);
4040
});
4141
}
4242

4343
export async function sha256(filePath: string): Promise<string> {
4444
return new Promise((resolve, reject) => {
4545
const stream = fs.createReadStream(filePath);
46-
const hash = createHash("sha256");
46+
const hash = createHash('sha256');
4747

48-
stream.on("error", (err) => reject(err));
49-
stream.on("close", () => resolve(hash.digest("hex")));
48+
stream.on('error', (err) => reject(err));
49+
stream.on('close', () => resolve(hash.digest('hex')));
5050
stream.pipe(hash);
5151
});
5252
}

browsers/private/update-tool/generation.mts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Browser } from "@puppeteer/browsers";
2-
import { BrowserBinaryInfo } from "./download.mjs";
1+
import {Browser} from '@puppeteer/browsers';
2+
import {BrowserBinaryInfo} from './download.mjs';
33

44
export interface RepoInfo {
55
url: string;
@@ -11,7 +11,7 @@ export interface RepoInfo {
1111
export type Versions = Record<string, Record<string, RepoInfo>>;
1212

1313
export function generateRepoInfo(
14-
binaries: BrowserBinaryInfo[]
14+
binaries: BrowserBinaryInfo[],
1515
): Record<string, RepoInfo> {
1616
const repos: Record<string, RepoInfo> = {};
1717

@@ -30,11 +30,11 @@ export function generateRepoInfo(
3030
export function generateVersionsBzlFile(
3131
browserName: string,
3232
defaultVersion: string,
33-
versions: Versions
33+
versions: Versions,
3434
): string {
3535
return `"""Available versions of "${browserName}".
3636
37-
DO NOT EDIT. Generated by ${process.env["JS_BINARY__TARGET"]}.
37+
DO NOT EDIT. Generated by ${process.env['JS_BINARY__TARGET']}.
3838
"""
3939
4040
DEFAULT_VERSION = "${defaultVersion}"

browsers/private/update-tool/index.mts

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import { resolveBuildId, Browser, BrowserPlatform } from "@puppeteer/browsers";
10-
import { mkdtemp } from "node:fs/promises";
11-
import os from "node:os";
12-
import path from "node:path";
13-
import { downloadAndHashBinariesForBrowser } from "./download.mjs";
9+
import {resolveBuildId, Browser, BrowserPlatform} from '@puppeteer/browsers';
10+
import {mkdtemp} from 'node:fs/promises';
11+
import os from 'node:os';
12+
import path from 'node:path';
13+
import {downloadAndHashBinariesForBrowser} from './download.mjs';
1414
import {
1515
generateRepoInfo,
1616
generateVersionsBzlFile,
1717
Versions,
18-
} from "./generation.mjs";
19-
import fs from "node:fs/promises";
20-
import { getChromeMilestones, getFirefoxMilestones } from "./versions.mjs";
18+
} from './generation.mjs';
19+
import fs from 'node:fs/promises';
20+
import {getChromeMilestones, getFirefoxMilestones} from './versions.mjs';
2121

2222
main().catch((e) => {
2323
console.error(e);
@@ -36,7 +36,7 @@ interface WriteVersionsOptions {
3636
// We treat chrome-headless-shell as Chromium in the module. This function
3737
// ensures browser name is written to files as expected.
3838
function getReadableBrowserName(browser: Browser): string {
39-
return browser === Browser.CHROMEHEADLESSSHELL ? "chromium" : browser;
39+
return browser === Browser.CHROMEHEADLESSSHELL ? 'chromium' : browser;
4040
}
4141

4242
async function downloadMilestonesAndWriteVersionsFiles({
@@ -50,20 +50,20 @@ async function downloadMilestonesAndWriteVersionsFiles({
5050
buildIdToVersion = buildIdToVersion ?? ((buildId) => buildId);
5151

5252
const buildIds = await Promise.all(
53-
milestones.map((milestone) => resolveBuildId(browser, null!, milestone))
53+
milestones.map((milestone) => resolveBuildId(browser, null!, milestone)),
5454
);
5555

5656
const fileBasePath = path.join(
5757
workspaceRoot,
58-
"browsers/private/versions",
59-
getReadableBrowserName(browser)
58+
'browsers/private/versions',
59+
getReadableBrowserName(browser),
6060
);
6161
// We keep a JSON file around that only holds the versions without any of the
6262
// additional content in the `.bzl` file. This enables merging of existing
6363
// versions with newly fetched one's without having to do string gymnastics on
6464
// the `.bzl` file.
65-
const jsonFilePath = fileBasePath + ".json";
66-
const bzlFilePath = fileBasePath + ".bzl";
65+
const jsonFilePath = fileBasePath + '.json';
66+
const bzlFilePath = fileBasePath + '.bzl';
6767

6868
let versions: Versions = {};
6969

@@ -72,19 +72,19 @@ async function downloadMilestonesAndWriteVersionsFiles({
7272
// same milestone. If the new version has a different build ID, we will
7373
// provide both versions. Otherwise the old version will remain.
7474
try {
75-
const currentVersionsRaw = await fs.readFile(jsonFilePath, "utf8");
75+
const currentVersionsRaw = await fs.readFile(jsonFilePath, 'utf8');
7676
const currentVersions = JSON.parse(currentVersionsRaw) as Versions;
7777
versions = currentVersions;
7878
} catch (err: unknown) {
79-
console.warn("Failed to read versions JSON file:", (err as Error).message);
79+
console.warn('Failed to read versions JSON file:', (err as Error).message);
8080
}
8181

8282
// Don't download versions we downloaded previously again. This would not
8383
// catch cases where the binaries under an existing build ID changes, although
8484
// this should ideally never happen (at least for Chrome).
8585
const existingVersions = new Set(Object.keys(versions));
8686
const filteredNewBuildIds = buildIds.filter(
87-
(buildId) => !existingVersions.has(buildIdToVersion(buildId))
87+
(buildId) => !existingVersions.has(buildIdToVersion(buildId)),
8888
);
8989

9090
// Fetch the binaries for each build ID. The only reason we do this is to
@@ -96,9 +96,9 @@ async function downloadMilestonesAndWriteVersionsFiles({
9696
browser,
9797
buildId,
9898
{},
99-
excludeFilesForPerformance
100-
)
101-
)
99+
excludeFilesForPerformance,
100+
),
101+
),
102102
);
103103

104104
for (const binariesForBuild of binariesForBuilds) {
@@ -118,14 +118,14 @@ async function downloadMilestonesAndWriteVersionsFiles({
118118
generateVersionsBzlFile(
119119
getReadableBrowserName(browser),
120120
defaultVersion,
121-
versions
122-
)
121+
versions,
122+
),
123123
);
124124
}
125125

126126
async function main() {
127-
const tmpDir = await mkdtemp(path.join(os.tmpdir(), "rules_browsers_tmp-"));
128-
const workspaceRoot = process.env["BUILD_WORKING_DIRECTORY"]!;
127+
const tmpDir = await mkdtemp(path.join(os.tmpdir(), 'rules_browsers_tmp-'));
128+
const workspaceRoot = process.env['BUILD_WORKING_DIRECTORY']!;
129129

130130
// Fetch the last 15 milestones for each browser. This is mostly relevant when
131131
// browsers haven't been updated in a long time and we want to backfill. All
@@ -143,10 +143,10 @@ async function main() {
143143
workspaceRoot,
144144
excludeFilesForPerformance: {
145145
// Exclude log files that Chrome might write to— causing remote cache misses.
146-
[BrowserPlatform.LINUX]: ["**/*.log"],
147-
[BrowserPlatform.MAC]: ["**/*.log"],
148-
[BrowserPlatform.MAC_ARM]: ["**/*.log"],
149-
[BrowserPlatform.WIN64]: ["**/*.log"],
146+
[BrowserPlatform.LINUX]: ['**/*.log'],
147+
[BrowserPlatform.MAC]: ['**/*.log'],
148+
[BrowserPlatform.MAC_ARM]: ['**/*.log'],
149+
[BrowserPlatform.WIN64]: ['**/*.log'],
150150
},
151151
}),
152152
downloadMilestonesAndWriteVersionsFiles({
@@ -162,9 +162,9 @@ async function main() {
162162
workspaceRoot,
163163
// We want Firefox to be addressable with "120.0" instead of
164164
// "stable_120.0", so we rewrite the build ID.
165-
buildIdToVersion: (buildId: string) => buildId.replace(/^stable_/, ""),
165+
buildIdToVersion: (buildId: string) => buildId.replace(/^stable_/, ''),
166166
}),
167167
]);
168168

169-
await fs.rm(tmpDir, { recursive: true, maxRetries: 2 });
169+
await fs.rm(tmpDir, {recursive: true, maxRetries: 2});
170170
}

browsers/private/update-tool/platforms.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import { BrowserPlatform } from "@puppeteer/browsers";
9+
import {BrowserPlatform} from '@puppeteer/browsers';
1010

1111
export const platforms: BrowserPlatform[] = [
1212
BrowserPlatform.LINUX,

browsers/private/update-tool/versions.mts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ interface ChromeForTestingLatestVersionsPerMilestoneResponse {
1212
}
1313

1414
export async function getChromeMilestones(
15-
maxMilestones: number
15+
maxMilestones: number,
1616
): Promise<Array<string>> {
1717
const response = await fetch(
18-
"https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone.json"
18+
'https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone.json',
1919
);
2020
const responseJson =
2121
(await response.json()) as ChromeForTestingLatestVersionsPerMilestoneResponse;
@@ -28,14 +28,14 @@ interface FirefoxMajorReleasesResponse {
2828
}
2929

3030
export async function getFirefoxMilestones(
31-
maxMilestones: number
31+
maxMilestones: number,
3232
): Promise<Array<string>> {
3333
const response = await fetch(
34-
"https://product-details.mozilla.org/1.0/firefox_history_major_releases.json"
34+
'https://product-details.mozilla.org/1.0/firefox_history_major_releases.json',
3535
);
3636
const responseJson = (await response.json()) as FirefoxMajorReleasesResponse;
3737
const milestones = Object.keys(responseJson);
3838
return [...milestones]
3939
.slice(-maxMilestones)
40-
.map((milestone) => "stable_" + milestone);
40+
.map((milestone) => 'stable_' + milestone);
4141
}

0 commit comments

Comments
 (0)