-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add commands to Add and list local repositories (#47)
# Changes ## Primary change Add `RegisterLocalRepositoryCommand` and `ListLocalRepositories` query. ## Supporting changes - Organize step definitions by the kind of repository. ## Future work - Add business logic for edge cases to commands, for faulty paths, paths that aren't Git repositories, etc... - Re-visit testing. ## Version Same.
- Loading branch information
Showing
25 changed files
with
559 additions
and
152 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,6 +20,7 @@ version: "0.2" | |
words: | ||
- cmdremote | ||
- cmdroot | ||
- corerepository | ||
- fswatch | ||
- kkrull | ||
- Krull | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
# Artifacts | ||
_marmot | ||
marmot | ||
marmot.exe | ||
|
||
# Testing | ||
cukefeature/localDir |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package cukestep | ||
|
||
import ( | ||
"fmt" | ||
"path/filepath" | ||
|
||
"github.com/cucumber/godog" | ||
support "github.com/kkrull/marmot/cukesupport" | ||
) | ||
|
||
/* State */ | ||
|
||
var thoseLocalRepositories *support.LocalRepositories = support.NoLocalRepositories() | ||
|
||
/* Configuration */ | ||
|
||
// Add step definitions related to repositories on the local filesystem. | ||
func AddLocalRepositorySteps(ctx *godog.ScenarioContext) { | ||
ctx.Given(`^Git repositories on the local filesystem$`, func() error { | ||
if testDir, pathErr := support.TestDir(); pathErr != nil { | ||
return pathErr | ||
} else { | ||
return createLocalRepo(filepath.Join(testDir, "empty-dir")) | ||
} | ||
}) | ||
|
||
ctx.Given(`^I have registered those local repositories with a meta repo$`, registerThoseLocals) | ||
|
||
ctx.Then(`^that repository listing should include those local repositories$`, func() error { | ||
if repoDir, pathErr := support.TestSubDir("empty-dir"); pathErr != nil { | ||
return pathErr | ||
} else { | ||
thatListingShouldHaveLocals(repoDir) | ||
return nil | ||
} | ||
}) | ||
} | ||
|
||
/* Steps */ | ||
|
||
func createLocalRepo(repoDir string) error { | ||
if repo, repoErr := support.InitLocalRepository(repoDir); repoErr != nil { | ||
return repoErr | ||
} else { | ||
thoseLocalRepositories = support.SomeLocalRepositories(repo) | ||
return nil | ||
} | ||
} | ||
|
||
func registerThoseLocals() error { | ||
if factory, factoryErr := support.ThatCommandFactory(); factoryErr != nil { | ||
return fmt.Errorf("repository_steps: failed to configure; %w", factoryErr) | ||
} else if registerCmd, factoryErr := factory.NewRegisterLocalRepositories(); factoryErr != nil { | ||
return fmt.Errorf("repository_steps: failed to initialize; %w", factoryErr) | ||
} else { | ||
return registerCmd.Run(thoseLocalRepositories.LocalPaths()...) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package cukestep | ||
|
||
import ( | ||
"fmt" | ||
"net/url" | ||
|
||
"github.com/cucumber/godog" | ||
support "github.com/kkrull/marmot/cukesupport" | ||
) | ||
|
||
/* Configuration */ | ||
|
||
// Add step definitions related to remote repositories. | ||
func AddRemoteRepositorySteps(ctx *godog.ScenarioContext) { | ||
ctx.Given(`^I have registered remote repositories$`, func() error { | ||
return registerRemote("https://github.com/actions/checkout") | ||
}) | ||
|
||
ctx.Then(`^that repository listing should include those remote repositories$`, func() { | ||
thatListingShouldHaveRemotes("https://github.com/actions/checkout") | ||
}) | ||
} | ||
|
||
/* Steps */ | ||
|
||
func registerRemote(remoteHref string) error { | ||
if remoteUrl, parseErr := url.Parse(remoteHref); parseErr != nil { | ||
return parseErr | ||
} else if factory, factoryErr := support.ThatCommandFactory(); factoryErr != nil { | ||
return fmt.Errorf("repository_steps: failed to configure; %w", factoryErr) | ||
} else if registerCmd, factoryErr := factory.NewRegisterRemoteRepositories(); factoryErr != nil { | ||
return fmt.Errorf("repository_steps: failed to initialize; %w", factoryErr) | ||
} else if runErr := registerCmd.Run([]*url.URL{remoteUrl}); runErr != nil { | ||
return fmt.Errorf("repository_steps: failed to register repositories; %w", runErr) | ||
} else { | ||
return nil | ||
} | ||
} |
Oops, something went wrong.