movement-sdk
Version:
Movement SDK
79 lines (70 loc) • 2.39 kB
text/typescript
import path from "path"
import {exec} from "child_process";
import fs from "fs";
import {logger} from "./logger";
const cmd = path.resolve(__dirname, "../static", "bin", "metabcs");
export class BuildMetadata {
private schema: any
private code: string
constructor(schema: any) {
this.schema = schema
this.code = ""
}
async build() {
logger.info("movement build metadata");
const hex = Buffer.from(JSON.stringify(this.schema)).toString("hex");
return new Promise((resolve, reject) => {
exec(`${cmd} bcs ${hex}`, (err, res) => {
if (err) {
logger.error("movement build metadata failed");
reject(new Error("build metadata failed, please check this schema"))
}
this.code = res
logger.success("movement build metadata success");
resolve(this.code)
});
})
}
save(p: string) {
fs.writeFileSync(p, Buffer.from(this.code, "hex"));
logger.success(`movement save metadata to ${p} successfully`);
}
static getSchemaTemplate() {
return {
name: "packageName",
upgrade_policy: {
policy: 1,
},
upgrade_number: 0,
source_digest: "0000000000000000000000000000000000000000000000000000000000000000",
manifest: [],
modules: [
{
name: "moduleName",
source: [],
source_map: [],
extension: {
value: [],
},
},
],
deps: [
{
account: "0000000000000000000000000000000000000000000000000000000000000001",
package_name: "AptosFramework",
},
{
account: "0000000000000000000000000000000000000000000000000000000000000001",
package_name: "AptosStdlib",
},
{
account: "0000000000000000000000000000000000000000000000000000000000000001",
package_name: "MoveStdlib",
},
],
extension: {
value: [],
},
};
}
}