Skip to content

Commit cec4369

Browse files
committed
normalize publishFiles
1 parent ea0b4ee commit cec4369

File tree

2 files changed

+27
-24
lines changed

2 files changed

+27
-24
lines changed

src/publish/common/publish.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -80,21 +80,6 @@ export async function handlePublish<
8080
// render
8181
const publishFiles = await render(target.url);
8282

83-
// expand directories
84-
publishFiles.files = publishFiles.files.reduce((files, file) => {
85-
const filePath = join(publishFiles.baseDir, file);
86-
if (Deno.statSync(filePath).isDirectory) {
87-
for (const walk of walkSync(filePath)) {
88-
if (walk.isFile) {
89-
files.push(relative(publishFiles.baseDir, walk.path));
90-
}
91-
}
92-
} else {
93-
files.push(file);
94-
}
95-
return files;
96-
}, new Array<string>());
97-
9883
// add a _redirects file if necessary
9984
const kRedirects = "_redirects";
10085
let redirectsFile: string | undefined;

src/publish/publish.ts

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*
66
*/
77

8+
import * as ld from "../core/lodash.ts";
9+
810
import { existsSync, walkSync } from "fs/mod.ts";
911

1012
import {
@@ -72,11 +74,11 @@ export async function publishSite(
7274
files.push(relative(outputDir, walk.path));
7375
}
7476
}
75-
return {
77+
return normalizePublishFiles({
7678
baseDir: outputDir,
7779
rootFile: "index.html",
7880
files,
79-
};
81+
});
8082
};
8183

8284
// publish
@@ -149,13 +151,11 @@ export async function publishDocument(
149151
}
150152
files.push(...resultFile.resourceFiles.map(asRelative));
151153
}
152-
return {
154+
return normalizePublishFiles({
153155
baseDir,
154156
rootFile: rootFile!,
155-
files: files.filter((file) =>
156-
Deno.statSync(join(baseDir, file)).isFile
157-
),
158-
};
157+
files,
158+
});
159159
} finally {
160160
services.cleanup();
161161
}
@@ -185,11 +185,11 @@ export async function publishDocument(
185185
// resources
186186
files.push(...fileConfig.resources);
187187
// return
188-
return {
188+
return normalizePublishFiles({
189189
baseDir,
190190
rootFile: rootFile!,
191191
files,
192-
};
192+
});
193193
} else {
194194
throw new Error(
195195
`The specifed document (${document}) is not a valid quarto input file`,
@@ -217,3 +217,21 @@ export async function publishDocument(
217217
// return url
218218
return siteUrl;
219219
}
220+
221+
function normalizePublishFiles(publishFiles: PublishFiles) {
222+
publishFiles.files = publishFiles.files.reduce((files, file) => {
223+
const filePath = join(publishFiles.baseDir, file);
224+
if (Deno.statSync(filePath).isDirectory) {
225+
for (const walk of walkSync(filePath)) {
226+
if (walk.isFile) {
227+
files.push(relative(publishFiles.baseDir, walk.path));
228+
}
229+
}
230+
} else {
231+
files.push(file);
232+
}
233+
return files;
234+
}, new Array<string>());
235+
publishFiles.files = ld.uniq(publishFiles.files) as string[];
236+
return publishFiles;
237+
}

0 commit comments

Comments
 (0)