Skip to content
Merged
Show file tree
Hide file tree
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
6 changes: 2 additions & 4 deletions src/lib/file-system-repo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Item, QiitaApi } from "../qiita-api";
import { itemsShowPath } from "../lib/qiita-cli-url";
import { isSlideMarkdown } from "./is-slide-markdown";
import { QiitaItem } from "./entities/qiita-item";
import { isLocalMarkdownFilename } from "./is-local-markdown-filename";

class FileContent {
public readonly title: string;
Expand Down Expand Up @@ -249,10 +250,7 @@ export class FileSystemRepo {
this.getRootOrRemotePath(remote),
FileSystemRepo.fileSystemOptions(),
)
).filter(
(itemFilename) =>
/\.md$/.test(itemFilename) && !itemFilename.startsWith(".remote/"),
);
).filter(isLocalMarkdownFilename);
}

private defaultBasename(fileContent: FileContent) {
Expand Down
27 changes: 27 additions & 0 deletions src/lib/is-local-markdown-filename.test.ts

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

テスト名は、既存のテストに合わせて英語にしていただけると嬉しいです!

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { isLocalMarkdownFilename } from "./is-local-markdown-filename";

describe("isLocalMarkdownFilename", () => {
it("includes a Markdown file in the root", () => {
expect(isLocalMarkdownFilename("foo.md")).toBe(true);
});

it("includes a Markdown file in a subdirectory", () => {
expect(isLocalMarkdownFilename("notes/foo.md")).toBe(true);
expect(isLocalMarkdownFilename("notes\\foo.md")).toBe(true);
});

it("excludes non-Markdown files", () => {
expect(isLocalMarkdownFilename("foo.txt")).toBe(false);
expect(isLocalMarkdownFilename(".remote/config.json")).toBe(false);
});

it("excludes files under .remote with POSIX separators", () => {
expect(isLocalMarkdownFilename(".remote/abc.md")).toBe(false);
expect(isLocalMarkdownFilename(".remote/nested/abc.md")).toBe(false);
});

it("excludes files under .remote with Windows separators", () => {
expect(isLocalMarkdownFilename(".remote\\abc.md")).toBe(false);
expect(isLocalMarkdownFilename(".remote\\nested\\abc.md")).toBe(false);
});
});
5 changes: 5 additions & 0 deletions src/lib/is-local-markdown-filename.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// The path separator in the relative paths returned by
// `fs.readdir(..., { recursive: true })` depends on the OS, so check the first
// segment to exclude both ".remote/" and ".remote\\" (Windows).
export const isLocalMarkdownFilename = (filename: string): boolean =>
/\.md$/.test(filename) && filename.split(/[\\/]/)[0] !== ".remote";
5 changes: 2 additions & 3 deletions src/lib/slide-file-system-repo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { QiitaApi, Slide } from "../qiita-api";
import { slidesShowPath } from "./qiita-cli-url";
import { buildSlideMarkdown, QiitaSlide } from "./entities/qiita-slide";
import { isSlideMarkdown } from "./is-slide-markdown";
import { isLocalMarkdownFilename } from "./is-local-markdown-filename";

// Fields qiita-cli itself manages in the frontmatter. Everything else is an
// arbitrary Marp directive (theme, paginate, header, class, ...) that we don't
Expand Down Expand Up @@ -234,9 +235,7 @@ export class SlideFileSystemRepo {
this.getRootOrRemotePath(remote),
SlideFileSystemRepo.fileSystemOptions(),
)
).filter(
(filename) => /\.md$/.test(filename) && !filename.startsWith(".remote/"),
);
).filter(isLocalMarkdownFilename);
}

private async getNewBasename() {
Expand Down
Loading