@@ -17,8 +17,8 @@ import (
1717 "context"
1818 "errors"
1919 "fmt"
20- "os"
2120 "path/filepath"
21+ "strings"
2222 "time"
2323
2424 "github.com/sirupsen/logrus"
@@ -29,7 +29,6 @@ import (
2929 "github.com/aws-controllers-k8s/dev-tools/pkg/config"
3030 ackdevgit "github.com/aws-controllers-k8s/dev-tools/pkg/git"
3131 "github.com/aws-controllers-k8s/dev-tools/pkg/github"
32- "github.com/aws-controllers-k8s/dev-tools/pkg/util"
3332)
3433
3534const (
@@ -90,30 +89,14 @@ type Manager struct {
9089}
9190
9291// LoadRepository loads information about a single local repository
93- func (m * Manager ) LoadRepository (name string , t RepositoryType ) (* Repository , error ) {
92+ func (m * Manager ) LoadRepository (name string ) (* Repository , error ) {
9493 // check repo cache
95- repo , err := m .GetRepository (name )
94+ repo , err := m .getRepository (name )
9695 if err == nil {
9796 return repo , nil
9897 }
9998
100- // fail if repository doesn't exist in the manager configuration
101- switch t {
102- case RepositoryTypeCore :
103- if ! util .InStrings (name , m .cfg .Repositories .Core ) {
104- return nil , ErrUnconfiguredRepository
105- }
106- case RepositoryTypeController :
107- if ! util .InStrings (name , m .cfg .Repositories .Services ) {
108- return nil , ErrUnconfiguredRepository
109- }
110- }
111-
11299 repoName := name
113- // controller repositories should always have a '-controller' suffix
114- if t == RepositoryTypeController {
115- repoName = fmt .Sprintf ("%s-controller" , name )
116- }
117100
118101 // set expected fork name
119102 expectedForkName := repoName
@@ -137,6 +120,11 @@ func (m *Manager) LoadRepository(name string, t RepositoryType) (*Repository, er
137120 gitHead = head .Name ().Short ()
138121 }
139122
123+ t := RepositoryTypeCore
124+ if strings .HasSuffix (name , "-controller" ) {
125+ t = RepositoryTypeController
126+ }
127+
140128 repo = & Repository {
141129 Name : repoName ,
142130 Type : t ,
@@ -156,22 +144,23 @@ func (m *Manager) LoadRepository(name string, t RepositoryType) (*Repository, er
156144func (m * Manager ) LoadAll () error {
157145 // collect repositories from config
158146 for _ , coreRepo := range m .cfg .Repositories .Core {
159- _ , err := m .LoadRepository (coreRepo , RepositoryTypeCore )
147+ _ , err := m .LoadRepository (coreRepo )
160148 if err != nil {
161149 return err
162150 }
163151 }
164152 for _ , serviceName := range m .cfg .Repositories .Services {
165- _ , err := m .LoadRepository (serviceName , RepositoryTypeController )
153+ serviceRepoName := fmt .Sprintf ("%s-controller" , serviceName )
154+ _ , err := m .LoadRepository (serviceRepoName )
166155 if err != nil {
167156 return err
168157 }
169158 }
170159 return nil
171160}
172161
173- // GetRepository return a known repository
174- func (m * Manager ) GetRepository (repoName string ) (* Repository , error ) {
162+ // getRepository returns a repository from the cache
163+ func (m * Manager ) getRepository (repoName string ) (* Repository , error ) {
175164 repo , ok := m .repoCache [repoName ]
176165 if ! ok {
177166 return nil , ErrRepositoryNotCached
@@ -185,7 +174,7 @@ func (m *Manager) List(filters ...Filter) []*Repository {
185174 repoNames := append (m .cfg .Repositories .Core , m .cfg .Repositories .Services ... )
186175mainLoop:
187176 for _ , repoName := range repoNames {
188- repo , err := m .GetRepository (repoName )
177+ repo , err := m .LoadRepository (repoName )
189178 if err != nil {
190179 continue
191180 }
@@ -201,19 +190,19 @@ mainLoop:
201190
202191// Clone clones a known repository to the config root directory
203192func (m * Manager ) clone (ctx context.Context , repoName string ) error {
204- repo , err := m .GetRepository (repoName )
193+ repo , err := m .LoadRepository (repoName )
205194 if err != nil {
206195 return fmt .Errorf ("cannot clone repository %s: %v" , repoName , err )
207196 }
208197 if repo .gitRepo != nil {
209198 return ErrRepositoryAlreadyExist
210199 }
211200
212- // clone fork repository
201+ // clone fork repository with original name
213202 err = m .git .Clone (
214203 ctx ,
215204 m .urlBuilder (m .cfg .Github .Username , repo .ExpectedForkName ),
216- repo .ExpectedForkName ,
205+ repo .FullPath ,
217206 )
218207 if errors .Is (err , transport .ErrAuthenticationRequired ) {
219208 return ErrUnauthenticated
@@ -276,37 +265,20 @@ func (m *Manager) EnsureFork(ctx context.Context, repo *Repository) error {
276265 return err
277266}
278267
279- // used to help mocking os.Rename
280- // TODO(hilalymh): Q4 switch to go1.16 os/fs library/interface
281- var renameDirectory = os .Rename
282-
283268func (m * Manager ) EnsureClone (ctx context.Context , repo * Repository ) error {
284269 err := m .clone (ctx , repo .Name )
285270 if err != nil && err != ErrRepositoryAlreadyExist {
286271 return err
287272 }
288273
289- // At this point we ensured that the fork repository is cloned. We need to rename it
290- // if there is any fork prefix.
291- if repo .Name != repo .ExpectedForkName {
292-
293- newPath := filepath .Join (
294- filepath .Dir (repo .FullPath ),
295- repo .Name ,
296- )
297- err := renameDirectory (repo .FullPath , newPath )
298- if err != nil {
299- return err
300- }
301- }
302-
303274 return nil
304275}
305276
306- // EnsureAll ensures one repository.
277+ // EnsureRepository ensures the current user owns a fork of the given repository
278+ // and has cloned it.
307279func (m * Manager ) EnsureRepository (ctx context.Context , name string ) error {
308- repo , err := m .GetRepository (name )
309- if err != nil {
280+ repo , err := m .LoadRepository (name )
281+ if err != nil && err != ErrRepositoryDoesntExist {
310282 return err
311283 }
312284
0 commit comments