@@ -214,9 +214,14 @@ export class FileSystemRepo {
214214 }
215215
216216 private async getItemFilenames ( remote : boolean = false ) {
217- return await fs . readdir (
218- this . getRootOrRemotePath ( remote ) ,
219- FileSystemRepo . fileSystemOptions ( ) ,
217+ return (
218+ await fs . readdir (
219+ this . getRootOrRemotePath ( remote ) ,
220+ FileSystemRepo . fileSystemOptions ( )
221+ )
222+ ) . filter (
223+ ( itemFilename ) =>
224+ / \. m d $ / . test ( itemFilename ) && ! itemFilename . startsWith ( ".remote/" )
220225 ) ;
221226 }
222227
@@ -234,7 +239,7 @@ export class FileSystemRepo {
234239 const basename = `${ prefix } ${ suffix } ` ;
235240 const filenameCandidate = this . getFilename ( basename ) ;
236241 const found = itemFilenames . find (
237- ( filename ) => filename === filenameCandidate ,
242+ ( filename ) => filename === filenameCandidate
238243 ) ;
239244 if ( ! found ) {
240245 return basename ;
@@ -246,33 +251,35 @@ export class FileSystemRepo {
246251 private static fileSystemOptions ( ) {
247252 return {
248253 encoding : "utf8" ,
254+ withFileTypes : false ,
255+ recursive : true ,
249256 } as const ;
250257 }
251258
252259 private async setItemData (
253260 fileContent : FileContent ,
254261 remote : boolean = false ,
255- basename : string | null = null ,
262+ basename : string | null = null
256263 ) {
257264 if ( ! fileContent . id ) {
258265 return ;
259266 }
260267 const filepath = this . getFilePath (
261268 basename || this . defaultBasename ( fileContent ) ,
262- remote ,
269+ remote
263270 ) ;
264271 const data = fileContent . toSaveFormat ( ) ;
265272 await fs . writeFile ( filepath , data , FileSystemRepo . fileSystemOptions ( ) ) ;
266273 }
267274
268275 private async getItemData (
269276 itemFilename : string ,
270- remote : boolean = false ,
277+ remote : boolean = false
271278 ) : Promise < FileContent | null > {
272279 try {
273280 const fileContent = await fs . readFile (
274281 path . join ( this . getRootOrRemotePath ( remote ) , itemFilename ) ,
275- FileSystemRepo . fileSystemOptions ( ) ,
282+ FileSystemRepo . fileSystemOptions ( )
276283 ) ;
277284 return FileContent . read ( fileContent ) ;
278285 } catch ( err : any ) {
@@ -283,7 +290,7 @@ export class FileSystemRepo {
283290 private async syncItem (
284291 item : Item ,
285292 beforeSync : boolean = false ,
286- forceUpdate : boolean = false ,
293+ forceUpdate : boolean = false
287294 ) {
288295 const fileContent = FileContent . fromItem ( item ) ;
289296
@@ -295,7 +302,7 @@ export class FileSystemRepo {
295302 const basename = localResult ?. name || null ;
296303 const remoteFileContent = await this . getItemData (
297304 this . getFilename ( item . id ) ,
298- true ,
305+ true
299306 ) ;
300307
301308 if ( data === null || remoteFileContent ?. equals ( data ) || forceUpdate ) {
@@ -317,20 +324,18 @@ export class FileSystemRepo {
317324 async saveItem (
318325 item : Item ,
319326 beforeSync : boolean = false ,
320- forceUpdate : boolean = false ,
327+ forceUpdate : boolean = false
321328 ) {
322329 await this . syncItem ( item , beforeSync , forceUpdate ) ;
323330 }
324331
325332 async loadItems ( ) : Promise < QiitaItem [ ] > {
326333 const itemFilenames = await this . getItemFilenames ( ) ;
327334
328- const promises = itemFilenames
329- . filter ( ( itemFilename ) => / \. m d $ / . test ( itemFilename ) )
330- . map ( async ( itemFilename ) => {
331- const basename = this . parseFilename ( itemFilename ) ;
332- return await this . loadItemByBasename ( basename ) ;
333- } ) ;
335+ const promises = itemFilenames . map ( async ( itemFilename ) => {
336+ const basename = this . parseFilename ( itemFilename ) ;
337+ return await this . loadItemByBasename ( basename ) ;
338+ } ) ;
334339
335340 const items = excludeNull ( await Promise . all ( promises ) ) ;
336341 return items ;
@@ -447,7 +452,7 @@ export class FileSystemRepo {
447452 await fs . writeFile (
448453 newFilePath ,
449454 newData ,
450- FileSystemRepo . fileSystemOptions ( ) ,
455+ FileSystemRepo . fileSystemOptions ( )
451456 ) ;
452457 }
453458
0 commit comments