diff --git a/src/SettingsTab.ts b/src/SettingsTab.ts index 5b49704..262f325 100644 --- a/src/SettingsTab.ts +++ b/src/SettingsTab.ts @@ -17,7 +17,7 @@ export class JekyllPublishSettingTab extends PluginSettingTab { new Setting(containerEl).setName("Branch") .addText((t) => t.setValue(s.branch).onChange((v) => { s.branch = v; save(); })); new Setting(containerEl).setName("Posts directory") - .addText((t) => t.setValue(s.postsDir).onChange((v) => { s.postsDir = v; save(); })); + .addText((t) => t.setValue(s.defaultPublishDir).onChange((v) => { s.defaultPublishDir = v; save(); })); new Setting(containerEl).setName("Images directory") .addText((t) => t.setValue(s.imagesDir).onChange((v) => { s.imagesDir = v; save(); })); new Setting(containerEl).setName("Default image strategy") diff --git a/src/publish.ts b/src/publish.ts index 8d655a8..17a09c3 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -51,9 +51,9 @@ export async function publish( }); const postText = buildPost({ frontmatterPairs: input.frontmatterPairs, body: rewrittenBody }); - const postPath = `${settings.postsDir}/${postFilename({ date: input.date, slug: input.slug })}`; + const notePath = `${settings.defaultPublishDir}/${postFilename({ date: input.date, slug: input.slug })}`; - const files: GitFile[] = [{ repoPath: postPath, data: postText }]; + const files: GitFile[] = [{ repoPath: notePath, data: postText }]; for (const item of plan) { const r = resolved.find((x) => x.linktext === item.linktext)!; files.push({ repoPath: item.repoPath, data: r.data }); @@ -68,5 +68,5 @@ export async function publish( authorEmail: settings.authorEmail || undefined, }); - return { postPath, imageCount: plan.length, unresolved }; + return { postPath: notePath, imageCount: plan.length, unresolved }; } diff --git a/src/settings.ts b/src/settings.ts index 96c296f..241c456 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -4,7 +4,7 @@ import { Pair } from "./frontmatter"; export interface JekyllPublishSettings { remoteUrl: string; branch: string; - postsDir: string; + defaultPublishDir: string; imagesDir: string; defaultImageStrategy: Strategy; presetFrontmatter: Pair[]; @@ -16,7 +16,7 @@ export interface JekyllPublishSettings { export const DEFAULT_SETTINGS: JekyllPublishSettings = { remoteUrl: "", branch: "main", - postsDir: "_posts", + defaultPublishDir: "_posts", imagesDir: "assets/img", defaultImageStrategy: "flat-slug", presetFrontmatter: [], diff --git a/src/slug.test.ts b/src/slug.test.ts index 06717f4..d5f3101 100644 --- a/src/slug.test.ts +++ b/src/slug.test.ts @@ -29,4 +29,8 @@ describe("postFilename", () => { test("joins date and slug", () => { expect(postFilename({ date: "2026-06-19", slug: "hello" })).toBe("2026-06-19-hello.md"); }); + + test("renders correctly without date", () => { + expect(postFilename({ slug: "hello-without-date" })).toBe("hello-without-date.md"); + }); }); diff --git a/src/slug.ts b/src/slug.ts index 670813a..dd53464 100644 --- a/src/slug.ts +++ b/src/slug.ts @@ -24,6 +24,9 @@ function fmt(d: Date): string { return `${d.getUTCFullYear()}-${p(d.getUTCMonth() + 1)}-${p(d.getUTCDate())}`; } -export function postFilename(o: { date: string; slug: string }): string { - return `${o.date}-${o.slug}.md`; +export function postFilename(o: { date?: string; slug: string }): string { + if (o.date) { + return `${o.date}-${o.slug}.md`; + } + return `${o.slug}.md`; }