summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTEC <git@tecosaur.net>2024-01-09 21:44:37 +0800
committerTEC <git@tecosaur.net>2024-01-09 22:51:33 +0800
commitc81c68cfe601fe3cf7555b6527532db13617345a (patch)
tree891ab110fd7070d31107539180c9b12796a8a3cb
parent43ca337be3b0bc08f15368f5a056eb1cf466242e (diff)
downloadcaddy-fs-git-c81c68cfe601fe3cf7555b6527532db13617345a.tar.zst
Fixup
*Why* does struct field name case materially matter?!?
-rw-r--r--module.go61
1 files changed, 34 insertions, 27 deletions
diff --git a/module.go b/module.go
index ca933ab..48a93db 100644
--- a/module.go
+++ b/module.go
@@ -25,12 +25,12 @@ var (
// FS provides a view into a specific git tree.
type FS struct {
- fs.FS `json:"-"`
- repoPath string `json:"repository,omitempty"`
- revision string `json:"revision,omitempty"`
- revCommit plumbing.Hash
- repo *git.Repository
- logger *zap.Logger
+ fs.FS `json:"-"`
+ Repository string `json:"repository,omitempty"`
+ Revision string `json:"revision,omitempty"`
+ revCommit plumbing.Hash
+ repo *git.Repository
+ logger *zap.Logger
}
// CaddyModule returns the Caddy module information.
@@ -43,48 +43,55 @@ func (FS) CaddyModule() caddy.ModuleInfo {
func (fs *FS) Provision(ctx caddy.Context) error {
fs.logger = ctx.Logger(fs)
- fs.logger.Info("Parsed repository path", zap.String("repository", fs.repoPath))
- fs.logger.Info("Parsed revision path", zap.String("revision", fs.repoPath))
- if fs.repoPath == "" {
+ if fs.Repository == "" {
fs.logger.Error("Repository is unset")
return errors.New("repository must be set")
}
- repo, err := git.PlainOpen(fs.repoPath)
+ repo, err := git.PlainOpen(fs.Repository)
if err != nil {
fs.logger.Error("failed to open git repository", zap.Error(err),
- zap.String("path", fs.repoPath))
+ zap.String("path", fs.Repository))
return err
}
- if fs.revision == "" {
- fs.revision = "HEAD"
+ if fs.Revision == "" {
+ fs.logger.Info("Git Revision unset, defaulting to HEAD")
+ fs.Revision = "HEAD"
}
fs.repo = repo
return nil
}
func (fs *FS) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
- if !d.Next() { // skip block beginning
+ if !d.Next() { // consume start of block
return d.ArgErr()
}
- for nesting := d.Nesting(); d.NextBlock(nesting); {
- switch d.Val() {
- case "repository":
- if !d.Args(&fs.repoPath) {
- return d.ArgErr()
+ if d.NextArg() { // Optional "fs git <repo>" form
+ fs.Repository = d.Val()
+ } else {
+ // Form: fs git {
+ // repo[sitory] <path>
+ // rev[ision] <rev> (optional)
+ // }
+ for nesting := d.Nesting(); d.NextBlock(nesting); {
+ switch d.Val() {
+ case "repository", "repo":
+ if !d.Args(&fs.Repository) {
+ return d.ArgErr()
+ }
+ case "revision", "rev":
+ if !d.Args(&fs.Revision) {
+ return d.ArgErr()
+ }
+ default:
+ return d.Errf("'%s' not a valid caddy.fs.git option", d.Val())
}
- case "revision":
- if !d.Args(&fs.revision) {
- return d.ArgErr()
- }
- default:
- return d.Errf("'%s' not a valid caddy.fs.git option", d.Val())
- }
+ }
}
return nil
}
func (gfs *FS) RepoFS() (fs.FS, error) {
- hash, err := gfs.repo.ResolveRevision(plumbing.Revision(gfs.revision))
+ hash, err := gfs.repo.ResolveRevision(plumbing.Revision(gfs.Revision))
if err != nil {
gfs.logger.Error("failed to resolve revision", zap.Error(err))
return nil, err