diff --git a/.babilema.toml b/.babilema.toml index 05c3522..bf1b477 100644 --- a/.babilema.toml +++ b/.babilema.toml @@ -1,3 +1,3 @@ -website_url = "https://babilema.github.io" +website_url = "https://bytebakersco.github.io/babilema" blog_title = "Babilema: A Minimalist Static Blog Generator" output_dir = "." # This could be ommited or just be an empty string diff --git a/.github/workflows/generate-blog.yml b/.github/workflows/generate-blog.yml index 883d97b..c0a6831 100644 --- a/.github/workflows/generate-blog.yml +++ b/.github/workflows/generate-blog.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - generate-blog: + generate_blog: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 0000000..83e8e36 --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,19 @@ +name: Run tests + +on: pull_request + +jobs: + run_tests: + runs-on: ubuntu-latest + + steps: + - name: 'Check out code' + uses: actions/checkout@v4 + + - name: 'Set up Go' + uses: actions/setup-go@v5 + with: + go-version: '>=1.22' + + - name: 'Run go test' + run: 'go test ./...' diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 1f3518f..6529ac6 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -10,7 +10,7 @@ import ( func TestLoadConfig(t *testing.T) { root, _ := utils.RootDir() expected := Config{ - WebsiteURL: "https://babilema.github.io", + WebsiteURL: "https://bytebakersco.github.io/babilema", BlogTitle: "Babilema: A Minimalist Static Blog Generator", BlogPostIssuePrefix: "[BLOG]", TemplatePostFilePath: filepath.Join(root, "templates", "post.html"), diff --git a/internal/generator/generator.go b/internal/generator/generator.go index 4390370..9d2e321 100644 --- a/internal/generator/generator.go +++ b/internal/generator/generator.go @@ -5,6 +5,7 @@ import ( "html/template" "io" "log" + "net/url" "os" "path/filepath" "strings" @@ -99,7 +100,7 @@ func extractPlainText(content template.HTML) string { return result } -func extractCSSLinks(cssDir string) ([]string, error) { +func extractCSSLinks(cssDir string, cfg config.Config) ([]string, error) { if cssDir == "" { return nil, nil } @@ -118,6 +119,16 @@ func extractCSSLinks(cssDir string) ([]string, error) { return err } + websiteURL, err := url.Parse(cfg.WebsiteURL) + if err != nil { + return err + } + + relativeFilePath = filepath.Join( + websiteURL.Path, + relativeFilePath, + ) + cssLinks = append(cssLinks, relativeFilePath) } @@ -140,6 +151,15 @@ func generateBlogIndexPage( return nil } + websiteURL, err := url.Parse(cfg.WebsiteURL) + if err != nil { + return err + } + + for i := range articles { + articles[i].URL = filepath.Join(websiteURL.Path, articles[i].URL) + } + data := struct { Header template.HTML Footer template.HTML @@ -203,7 +223,7 @@ func GenerateBlogPosts( } data := templateData{} - data.CSSLinks, err = extractCSSLinks(cfg.CSSDir) + data.CSSLinks, err = extractCSSLinks(cfg.CSSDir, cfg) if err != nil { return err } @@ -235,8 +255,8 @@ func GenerateBlogPosts( writer = outputFile - var url string - url, err = utils.RelativeFilePath( + var articleURL string + articleURL, err = utils.RelativeFilePath( filepath.Join(cfg.OutputDir, filename), ) if err != nil { @@ -249,7 +269,7 @@ func GenerateBlogPosts( Author: data.Metadata.Author, Preview: template.HTML(extractPlainText(data.Content)), DatePublished: data.Metadata.DatePublished, - URL: url, + URL: articleURL, }) } diff --git a/internal/generator/generator_test.go b/internal/generator/generator_test.go index 1bf714e..04fe758 100644 --- a/internal/generator/generator_test.go +++ b/internal/generator/generator_test.go @@ -62,7 +62,7 @@ func TestGenerateBlogPosts(t *testing.T) { CSSDir: filepath.Join(basePath, "test-data"), TempDir: filepath.Join(basePath, "test-data", "tmp"), BlogPostIssuePrefix: "[BLOG]", - WebsiteURL: "http://localhost:8080", + WebsiteURL: "http://localhost:8080/foo", }, &buf, ) @@ -76,9 +76,9 @@ func TestGenerateBlogPosts(t *testing.T) { Test Title - Website name - + - + @@ -119,14 +119,14 @@ func TestGenerateBlogIndexPage(t *testing.T) { Preview: "Test preview", Title: "Test Title 1", DatePublished: time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC), - URL: "example.com", + URL: "bar/baz.html", }, { Author: "Test Author", Preview: "Test preview without an image", Title: "Test Title 2", DatePublished: time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC), - URL: "example.com", + URL: "bar/qux.html", }, } @@ -149,7 +149,8 @@ func TestGenerateBlogIndexPage(t *testing.T) { "test-data", "footer.html", ), - OutputDir: filepath.Join(".", "test-data"), + OutputDir: filepath.Join(".", "test-data"), + WebsiteURL: "https://localhost:8080/foo", }, &buf, ) @@ -166,23 +167,23 @@ func TestGenerateBlogIndexPage(t *testing.T) {
- +

Test Title 1

Test preview

Author: Test Author

Published: 1970-01-01 00:00:00 +0000 UTC

- Test Title 1 + Test Title 1
- +

Test Title 2

Test preview without an image

Author: Test Author

Published: 1970-01-01 00:00:00 +0000 UTC

- Test Title 2 + Test Title 2