|
5 | 5 | * |
6 | 6 | */ |
7 | 7 |
|
| 8 | +import * as ld from "../core/lodash.ts"; |
| 9 | + |
8 | 10 | import { existsSync, walkSync } from "fs/mod.ts"; |
9 | 11 |
|
10 | 12 | import { |
@@ -72,11 +74,11 @@ export async function publishSite( |
72 | 74 | files.push(relative(outputDir, walk.path)); |
73 | 75 | } |
74 | 76 | } |
75 | | - return { |
| 77 | + return normalizePublishFiles({ |
76 | 78 | baseDir: outputDir, |
77 | 79 | rootFile: "index.html", |
78 | 80 | files, |
79 | | - }; |
| 81 | + }); |
80 | 82 | }; |
81 | 83 |
|
82 | 84 | // publish |
@@ -149,13 +151,11 @@ export async function publishDocument( |
149 | 151 | } |
150 | 152 | files.push(...resultFile.resourceFiles.map(asRelative)); |
151 | 153 | } |
152 | | - return { |
| 154 | + return normalizePublishFiles({ |
153 | 155 | baseDir, |
154 | 156 | rootFile: rootFile!, |
155 | | - files: files.filter((file) => |
156 | | - Deno.statSync(join(baseDir, file)).isFile |
157 | | - ), |
158 | | - }; |
| 157 | + files, |
| 158 | + }); |
159 | 159 | } finally { |
160 | 160 | services.cleanup(); |
161 | 161 | } |
@@ -185,11 +185,11 @@ export async function publishDocument( |
185 | 185 | // resources |
186 | 186 | files.push(...fileConfig.resources); |
187 | 187 | // return |
188 | | - return { |
| 188 | + return normalizePublishFiles({ |
189 | 189 | baseDir, |
190 | 190 | rootFile: rootFile!, |
191 | 191 | files, |
192 | | - }; |
| 192 | + }); |
193 | 193 | } else { |
194 | 194 | throw new Error( |
195 | 195 | `The specifed document (${document}) is not a valid quarto input file`, |
@@ -217,3 +217,21 @@ export async function publishDocument( |
217 | 217 | // return url |
218 | 218 | return siteUrl; |
219 | 219 | } |
| 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