Currently, it's hard to use a plugin only for publishing. Especially when the publishing process happens only on CI. At this point, a valid token is not needed locally.
But the build will fail anyway since the credentials setting requires a token to be defined.
From my point of view, the functionality can be separated into smaller modules.
Project modules:
- sbt-github-packages-common - shared modules: TokenSource, GitHubRepository, utility methods
- sbt-github-packages-publisher - only
Publisher
- sbt-github-packages-resolver - only
Resolver
- sbt-github-packages - both
Publisher and Resolver. Identical to the current definition.
Publisher
Responsible for the publishing part.
Settings:
githubSuppressPublicationWarning
githubPublishToRepository - The entry is a combination of owner, repository, and token source.
githubPublishToRepository := GitHubRepository(
"djspiewak",
"sbt-github-packages",
TokenSource.Environment("GH_PACKAGES_TOKEN")
)
Derived settings (based on githubPublishToRepository):
githubPublishTo
scmInfo
homepage
pomIncludeRepository
publishMavenStyle
Behavior:
update - does not fail if a token is missing
publish - may fail if a token is missing
Resolver/Downloader/Loader
The should be a better name I believe.
It would be nice if multiple GitHub repositories can be supported.
Settings:
githubRepositories - The GitHub repositories. The entry is a combination of owner, repository, and token source.
githubRepositories += GitHubRepository(
"djspiewak",
"sbt-github-packages",
TokenSource.Environment("GH_TOKEN")
)
Derived settings (based on githubRepositories):
Behavior:
update - may fail if a token is missing
Currently, it's hard to use a plugin only for publishing. Especially when the publishing process happens only on CI. At this point, a valid token is not needed locally.
But the build will fail anyway since the
credentialssetting requires a token to be defined.From my point of view, the functionality can be separated into smaller modules.
Project modules:
PublisherResolverPublisherandResolver. Identical to the current definition.Publisher
Responsible for the publishing part.
Settings:
githubSuppressPublicationWarninggithubPublishToRepository- The entry is a combination of owner, repository, and token source.Derived settings (based on
githubPublishToRepository):githubPublishToscmInfohomepagepomIncludeRepositorypublishMavenStyleBehavior:
update- does not fail if a token is missingpublish- may fail if a token is missingResolver/Downloader/Loader
The should be a better name I believe.
It would be nice if multiple GitHub repositories can be supported.
Settings:
githubRepositories- The GitHub repositories. The entry is a combination of owner, repository, and token source.Derived settings (based on
githubRepositories):resolverscredentialsBehavior:
update- may fail if a token is missing