diff options
| author | TEC <git@tecosaur.net> | 2024-01-09 21:44:37 +0800 |
|---|---|---|
| committer | TEC <git@tecosaur.net> | 2024-01-09 22:51:33 +0800 |
| commit | c81c68cfe601fe3cf7555b6527532db13617345a (patch) | |
| tree | 891ab110fd7070d31107539180c9b12796a8a3cb | |
| parent | 43ca337be3b0bc08f15368f5a056eb1cf466242e (diff) | |
| download | caddy-fs-git-c81c68cfe601fe3cf7555b6527532db13617345a.tar.zst | |
Fixup
*Why* does struct field name case materially matter?!?
| -rw-r--r-- | module.go | 61 |
1 files changed, 34 insertions, 27 deletions
@@ -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 |
