Skip to content

Commit 2577589

Browse files
committed
fix(release): debug 5
1 parent 879652c commit 2577589

File tree

1 file changed

+38
-12
lines changed

1 file changed

+38
-12
lines changed

.github/workflows/publish.yml

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,53 @@ jobs:
4040
const org = 'supabase'
4141
const { actor } = context
4242
43-
async function isTeamMember(team_slug) {
44-
console.log('isTeamMember', team_slug)
45-
console.log('actor', actor)
46-
console.log('Context', JSON.stringify(context, null, 2))
43+
async function isOrgAdmin() {
44+
try {
45+
const res = await github.rest.orgs.getMembershipForUser({ org, username: actor })
46+
return res?.status === 200 && res.data?.role === 'admin' && res.data?.state === 'active'
47+
} catch (e) {
48+
console.log('Org membership check failed', e)
49+
return false
50+
}
51+
}
52+
53+
async function resolveTeamSlug(preferredSlugs) {
54+
try {
55+
const teams = await github.paginate(github.rest.teams.list, { org })
56+
const lower = (s) => (s || '').toLowerCase()
57+
const candidates = preferredSlugs.map(lower)
58+
const team = teams.find((t) => {
59+
const slug = lower(t.slug)
60+
const name = lower(t.name)
61+
return candidates.includes(slug) || candidates.includes(name)
62+
})
63+
return team?.slug
64+
} catch (e) {
65+
console.log('Failed to list teams', e)
66+
return undefined
67+
}
68+
}
69+
70+
async function isTeamMemberByResolvedSlug(preferredSlugs) {
71+
const resolved = await resolveTeamSlug(preferredSlugs)
72+
if (!resolved) return false
4773
try {
4874
const res = await github.rest.teams.getMembershipForUserInOrg({
4975
org,
50-
team_slug,
76+
team_slug: resolved,
5177
username: actor,
5278
})
53-
console.log('Here is res', JSON.stringify(res, null, 2))
54-
return res && res.status === 200
55-
} catch (_) {
56-
console.log('Here is error', JSON.stringify(_, null, 2))
79+
return res?.status === 200
80+
} catch (err) {
81+
console.log(`Membership check failed for slug ${resolved}`, err)
5782
return false
5883
}
5984
}
6085
61-
const isAdmin = await isTeamMember('admin')
62-
63-
const isMember = isAdmin
86+
const isAdminOrg = await isOrgAdmin()
87+
const isAdminTeam = await isTeamMemberByResolvedSlug(['admin','admins','owners'])
88+
const isClientLibs = await isTeamMemberByResolvedSlug(['client-libs','clientlibs','client-libraries'])
89+
const isMember = Boolean(isAdminOrg || isAdminTeam || isClientLibs)
6490
core.setOutput('is_team_member', isMember ? 'true' : 'false')
6591
6692
- name: Fail if not authorized

0 commit comments

Comments
 (0)