@@ -10,6 +10,7 @@ import {
1010 FileSyncResult ,
1111} from "../utils/gh-sync-utils" ;
1212import { RepoGroup , processRepo } from "../utils/gh-sync-utils/gh-sync-repo" ;
13+ import { logger } from "../logger" ;
1314
1415export class GhSyncTask implements Task {
1516 /**
@@ -37,13 +38,41 @@ export class GhSyncTask implements Task {
3738 validateDependencies ( depends ) ;
3839 validateReposConfiguration ( repos as unknown [ ] ) ;
3940
40- const typedRepos = repos as unknown [ ] ;
41+ const typedRepos = repos as unknown [ ] as RepoGroup [ ] ;
4142 const allResults : FileSyncResult [ ] = [ ] ;
4243
43- // Process each repository group directly
44- for ( const repoGroup of typedRepos ) {
45- const typedRepoGroup = repoGroup as RepoGroup ;
46- const { repo, files } = typedRepoGroup ;
44+ // Show repository selection prompt
45+ logger . info (
46+ "Select repositories to sync (use spacebar to select multiple, enter to confirm):"
47+ ) ;
48+
49+ const repoOptions = typedRepos . map ( repoGroup => ( {
50+ title : repoGroup . repo ,
51+ value : repoGroup . repo ,
52+ } ) ) ;
53+
54+ const selectedRepos = await logger . prompt ( "Choose repositories:" , {
55+ type : "multiselect" ,
56+ options : repoOptions . map ( opt => opt . title ) ,
57+ } ) ;
58+
59+ if (
60+ ! selectedRepos ||
61+ ! Array . isArray ( selectedRepos ) ||
62+ selectedRepos . length === 0
63+ ) {
64+ logger . info ( "No repositories selected. Exiting." ) ;
65+ return ;
66+ }
67+
68+ const selectedReposSet = new Set ( selectedRepos as string [ ] ) ;
69+ const reposToProcess = typedRepos . filter ( repoGroup =>
70+ selectedReposSet . has ( repoGroup . repo )
71+ ) ;
72+
73+ // Process each selected repository
74+ for ( const repoGroup of reposToProcess ) {
75+ const { repo, files } = repoGroup ;
4776
4877 // Validate repository group structure
4978 validateRepositoryGroup ( repo , files ) ;
@@ -53,7 +82,7 @@ export class GhSyncTask implements Task {
5382
5483 // Create a modified repoGroup with the processed repo name
5584 const processedRepoGroup = {
56- ...typedRepoGroup ,
85+ ...repoGroup ,
5786 repo : processedRepo ,
5887 } ;
5988
0 commit comments