diff options
Diffstat (limited to 'module.go')
| -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 |
