diff --git a/cmd/gen/gen.go b/cmd/gen/gen.go index 30fd06c..e09a5d6 100644 --- a/cmd/gen/gen.go +++ b/cmd/gen/gen.go @@ -1,3 +1,4 @@ +// Package main generates gitignore.io templates using the gogi library. package main import ( diff --git a/cmd/gignore/main.go b/cmd/gignore/main.go index b650d2b..48bae2b 100644 --- a/cmd/gignore/main.go +++ b/cmd/gignore/main.go @@ -1,3 +1,5 @@ +// Package main provides the entry point for the gignore command-line tool, +// which generates .gitignore files based on specified templates. package main import ( @@ -70,7 +72,7 @@ func main() { fmt.Printf("√ created %s .gitignore file\n", args[0]) } -func listTemplates(client *gignore.GignoreClient) error { +func listTemplates(client *gignore.Client) error { templates, err := client.List() if err != nil { return err diff --git a/error.go b/error.go index 514398a..0cbd921 100644 --- a/error.go +++ b/error.go @@ -1,3 +1,4 @@ +// Package gignore provides functionality for handling template errors and registry operations. package gignore import ( diff --git a/gignore.go b/gignore.go index da795ab..7540137 100644 --- a/gignore.go +++ b/gignore.go @@ -3,50 +3,54 @@ package gignore import ( "io" - log "github.com/sirupsen/logrus" - "github.com/onyx-and-iris/gignore/internal/filewriter" "github.com/onyx-and-iris/gignore/internal/registry" + log "github.com/sirupsen/logrus" ) //go:generate go run cmd/gen/gen.go -type GignoreClient struct { +// Client is a client for managing .gitignore templates. +type Client struct { registry *registry.TemplateRegistry writer io.Writer } -func New(options ...Option) *GignoreClient { - gc := &GignoreClient{ +// New creates a new Client with the provided options. +func New(options ...Option) *Client { + c := &Client{ registry.New(), - filewriter.New()} - - for _, option := range options { - option(gc) + filewriter.New(), } - return gc + for _, option := range options { + option(c) + } + + return c } -func (g *GignoreClient) List() ([]string, error) { - return g.registry.ListTemplates() +// List returns a list of available .gitignore templates. +func (c *Client) List() ([]string, error) { + return c.registry.ListTemplates() } -func (g *GignoreClient) Create(template string) error { - ok, err := g.registry.Contains(template) +// Create generates a .gitignore file from the specified template. +func (c *Client) Create(template string) error { + ok, err := c.registry.Contains(template) if err != nil { return err } if !ok { - templateNotFoundErr := &templateNotFoundError{template, g.registry} - if g.registry.Directory == "gitignoreio" { + templateNotFoundErr := &templateNotFoundError{template, c.registry} + if c.registry.Directory == "gitignoreio" { return templateNotFoundErr } log.Errorf("%s. Checking default registry...", templateNotFoundErr) - g.registry.Directory = "gitignoreio" - ok, err = g.registry.Contains(template) + c.registry.Directory = "gitignoreio" + ok, err = c.registry.Contains(template) if err != nil { return err } @@ -56,12 +60,12 @@ func (g *GignoreClient) Create(template string) error { log.Infof("template '%s' found in default gitignoreio registry", template) } - content, err := g.registry.GetTemplate(template) + content, err := c.registry.GetTemplate(template) if err != nil { return err } - _, err = g.writer.Write(content) + _, err = c.writer.Write(content) if err != nil { return err } diff --git a/internal/filewriter/filewriter.go b/internal/filewriter/filewriter.go index 47b56e1..c25af99 100644 --- a/internal/filewriter/filewriter.go +++ b/internal/filewriter/filewriter.go @@ -1,3 +1,4 @@ +// Package filewriter provides functionality to write content to a .gitignore file. package filewriter import ( @@ -6,11 +7,14 @@ import ( "os" ) +// FileWriter provides functionality to write content to a .gitignore file. type FileWriter struct { + targetFileName string } +// New creates a new FileWriter with the default target file name. func New() *FileWriter { - return &FileWriter{} + return &FileWriter{".gitignore"} } func (fw *FileWriter) writeContent(content []byte, dst io.Writer) (int64, error) { @@ -25,7 +29,7 @@ func (fw *FileWriter) writeContent(content []byte, dst io.Writer) (int64, error) } func (fw *FileWriter) Write(content []byte) (int, error) { - f, err := os.Create(".gitignore") + f, err := os.Create(fw.targetFileName) if err != nil { return 0, err } diff --git a/internal/registry/registry.go b/internal/registry/registry.go index e779b26..5bdef32 100644 --- a/internal/registry/registry.go +++ b/internal/registry/registry.go @@ -1,3 +1,4 @@ +// Package registry provides functionality to manage and retrieve gitignore templates. package registry import ( @@ -10,11 +11,13 @@ import ( //go:embed templates var templates embed.FS +// TemplateRegistry provides methods to manage and retrieve gitignore templates. type TemplateRegistry struct { templates fs.FS Directory string } +// New creates a new instance of TemplateRegistry. func New() *TemplateRegistry { return &TemplateRegistry{ templates: templates, @@ -25,6 +28,7 @@ func (t *TemplateRegistry) filePath(name string) string { return fmt.Sprintf("templates/%s/%s.gitignore", t.Directory, name) } +// Contains checks if a template with the given name exists in the registry. func (t *TemplateRegistry) Contains(name string) (bool, error) { _, err := fs.Stat(t.templates, t.filePath(name)) if err != nil { @@ -37,6 +41,7 @@ func (t *TemplateRegistry) Contains(name string) (bool, error) { return true, nil } +// GetTemplate retrieves the content of the gitignore template with the given name. func (t *TemplateRegistry) GetTemplate(name string) ([]byte, error) { data, err := fs.ReadFile(t.templates, t.filePath(name)) if err != nil { @@ -45,6 +50,7 @@ func (t *TemplateRegistry) GetTemplate(name string) ([]byte, error) { return data, nil } +// ListTemplates lists all the gitignore templates in the registry. func (t *TemplateRegistry) ListTemplates() ([]string, error) { var paths []string diff --git a/option.go b/option.go index bab691c..9f11d1c 100644 --- a/option.go +++ b/option.go @@ -1,9 +1,11 @@ package gignore -type Option func(*GignoreClient) +// Option is a function that configures a GignoreClient. +type Option func(*Client) +// WithTemplateDirectory sets the template directory for the GignoreClient. func WithTemplateDirectory(directory string) Option { - return func(g *GignoreClient) { - g.registry.Directory = directory + return func(c *Client) { + c.registry.Directory = directory } }