@@ -64,16 +64,7 @@ export async function syncGitHubAppsData(openApiSource, sourceSchemas, progAcces
6464 // permissions
6565 for ( const permissionSet of progAccessData [ operation . operationId ] . permissions ) {
6666 for ( const [ permissionName , readOrWrite ] of Object . entries ( permissionSet ) ) {
67- const tempTitle = permissionName . replace ( / _ / g, ' ' )
68- const permissionNameExists = progActorResources [ permissionName ]
69- if ( ! permissionNameExists ) {
70- console . warn (
71- `The permission ${ permissionName } is missing from config/locales/programmatic_actor_fine_grained_resources.en.yml. Creating a placeholder value of ${ tempTitle } until it's added.` ,
72- )
73- }
74- const title = progActorResources [ permissionName ] ?. title || tempTitle
75- const resourceGroup = progActorResources [ permissionName ] ?. resource_group || ''
76- const displayTitle = getDisplayTitle ( title , resourceGroup )
67+ const { title, displayTitle } = getDisplayTitle ( permissionName , progActorResources )
7768 const additionalPermissions =
7869 progAccessData [ operation . operationId ] . permissions . length > 1 ||
7970 progAccessData [ operation . operationId ] . permissions . some (
@@ -153,7 +144,7 @@ export async function syncGitHubAppsData(openApiSource, sourceSchemas, progAcces
153144 }
154145}
155146
156- export async function getProgAccessData ( progAccessSource ) {
147+ export async function getProgAccessData ( progAccessSource , isRest = false ) {
157148 const useRemoteGitHubFiles = progAccessSource === 'rest-api-description'
158149 // check for required PAT
159150 if ( useRemoteGitHubFiles && ! process . env . GITHUB_TOKEN ) {
@@ -189,14 +180,31 @@ export async function getProgAccessData(progAccessSource) {
189180 userToServerRest : operation . user_to_server . enabled ,
190181 serverToServer : operation . server_to_server . enabled ,
191182 fineGrainedPat : operation . user_to_server . enabled && ! operation . disabled_for_patv2 ,
192- permissions : operation . permission_sets || [ ] ,
183+ permissions : isRest
184+ ? getDisplayPermissions ( operation . permission_sets || [ ] , progActorResources )
185+ : operation . permission_sets || [ ] ,
193186 allowPermissionlessAccess : operation . allows_permissionless_access ,
194187 allowsPublicRead : operation . allows_public_read ,
195188 }
196189 }
190+
197191 return { progAccessData, progActorResources }
198192}
199193
194+ function getDisplayPermissions ( permissionSets , progActorResources ) {
195+ const displayPermissions = permissionSets . map ( ( permissionSet ) => {
196+ const displayPermissionSet = { }
197+ Object . entries ( permissionSet ) . forEach ( ( [ key , value ] ) => {
198+ const { displayTitle } = getDisplayTitle ( key , progActorResources , true )
199+ displayPermissionSet [ displayTitle ] = value
200+ } )
201+
202+ return displayPermissionSet
203+ } )
204+
205+ return displayPermissions
206+ }
207+
200208function sortObjectByKeys ( obj ) {
201209 return Object . keys ( obj )
202210 . sort ( )
@@ -223,15 +231,31 @@ function sortObjectByTitle(obj) {
223231 } , { } )
224232}
225233
226- function getDisplayTitle ( title , resourceGroup ) {
234+ function getDisplayTitle ( permissionName , progActorResources , isRest = false ) {
235+ const tempTitle = permissionName . replace ( / _ / g, ' ' )
236+ const permissionNameExists = progActorResources [ permissionName ]
237+ if ( ! permissionNameExists ) {
238+ console . warn (
239+ `The permission ${ permissionName } is missing from config/locales/programmatic_actor_fine_grained_resources.en.yml. Creating a placeholder value of ${ tempTitle } until it's added.` ,
240+ )
241+ }
242+ const title = progActorResources [ permissionName ] ?. title || tempTitle
243+ const resourceGroup = progActorResources [ permissionName ] ?. resource_group || ''
244+
227245 if ( ! title ) {
228246 console . warn ( `No title found for title ${ title } resource group ${ resourceGroup } ` )
229247 return ''
230248 }
231249
232- return ! resourceGroup
233- ? sentenceCase ( title ) + ' permissions'
234- : sentenceCase ( resourceGroup ) + ' permissions for ' + `"${ title } "`
250+ const displayTitle = isRest
251+ ? ! resourceGroup
252+ ? sentenceCase ( title ) + ' permissions'
253+ : `"${ sentenceCase ( title ) } " ` + resourceGroup + ' permissions'
254+ : ! resourceGroup
255+ ? sentenceCase ( title ) + ' permissions'
256+ : sentenceCase ( resourceGroup ) + ' permissions for ' + `"${ title } "`
257+
258+ return { title, displayTitle }
235259}
236260
237261function sentenceCase ( str ) {
0 commit comments