@@ -198,6 +198,35 @@ const parseFiles = (files) => {
198198 } )
199199}
200200
201+ const parseRepoConfig = ( repoItem ) => {
202+ let repoName = repoItem
203+ let repoConfig = { }
204+
205+ if ( typeof repoItem === 'object' && repoItem !== null ) {
206+ repoName = repoItem . name
207+ if ( repoItem . assignees ) repoConfig . assignees = Array . isArray ( repoItem . assignees ) ? repoItem . assignees : [ repoItem . assignees ]
208+ if ( repoItem . reviewers ) repoConfig . reviewers = Array . isArray ( repoItem . reviewers ) ? repoItem . reviewers : [ repoItem . reviewers ]
209+ if ( repoItem . team_reviewers ) repoConfig . team_reviewers = Array . isArray ( repoItem . team_reviewers ) ? repoItem . team_reviewers : [ repoItem . team_reviewers ]
210+ }
211+
212+ return { repoName, repoConfig }
213+ }
214+
215+ const addRepoToResult = ( result , repoName , repoConfig , files ) => {
216+ const repo = parseRepoName ( repoName )
217+
218+ if ( result [ repo . uniqueName ] !== undefined ) {
219+ result [ repo . uniqueName ] . files . push ( ...files )
220+ return
221+ }
222+
223+ result [ repo . uniqueName ] = {
224+ repo,
225+ files,
226+ ...repoConfig
227+ }
228+ }
229+
201230export async function parseConfig ( ) {
202231 const fileContent = await fs . promises . readFile ( context . CONFIG_PATH )
203232
@@ -213,35 +242,30 @@ export async function parseConfig() {
213242
214243 groups . forEach ( ( group ) => {
215244 const repos = typeof group . repos === 'string' ? group . repos . split ( '\n' ) . map ( ( n ) => n . trim ( ) ) . filter ( ( n ) => n ) : group . repos
245+ const files = parseFiles ( group . files )
216246
217- repos . forEach ( ( name ) => {
218- const files = parseFiles ( group . files )
219- const repo = parseRepoName ( name )
220-
221- if ( result [ repo . uniqueName ] !== undefined ) {
222- result [ repo . uniqueName ] . files . push ( ...files )
223- return
224- }
225-
226- result [ repo . uniqueName ] = {
227- repo,
228- files
229- }
247+ repos . forEach ( ( repoItem ) => {
248+ const { repoName, repoConfig } = parseRepoConfig ( repoItem )
249+ addRepoToResult ( result , repoName , repoConfig , files )
230250 } )
231251 } )
232252 } else {
233- const files = parseFiles ( configObject [ key ] )
234- const repo = parseRepoName ( key )
235-
236- if ( result [ repo . uniqueName ] !== undefined ) {
237- result [ repo . uniqueName ] . files . push ( ...files )
238- return
239- }
240-
241- result [ repo . uniqueName ] = {
242- repo,
243- files
253+ let repoName = key
254+ let repoConfig = { }
255+ let repoFiles = configObject [ key ]
256+
257+ if ( typeof configObject [ key ] === 'object' && configObject [ key ] !== null && configObject [ key ] . files ) {
258+ repoFiles = configObject [ key ] . files
259+ const config = {
260+ name : repoName ,
261+ ...configObject [ key ]
262+ }
263+ const { repoConfig : parsedConfig } = parseRepoConfig ( config )
264+ repoConfig = parsedConfig
244265 }
266+
267+ const files = parseFiles ( repoFiles )
268+ addRepoToResult ( result , repoName , repoConfig , files )
245269 }
246270 } )
247271
0 commit comments