Skip to content

Commit

Permalink
add analytics script (#650)
Browse files Browse the repository at this point in the history
  • Loading branch information
doerfli committed Aug 29, 2024
1 parent 1034638 commit db38017
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
1 change: 1 addition & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"gruntfuggly.todo-tree",
// "aaron-bond.better-comments",
"oderwat.indent-rainbow",
"mechatroner.rainbow-csv",
"johnpapa.vscode-peacock",
"vikas.code-navigation",
// "github.vscode-github-actions",
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ lcov.info
deployments/
soljson*.js
deployment.env
storage_layout.json
storage_layout.*
38 changes: 29 additions & 9 deletions scripts/analyze_storage_layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ValidateUpdateRequiresKindError } from "@openzeppelin/upgrades-core";
import { logger } from "./logger";
import { exec } from "child_process";
import fs from "fs";
import { ITokenRegistryHelper__factory } from "../typechain-types";

async function main() {
exec('forge inspect MockStorageLayout storageLayout',
Expand Down Expand Up @@ -31,6 +32,22 @@ function prettyPrintStorageLayout(storageLayoutRawJson: string) {
types.forEach((type) => {
logger.info(`${type.id} - ${type.name} - ${type.size}`);
});

// types to CSV
let csv = 'id,name,size,member_name,offset,slot,type\n';
types.forEach((type) => {
csv += `${type.id},${type.name},${type.size}`;
if (type.hasMembers) {
csv += `,,,\n`;
for (let member of type.members) {
csv += `,,,${member.name},${member.offset},${member.slot},${member.type}\n`;
}
} else {
csv += `,,,\n`;
}
});

fs.writeFileSync('storage_layout.csv', csv);
}

function getFields(storageLayout: any) {
Expand All @@ -55,17 +72,20 @@ function getTypes(storageLayout: any) {
name: value.label,
size: value.numberOfBytes,
hasMembers: false,
members: {},
members: [] as any[],
};
if (value.members) {
// logger.debug(value.members);
t.hasMembers = true;
t.members = {
name: value.members.label,
offset: value.members.offset,
slot: value.members.slot,
type: value.members
};
for (let member in value.members) {
// logger.debug(member);
let memberValue = value.members[member];
t.hasMembers = true;
t.members.push({
name: memberValue.label,
offset: memberValue.offset,
slot: memberValue.slot,
type: memberValue.type,
});
}
}
types.push(t);
}
Expand Down

0 comments on commit db38017

Please sign in to comment.