Refactor samples.go
to be more configurable
#1016
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reviewers
r? @vcheung-stripe
cc @stripe/developer-products
Summary
Refactors the
samples
command so that the code can be re-used/configured via plugin.Specifically
Samples
struct toSampleManager
as identifiersamples
was referring both to the package and to an instance ofSamples
which I found confusing.SampleManager
a constructor helper,NewSampleManager
with a default initialization, rather than having it initialized directly everywhere.Create
andGetSampleConfig
functions to be methods with aSampleManager
receiver, so that they are more configurable.ConfigureDotEnv
intoSampleManager.ConfigureDotEnv
(which can be given a custom implementation, now that it's on the struct), andWriteDotEnv
.SampleLister
interface to replacegetSamples
, so that this can be customized (e.g., an implementation that returns a hardcoded list instead of fetching and caching from a specific github repository) and refactored the existing implementation intocachedGithubSampleLister
.Testing
As a basic sanity check, I manually ran
stripe samples list
andstripe samples create
and they appear still to work.