Skip to content

Commit

Permalink
fix(cli): handle folders with single quotes (immich-app#15283)
Browse files Browse the repository at this point in the history
* fix(cli): handle folders with single quotes

* fix(cli): skip single quote test on Windows

* fix(cli): support double quote and backtick as well
  • Loading branch information
desmondgc authored and yosit committed Jan 13, 2025
1 parent ce42e1e commit 64ed732
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
21 changes: 19 additions & 2 deletions cli/src/utils.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ interface Test {
test: string;
options: Omit<CrawlOptions, 'extensions'>;
files: Record<string, boolean>;
skipOnWin32?: boolean;
}

const cwd = process.cwd();
Expand Down Expand Up @@ -48,6 +49,18 @@ const tests: Test[] = [
'/photos/image.jpg': true,
},
},
{
test: 'should crawl folders with quotes',
options: {
pathsToCrawl: ["/photo's/", '/photo"s/', '/photo`s/'],
},
files: {
"/photo's/image1.jpg": true,
'/photo"s/image2.jpg': true,
'/photo`s/image3.jpg': true,
},
skipOnWin32: true, // single quote interferes with mockfs root on Windows
},
{
test: 'should crawl a single file',
options: {
Expand Down Expand Up @@ -270,8 +283,12 @@ describe('crawl', () => {
});

describe('crawl', () => {
for (const { test, options, files } of tests) {
it(test, async () => {
for (const { test: name, options, files, skipOnWin32 } of tests) {
if (process.platform === 'win32' && skipOnWin32) {
test.skip(name);
continue;
}
it(name, async () => {
// The file contents is the same as the path.
mockfs(Object.fromEntries(Object.keys(files).map((file) => [file, file])));

Expand Down
2 changes: 1 addition & 1 deletion cli/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ export const crawl = async (options: CrawlOptions): Promise<string[]> => {
}

const searchPatterns = patterns.map((pattern) => {
let escapedPattern = pattern;
let escapedPattern = pattern.replaceAll("'", "[']").replaceAll('"', '["]').replaceAll('`', '[`]');
if (recursive) {
escapedPattern = escapedPattern + '/**';
}
Expand Down

0 comments on commit 64ed732

Please sign in to comment.