Skip to content

Commit 816520b

Browse files
1 parent 65fb9d9 commit 816520b

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ _steps:
4343
install_dependencies: &install_dependencies
4444
run: npm ci --cache .npm-cache && sudo npm config set @microbit-foundation:registry https://npm.pkg.github.com/microbit-foundation && sudo npm i -g @microbit-foundation/[email protected] @microbit-foundation/[email protected] @microbit-foundation/circleci-npm-package-versioner@1
4545
install_theme: &install_theme
46-
run: npm config set @microbit-foundation:registry https://npm.pkg.github.com/microbit-foundation && npm install --no-save @microbit-foundation/[email protected].195
46+
run: npm config set @microbit-foundation:registry https://npm.pkg.github.com/microbit-foundation && npm install --no-save @microbit-foundation/[email protected].198
4747
update_version: &update_version
4848
run: npm run ci:update-version
4949
build: &build

src/fs/fs.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ describe("Filesystem", () => {
229229
files: 1,
230230
lines: undefined, // signifies initial program
231231
storageUsed: 256,
232+
magicModules: 0,
232233
});
233234

234235
await ufs.write(
@@ -239,10 +240,13 @@ describe("Filesystem", () => {
239240
const data = new Uint8Array(512);
240241
data.fill(128);
241242
await ufs.write("other.dat", data, VersionAction.INCREMENT);
243+
const moduleData = "# microbit-module: [email protected]";
244+
await ufs.write("magic_module.py", moduleData, VersionAction.INCREMENT);
242245
expect(await ufs.statistics()).toEqual({
243-
files: 2,
246+
files: 3,
244247
lines: 3,
245-
storageUsed: 768,
248+
storageUsed: 896,
249+
magicModules: 1,
246250
});
247251
});
248252
});

src/fs/fs.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { BoardId } from "../device/board-id";
1515
import { FlashDataSource, HexGenerationError } from "../device/device";
1616
import { Logging } from "../logging/logging";
1717
import { MicroPythonSource } from "../micropython/micropython";
18-
import { asciiToBytes, generateId } from "./fs-util";
18+
import { asciiToBytes, extractModuleData, generateId } from "./fs-util";
1919
import { Host } from "./host";
2020
import { PythonProject } from "./initial-project";
2121
import { 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

Comments
 (0)