Skip to content

Commit 542d8c7

Browse files
authored
Merge pull request #172 from ProverCoderAI/fix/ci-check-github-token-validation
Fix GitHub auth lint failures and harden CI setup
2 parents a03c7a1 + 77210c1 commit 542d8c7

File tree

3 files changed

+23
-22
lines changed

3 files changed

+23
-22
lines changed

.github/actions/setup/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ runs:
1010
using: composite
1111
steps:
1212
- name: Install pnpm
13-
uses: pnpm/action-setup@v3
13+
uses: pnpm/action-setup@v5
1414
- name: Install node
1515
uses: actions/setup-node@v6
1616
with:
1717
cache: pnpm
1818
node-version: ${{ inputs.node-version }}
1919
- name: Install dependencies
2020
shell: bash
21-
run: pnpm install
21+
run: pnpm install --frozen-lockfile

packages/lib/src/usecases/auth-github.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,27 @@ const renderGithubTokenStatusLine = (entry: GithubTokenStatusEntry): string =>
125125
Match.when("valid", () =>
126126
entry.login === null
127127
? `- ${entry.label}: valid (owner unavailable)`
128-
: `- ${entry.label}: valid (owner: ${entry.login})`
129-
),
128+
: `- ${entry.label}: valid (owner: ${entry.login})`),
130129
Match.when("invalid", () => `- ${entry.label}: invalid`),
131130
Match.when("unknown", () => `- ${entry.label}: unknown (validation unavailable)`),
132131
Match.exhaustive
133132
)
134133

135134
const renderGithubTokenStatusReport = (entries: ReadonlyArray<GithubTokenStatusEntry>): string =>
136-
[`GitHub tokens (${entries.length}):`, ...entries.map(renderGithubTokenStatusLine)].join("\n")
135+
[`GitHub tokens (${entries.length}):`, ...entries.map((entry) => renderGithubTokenStatusLine(entry))].join("\n")
136+
137+
const validateGithubTokenEntry = (
138+
entry: GithubTokenEntry
139+
): Effect.Effect<GithubTokenStatusEntry> =>
140+
validateGithubToken(entry.token).pipe(
141+
Effect.map((validation) => ({
142+
key: entry.key,
143+
label: entry.label,
144+
token: entry.token,
145+
status: validation.status,
146+
login: validation.login
147+
}))
148+
)
137149

138150
const resolveGithubTokenFromGh = (
139151
cwd: string,
@@ -291,19 +303,7 @@ export const authGithubStatus = (
291303
return
292304
}
293305

294-
const statuses = yield* _(
295-
Effect.forEach(tokens, (entry) =>
296-
validateGithubToken(entry.token).pipe(
297-
Effect.map((validation) => ({
298-
key: entry.key,
299-
label: entry.label,
300-
token: entry.token,
301-
status: validation.status,
302-
login: validation.login
303-
}))
304-
)
305-
)
306-
)
306+
const statuses = yield* _(Effect.all(tokens.map((entry) => validateGithubTokenEntry(entry))))
307307

308308
yield* _(Effect.log(renderGithubTokenStatusReport(statuses)))
309309
}))

packages/lib/src/usecases/github-token-validation.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { FetchHttpClient, HttpClient } from "@effect/platform"
22
import * as ParseResult from "@effect/schema/ParseResult"
33
import * as Schema from "@effect/schema/Schema"
4-
import { Either, Effect } from "effect"
4+
import { Effect, Either } from "effect"
55

66
const githubTokenValidationUrl = "https://api.github.com/user"
77

@@ -23,14 +23,15 @@ export type GithubTokenValidationResult = {
2323
const GithubUserSchema: Schema.Schema<GithubUser> = Schema.Struct({
2424
login: Schema.String
2525
})
26+
const GithubUserJsonSchema = Schema.parseJson(GithubUserSchema)
2627

2728
const unknownGithubTokenValidationResult = (): GithubTokenValidationResult => ({
2829
status: "unknown",
2930
login: null
3031
})
3132

32-
const decodeGithubUserLogin = (input: unknown): string | null =>
33-
Either.match(ParseResult.decodeUnknownEither(GithubUserSchema)(input), {
33+
const decodeGithubUserLogin = (input: string): string | null =>
34+
Either.match(ParseResult.decodeUnknownEither(GithubUserJsonSchema)(input), {
3435
onLeft: () => null,
3536
onRight: (user) => user.login
3637
})
@@ -72,7 +73,7 @@ export const validateGithubToken = (token: string): Effect.Effect<GithubTokenVal
7273
} satisfies GithubTokenValidationResult
7374
}
7475

75-
const body = yield* _(response.json)
76+
const body = yield* _(response.text)
7677
return {
7778
status,
7879
login: decodeGithubUserLogin(body)

0 commit comments

Comments
 (0)