Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: hidden files/directories were not included #15

Merged
merged 1 commit into from
Feb 28, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions gootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import (
"text/template"
)

//go:embed templates/*
var templates embed.FS
//go:embed templates/basic/*
Copy link
Contributor Author

@lfritz lfritz Feb 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you're embedding a directory tree with go:embed, entries starting with a . are ignored unless they're named explicitly. The * includes entries starting with a . so that also counts as naming them explicitly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like the motivation for implementing it this way was to avoid the .DS_Store files that Mac OS tends to litter its filesystem with: golang/go#42328
Thanks, Apple!

Copy link
Contributor

@katcipis katcipis Feb 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

auheuaheaueh I remember this because I had some issues with dotfiles not being embedded here, but I did miss it on the review, sorry (I dont remember it that well...I just think I was bitten by this more than once 😆 ).

Fucking Bradley/Apple !!!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It also ignores underscore...didn't remember that 😆

"all the files to embed will ignore names beginning with dot or underscore, the same as the go command does
for deciding what to build."

why the fuck underscore ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure, maybe some editors create temporary files with names starting with underscore?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ugh...probably 😆

var basicTemplate embed.FS

func main() {
name := ""
Expand All @@ -32,18 +32,25 @@ func main() {
os.Exit(1)
}

generate(name, group, templateName)
templates := map[string]embed.FS{
"basic": basicTemplate,
}
templateFS, ok := templates[templateName]
if !ok {
fmt.Println("unknown template:", templateName)
os.Exit(1)
}

generate(name, group, templateFS, path.Join("templates", templateName))
}

func generate(name, group, templateName string) {
func generate(name, group string, templateFS fs.FS, templateDir string) {
type serviceInfo struct {
Name string
Group string
ConfigPrefix string
}

templateDir := path.Join("templates", templateName)

info := serviceInfo{
Name: name,
Group: group,
Expand All @@ -64,7 +71,7 @@ func generate(name, group, templateName string) {
return result.String()
}

err := fs.WalkDir(templates, templateDir, func(path string, d fs.DirEntry, err error) error {
err := fs.WalkDir(templateFS, templateDir, func(path string, d fs.DirEntry, err error) error {
if err != nil {
return nil
}
Expand All @@ -83,7 +90,7 @@ func generate(name, group, templateName string) {

log.Printf("generating file %q", targetPath)

data, err := fs.ReadFile(templates, path)
data, err := fs.ReadFile(templateFS, path)
assert(err)

generated := applyTemplate(string(data))
Expand Down
Loading