@@ -15,7 +15,7 @@ import { BoardId } from "../device/board-id";
1515import { FlashDataSource , HexGenerationError } from "../device/device" ;
1616import { Logging } from "../logging/logging" ;
1717import { MicroPythonSource } from "../micropython/micropython" ;
18- import { asciiToBytes , generateId } from "./fs-util" ;
18+ import { asciiToBytes , extractModuleData , generateId } from "./fs-util" ;
1919import { Host } from "./host" ;
2020import { PythonProject } from "./initial-project" ;
2121import { FSStorage } from "./storage" ;
@@ -58,6 +58,10 @@ export interface Statistics {
5858 * HEX storage used.
5959 */
6060 storageUsed : number ;
61+ /**
62+ * Number of files tagged with "# microbit-module:".
63+ */
64+ magicModules : number ;
6165}
6266
6367/**
@@ -387,15 +391,24 @@ export class FileSystem extends EventEmitter implements FlashDataSource {
387391 async statistics ( ) : Promise < Statistics > {
388392 const fs = await this . initialize ( ) ;
389393 const currentMainFile = fs . readBytes ( MAIN_FILE ) ;
394+ const files = fs . ls ( ) ;
395+ let numMagicModules = 0 ;
396+ for ( const file of files ) {
397+ const text = fs . read ( file ) ;
398+ if ( extractModuleData ( text ) ) {
399+ numMagicModules ++ ;
400+ }
401+ }
390402 return {
391- files : fs . ls ( ) . length ,
403+ files : files . length ,
392404 storageUsed : fs . getStorageUsed ( ) ,
393405 lines :
394406 this . cachedInitialProject &&
395407 this . cachedInitialProject . files [ MAIN_FILE ] ===
396408 fromByteArray ( currentMainFile )
397409 ? undefined
398410 : lineNumFromUint8Array ( currentMainFile ) ,
411+ magicModules : numMagicModules ,
399412 } ;
400413 }
401414
0 commit comments