diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml
index f079b4b5..24b1e07a 100644
--- a/.github/workflows/pr-checks.yml
+++ b/.github/workflows/pr-checks.yml
@@ -45,7 +45,7 @@ jobs:
with:
node-version: ${{ env.NODE_VER }}
- - name: yarn test
+ - name: Check test
run: yarn && yarn test
lint-check:
@@ -60,7 +60,7 @@ jobs:
with:
node-version: ${{ env.NODE_VER }}
- - name: yarn lint
+ - name: Check lint
run: yarn && yarn lint
build-check:
@@ -75,5 +75,20 @@ jobs:
with:
node-version: ${{ env.NODE_VER }}
- - name: yarn build
- run: yarn && yarn build
\ No newline at end of file
+ - name: Check build
+ run: yarn && yarn build
+
+ format-check:
+ if: github.event.pull_request.draft == false
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the source code
+ uses: actions/checkout@v3
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ env.NODE_VER }}
+
+ - name: Check formatting
+ run: yarn && yarn format
\ No newline at end of file
diff --git a/README.md b/README.md
index 3a15ee12..1fedbedf 100644
--- a/README.md
+++ b/README.md
@@ -3,14 +3,15 @@
-* [Docs and guide](#docs-and-guide)
-* [Quick start](#quick-start)
-* [Base image and dev container](#base-image-and-dev-container)
-* [Config](#config)
-* [Network Management](#network-management)
-* [Development and contributing](#development-and-contributing)
-* [Reporting issues](#reporting-issues)
-* [Command help](#command-help)
+
+- [Docs and guide](#docs-and-guide)
+- [Quick start](#quick-start)
+- [Base image and dev container](#base-image-and-dev-container)
+- [Config](#config)
+- [Network Management](#network-management)
+- [Development and contributing](#development-and-contributing)
+- [Reporting issues](#reporting-issues)
+- [Command help](#command-help)
# Docs and guide
@@ -127,6 +128,7 @@ A newly generated project will have a `swanky.config.json` file that will get po
```
Also, global config will be created in your home directory, in `~/swanky` folder.
+
## Example:
```json
@@ -167,6 +169,7 @@ Also, global config will be created in your home directory, in `~/swanky` folder
}
}
```
+
You can use accounts and networks from the global config in any swanky project.
# Network Management
@@ -225,6 +228,7 @@ Please report any issue or bug you encounter, as well as any feature and improve
# Command help
+
```sh-session
$ npm install -g @astar-network/swanky-cli
$ swanky COMMAND
@@ -236,48 +240,50 @@ USAGE
$ swanky COMMAND
...
```
+
-* [`swanky account create`](#swanky-account-create)
-* [`swanky account list`](#swanky-account-list)
-* [`swanky account ls`](#swanky-account-ls)
-* [`swanky account balance`](#swanky-account-balance)
-* [`swanky account faucet`](#swanky-account-faucet)
-* [`swanky account default`](#swanky-account-default)
-* [`swanky clear CONTRACTNAME`](#swanky-clear-contractname)
-* [`swanky contract compile [CONTRACTNAME]`](#swanky-contract-compile-contractname)
-* [`swanky contract deploy CONTRACTNAME`](#swanky-contract-deploy-contractname)
-* [`swanky contract explain CONTRACTNAME`](#swanky-contract-explain-contractname)
-* [`swanky contract new CONTRACTNAME`](#swanky-contract-new-contractname)
-* [`swanky contract query CONTRACTNAME MESSAGENAME`](#swanky-contract-query-contractname-messagename)
-* [`swanky contract test [CONTRACTNAME]`](#swanky-contract-test-contractname)
-* [`swanky contract tx CONTRACTNAME MESSAGENAME`](#swanky-contract-tx-contractname-messagename)
-* [`swanky contract verify CONTRACTNAME`](#swanky-contract-verify-contractname)
-* [`swanky env check`](#swanky-env-check)
-* [`swanky env install`](#swanky-env-install)
-* [`swanky generate tests`](#swanky-generate-tests)
-* [`swanky generate types`](#swanky-generate-types)
-* [`swanky help [COMMANDS]`](#swanky-help-commands)
-* [`swanky init PROJECTNAME`](#swanky-init-projectname)
-* [`swanky node install`](#swanky-node-install)
-* [`swanky node purge`](#swanky-node-purge)
-* [`swanky node start`](#swanky-node-start)
-* [`swanky node version`](#swanky-node-version)
-* [`swanky node chopsticks init`](#swanky-node-chopsticks-init)
-* [`swanky node chopsticks start`](#swanky-node-chopsticks-start)
-* [`swanky zombienet init`](#swanky-zombienet-init)
-* [`swanky zombienet start`](#swanky-zombienet-start)
-* [`swanky plugins`](#swanky-plugins)
-* [`swanky plugins:install PLUGIN...`](#swanky-pluginsinstall-plugin)
-* [`swanky plugins:inspect PLUGIN...`](#swanky-pluginsinspect-plugin)
-* [`swanky plugins:install PLUGIN...`](#swanky-pluginsinstall-plugin-1)
-* [`swanky plugins:link PLUGIN`](#swanky-pluginslink-plugin)
-* [`swanky plugins:uninstall PLUGIN...`](#swanky-pluginsuninstall-plugin)
-* [`swanky plugins:uninstall PLUGIN...`](#swanky-pluginsuninstall-plugin-1)
-* [`swanky plugins:uninstall PLUGIN...`](#swanky-pluginsuninstall-plugin-2)
-* [`swanky plugins update`](#swanky-plugins-update)
-* [`swanky version`](#swanky-version)
+
+- [`swanky account create`](#swanky-account-create)
+- [`swanky account list`](#swanky-account-list)
+- [`swanky account ls`](#swanky-account-ls)
+- [`swanky account balance`](#swanky-account-balance)
+- [`swanky account faucet`](#swanky-account-faucet)
+- [`swanky account default`](#swanky-account-default)
+- [`swanky clear CONTRACTNAME`](#swanky-clear-contractname)
+- [`swanky contract compile [CONTRACTNAME]`](#swanky-contract-compile-contractname)
+- [`swanky contract deploy CONTRACTNAME`](#swanky-contract-deploy-contractname)
+- [`swanky contract explain CONTRACTNAME`](#swanky-contract-explain-contractname)
+- [`swanky contract new CONTRACTNAME`](#swanky-contract-new-contractname)
+- [`swanky contract query CONTRACTNAME MESSAGENAME`](#swanky-contract-query-contractname-messagename)
+- [`swanky contract test [CONTRACTNAME]`](#swanky-contract-test-contractname)
+- [`swanky contract tx CONTRACTNAME MESSAGENAME`](#swanky-contract-tx-contractname-messagename)
+- [`swanky contract verify CONTRACTNAME`](#swanky-contract-verify-contractname)
+- [`swanky env check`](#swanky-env-check)
+- [`swanky env install`](#swanky-env-install)
+- [`swanky generate tests`](#swanky-generate-tests)
+- [`swanky generate types`](#swanky-generate-types)
+- [`swanky help [COMMANDS]`](#swanky-help-commands)
+- [`swanky init PROJECTNAME`](#swanky-init-projectname)
+- [`swanky node install`](#swanky-node-install)
+- [`swanky node purge`](#swanky-node-purge)
+- [`swanky node start`](#swanky-node-start)
+- [`swanky node version`](#swanky-node-version)
+- [`swanky node chopsticks init`](#swanky-node-chopsticks-init)
+- [`swanky node chopsticks start`](#swanky-node-chopsticks-start)
+- [`swanky zombienet init`](#swanky-zombienet-init)
+- [`swanky zombienet start`](#swanky-zombienet-start)
+- [`swanky plugins`](#swanky-plugins)
+- [`swanky plugins:install PLUGIN...`](#swanky-pluginsinstall-plugin)
+- [`swanky plugins:inspect PLUGIN...`](#swanky-pluginsinspect-plugin)
+- [`swanky plugins:install PLUGIN...`](#swanky-pluginsinstall-plugin-1)
+- [`swanky plugins:link PLUGIN`](#swanky-pluginslink-plugin)
+- [`swanky plugins:uninstall PLUGIN...`](#swanky-pluginsuninstall-plugin)
+- [`swanky plugins:uninstall PLUGIN...`](#swanky-pluginsuninstall-plugin-1)
+- [`swanky plugins:uninstall PLUGIN...`](#swanky-pluginsuninstall-plugin-2)
+- [`swanky plugins update`](#swanky-plugins-update)
+- [`swanky version`](#swanky-version)
## `swanky account create`
@@ -296,7 +302,9 @@ FLAGS
DESCRIPTION
Create a new dev account in config
```
+
_See code: [src/commands/account/create.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/account/create.ts)_
+
## `swanky account list`
List dev accounts stored in config
@@ -314,8 +322,8 @@ DESCRIPTION
ALIASES
$ swanky account ls
```
-_See code: [src/commands/account/list.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/account/list.ts)_
+_See code: [src/commands/account/list.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/account/list.ts)_
## `swanky account ls`
@@ -394,7 +402,7 @@ FLAGS
DESCRIPTION
Set default account to use
-```
+```
_See code: [src/commands/account/default.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/account/default.ts)_
@@ -463,7 +471,6 @@ DESCRIPTION
Deploy contract to a running node
```
-
_See code: [src/commands/contract/deploy.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/contract/deploy.ts)_
## `swanky contract explain CONTRACTNAME`
@@ -507,7 +514,6 @@ DESCRIPTION
_See code: [src/commands/contract/new.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/contract/new.ts)_
-
## `swanky contract query CONTRACTNAME MESSAGENAME`
Call a query message on smart contract
@@ -659,7 +665,7 @@ FLAGS
DESCRIPTION
Generate test files for the specified contract
-```
+```
_See code: [src/commands/generate/tests.ts](https://github.com/inkdevhub/swanky-cli/blob/master/src/commands/generate/tests.ts)_
@@ -849,7 +855,7 @@ _See code: [src/commands/node/chopsticks/start.ts](https://github.com/inkdevhub/
Initialize Zombienet
-```
+```
USAGE
$ swanky zombienet init [-v] [-b polkadot|polkadot-parachain|astar-collator]
@@ -936,7 +942,7 @@ ALIASES
$ swanky plugins add
EXAMPLES
- $ swanky plugins:install myplugin
+ $ swanky plugins:install myplugin
$ swanky plugins:install https://github.com/someuser/someplugin
@@ -999,7 +1005,7 @@ ALIASES
$ swanky plugins add
EXAMPLES
- $ swanky plugins:install myplugin
+ $ swanky plugins:install myplugin
$ swanky plugins:install https://github.com/someuser/someplugin
@@ -1137,4 +1143,5 @@ FLAG DESCRIPTIONS
```
_See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v1.3.7/src/commands/version.ts)_
+
diff --git a/package.json b/package.json
index 575a6ad6..00f8d8e8 100644
--- a/package.json
+++ b/package.json
@@ -110,6 +110,7 @@
}
},
"scripts": {
+ "format": "prettier --write \"**/*.{js,jsx,ts,tsx,css,md}\"",
"lint": "eslint . --ext .ts --quiet --config .eslintrc",
"postpack": "shx rm -f oclif.manifest.json",
"prepack": "yarn build && oclif manifest && oclif readme",
diff --git a/src/commands/account/create.ts b/src/commands/account/create.ts
index c088d275..bd10a90e 100644
--- a/src/commands/account/create.ts
+++ b/src/commands/account/create.ts
@@ -1,6 +1,12 @@
import { Flags } from "@oclif/core";
import chalk from "chalk";
-import { ChainAccount, encrypt, getSwankyConfig, isLocalConfigCheck, SwankyAccountCommand } from "../../lib/index.js";
+import {
+ ChainAccount,
+ encrypt,
+ getSwankyConfig,
+ isLocalConfigCheck,
+ SwankyAccountCommand,
+} from "../../lib/index.js";
import { AccountData } from "../../types/index.js";
import inquirer from "inquirer";
import { SwankyCommand } from "../../lib/swankyCommand.js";
@@ -14,7 +20,6 @@ export class CreateAccount extends SwankyAccountCommand {
global: Flags.boolean({
char: "g",
description: "Create account globally stored in Swanky system config.",
-
}),
new: Flags.boolean({
char: "n",
diff --git a/src/commands/account/list.ts b/src/commands/account/list.ts
index 67f05ecd..3e2afc08 100644
--- a/src/commands/account/list.ts
+++ b/src/commands/account/list.ts
@@ -13,11 +13,11 @@ export class ListAccounts extends SwankyCommand {
async run(): Promise {
const countOfDevAccounts = this.swankyConfig.accounts.filter((account) => account.isDev).length;
- if(countOfDevAccounts !== 0) {
+ if (countOfDevAccounts !== 0) {
this.log(`${chalk.greenBright("✔")} Stored dev accounts:`);
for (const account of this.swankyConfig.accounts) {
- if(account.isDev){
+ if (account.isDev) {
this.log(`\t${chalk.yellowBright("Alias: ")} ${account.alias} \
${chalk.yellowBright("Address: ")} ${account.address} ${this.swankyConfig.defaultAccount === account.alias ? chalk.greenBright("<- Default") : ""}`);
}
@@ -26,11 +26,11 @@ ${chalk.yellowBright("Address: ")} ${account.address} ${this.swankyConfig.defaul
const countOfProdAccounts = this.swankyConfig.accounts.length - countOfDevAccounts;
- if(countOfProdAccounts !== 0) {
+ if (countOfProdAccounts !== 0) {
this.log(`${chalk.greenBright("✔")} Stored prod accounts:`);
for (const account of this.swankyConfig.accounts) {
- if(!account.isDev){
+ if (!account.isDev) {
this.log(`\t${chalk.yellowBright("Alias: ")} ${account.alias} \
${chalk.yellowBright("Address: ")} ${account.address} ${this.swankyConfig.defaultAccount === account.alias ? chalk.greenBright("<- Default") : ""}`);
}
diff --git a/src/commands/clear/index.ts b/src/commands/clear/index.ts
index 67b15d2e..08208872 100644
--- a/src/commands/clear/index.ts
+++ b/src/commands/clear/index.ts
@@ -6,13 +6,12 @@ import { Args, Flags } from "@oclif/core";
import { ensureContractNameOrAllFlagIsSet } from "../../lib/checks.js";
interface Folder {
- name: string,
- contractName?: string,
- path: string
+ name: string;
+ contractName?: string;
+ path: string;
}
export default class Clear extends SwankyCommand {
-
static flags = {
all: Flags.boolean({
char: "a",
@@ -42,29 +41,37 @@ export default class Clear extends SwankyCommand {
}
public async run(): Promise {
-
const { flags, args } = await this.parse(Clear);
ensureContractNameOrAllFlagIsSet(args, flags);
const workDirectory = process.cwd();
- const foldersToDelete: Folder[] = flags.all ?
- [
- { name: "Artifacts", path: path.join(workDirectory, "./artifacts") },
- { name: "Target", path: path.join(workDirectory, "./target") }
- ]
- : args.contractName ?
- [
- { name: "Artifacts", contractName: args.contractName, path: path.join(workDirectory, "./artifacts/", args.contractName) },
+ const foldersToDelete: Folder[] = flags.all
+ ? [
+ { name: "Artifacts", path: path.join(workDirectory, "./artifacts") },
{ name: "Target", path: path.join(workDirectory, "./target") },
- { name: "TestArtifacts", contractName: args.contractName, path: path.join(workDirectory, "./tests/", args.contractName, "/artifacts") }
]
- : [];
+ : args.contractName
+ ? [
+ {
+ name: "Artifacts",
+ contractName: args.contractName,
+ path: path.join(workDirectory, "./artifacts/", args.contractName),
+ },
+ { name: "Target", path: path.join(workDirectory, "./target") },
+ {
+ name: "TestArtifacts",
+ contractName: args.contractName,
+ path: path.join(workDirectory, "./tests/", args.contractName, "/artifacts"),
+ },
+ ]
+ : [];
for (const folder of foldersToDelete) {
- await this.spinner.runCommand(async () => this.deleteFolder(folder.path),
+ await this.spinner.runCommand(
+ async () => this.deleteFolder(folder.path),
`Deleting the ${folder.name} folder ${folder.contractName ? `for ${folder.contractName} contract` : ""}`,
`Successfully deleted the ${folder.name} folder ${folder.contractName ? `for ${folder.contractName} contract` : ""}\n at ${folder.path}`
);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/commands/contract/compile.ts b/src/commands/contract/compile.ts
index 967f5982..5d12c1fd 100644
--- a/src/commands/contract/compile.ts
+++ b/src/commands/contract/compile.ts
@@ -11,7 +11,11 @@ import {
import { InputError, ProcessError } from "../../lib/errors.js";
import { BuildMode, SwankyConfig } from "../../index.js";
import { ConfigBuilder } from "../../lib/config-builder.js";
-import { ensureContractNameOrAllFlagIsSet, ensureContractPathExists, ensureCargoContractVersionCompatibility, } from "../../lib/checks.js";
+import {
+ ensureContractNameOrAllFlagIsSet,
+ ensureContractPathExists,
+ ensureCargoContractVersionCompatibility,
+} from "../../lib/checks.js";
export class CompileContract extends SwankyCommand {
static description = "Compile the smart contract(s) in your contracts directory";
@@ -120,7 +124,7 @@ export class CompileContract extends SwankyCommand {
});
},
`Compiling ${contractName} contract`,
- `${contractName} Contract compiled successfully`,
+ `${contractName} Contract compiled successfully`
);
const artifactsPath = compilationResult as string;
diff --git a/src/commands/contract/deploy.ts b/src/commands/contract/deploy.ts
index 7a2e32df..87d965d8 100644
--- a/src/commands/contract/deploy.ts
+++ b/src/commands/contract/deploy.ts
@@ -16,7 +16,11 @@ import chalk from "chalk";
import { SwankyCommand } from "../../lib/swankyCommand.js";
import { ApiError, ProcessError } from "../../lib/errors.js";
import { ConfigBuilder } from "../../lib/config-builder.js";
-import { contractFromRecord, ensureArtifactsExist, ensureDevAccountNotInProduction } from "../../lib/checks.js";
+import {
+ contractFromRecord,
+ ensureArtifactsExist,
+ ensureDevAccountNotInProduction,
+} from "../../lib/checks.js";
export class DeployContract extends SwankyCommand {
static description = "Deploy contract to a running node";
@@ -59,7 +63,7 @@ export class DeployContract extends SwankyCommand {
const contractRecord = findContractRecord(localConfig, args.contractName);
- const contract = (await contractFromRecord(contractRecord));
+ const contract = await contractFromRecord(contractRecord);
await ensureArtifactsExist(contract);
@@ -97,7 +101,7 @@ export class DeployContract extends SwankyCommand {
const accountData = this.findAccountByAlias(accountAlias);
ensureDevAccountNotInProduction(accountData, flags.network);
-
+
const mnemonic = accountData.isDev
? (accountData.mnemonic as string)
: decrypt(
diff --git a/src/commands/contract/explain.ts b/src/commands/contract/explain.ts
index 03c6d614..4f89bf4e 100644
--- a/src/commands/contract/explain.ts
+++ b/src/commands/contract/explain.ts
@@ -19,7 +19,7 @@ export class ExplainContract extends SwankyCommand {
const contractRecord = findContractRecord(this.swankyConfig, args.contractName);
- const contract = (await contractFromRecord(contractRecord));
+ const contract = await contractFromRecord(contractRecord);
await ensureArtifactsExist(contract);
diff --git a/src/commands/contract/new.ts b/src/commands/contract/new.ts
index 27b3281f..e51fccf1 100644
--- a/src/commands/contract/new.ts
+++ b/src/commands/contract/new.ts
@@ -7,7 +7,8 @@ import {
processTemplates,
getTemplates,
prepareTestFiles,
- getSwankyConfig, configName,
+ getSwankyConfig,
+ configName,
} from "../../lib/index.js";
import { email, name, pickTemplate } from "../../lib/prompts.js";
import { kebabCase, pascalCase, snakeCase } from "change-case";
diff --git a/src/commands/contract/query.ts b/src/commands/contract/query.ts
index 262610f1..3c28a1ee 100644
--- a/src/commands/contract/query.ts
+++ b/src/commands/contract/query.ts
@@ -14,7 +14,7 @@ export class Query extends ContractCall {
const contract = new ContractPromise(
this.api.apiInst,
this.metadata,
- this.deploymentInfo.address,
+ this.deploymentInfo.address
);
const storageDepositLimit = null;
@@ -29,7 +29,7 @@ export class Query extends ContractCall {
gasLimit,
storageDepositLimit,
},
- ...flags.params,
+ ...flags.params
);
await this.api.apiInst.disconnect();
diff --git a/src/commands/contract/test.ts b/src/commands/contract/test.ts
index eb61895b..ce6e1dbd 100644
--- a/src/commands/contract/test.ts
+++ b/src/commands/contract/test.ts
@@ -57,7 +57,7 @@ export class TestContract extends SwankyCommand {
for (const contractName of contractNames) {
const contractRecord = findContractRecord(this.swankyConfig, contractName);
- const contract = (await contractFromRecord(contractRecord));
+ const contract = await contractFromRecord(contractRecord);
console.log(`Testing contract: ${contractName}`);
@@ -139,7 +139,6 @@ export class TestContract extends SwankyCommand {
global.contractTypesPath = path.resolve(testDir, "typedContract");
-
try {
await new Promise((resolve, reject) => {
mocha.run((failures) => {
diff --git a/src/commands/contract/verify.ts b/src/commands/contract/verify.ts
index 1add044b..70857f6f 100644
--- a/src/commands/contract/verify.ts
+++ b/src/commands/contract/verify.ts
@@ -10,7 +10,11 @@ import { InputError, ProcessError } from "../../lib/errors.js";
import { spawn } from "node:child_process";
import { ConfigBuilder } from "../../lib/config-builder.js";
import { BuildData, SwankyConfig } from "../../index.js";
-import { ensureContractNameOrAllFlagIsSet, ensureContractPathExists, ensureCargoContractVersionCompatibility } from "../../lib/checks.js";
+import {
+ ensureContractNameOrAllFlagIsSet,
+ ensureContractPathExists,
+ ensureCargoContractVersionCompatibility,
+} from "../../lib/checks.js";
export class VerifyContract extends SwankyCommand {
static description = "Verify the smart contract(s) in your contracts directory";
@@ -43,9 +47,7 @@ export class VerifyContract extends SwankyCommand {
`Cargo contract tool is required for verifiable mode. Please ensure it is installed.`
);
- ensureCargoContractVersionCompatibility(cargoContractVersion, "4.0.0", [
- "4.0.0-alpha",
- ]);
+ ensureCargoContractVersionCompatibility(cargoContractVersion, "4.0.0", ["4.0.0-alpha"]);
ensureContractNameOrAllFlagIsSet(args, flags);
@@ -62,53 +64,52 @@ export class VerifyContract extends SwankyCommand {
await ensureContractPathExists(contractName);
-
- if(!contractRecord.build) {
+ if (!contractRecord.build) {
throw new InputError(`Contract ${contractName} is not compiled. Please compile it first`);
}
await spinner.runCommand(
async () => {
- return new Promise((resolve, reject) => {
- if(contractRecord.build!.isVerified) {
- this.logger.info(`Contract ${contractName} is already verified`);
- resolve(true);
- }
- const compileArgs = [
- "contract",
- "verify",
- `artifacts/${contractName}/${contractName}.contract`,
- "--manifest-path",
- `contracts/${contractName}/Cargo.toml`,
- ];
- const compile = spawn("cargo", compileArgs);
- this.logger.info(`Running verify command: [${JSON.stringify(compile.spawnargs)}]`);
- let outputBuffer = "";
- let errorBuffer = "";
-
- compile.stdout.on("data", (data) => {
- outputBuffer += data.toString();
- spinner.ora.clear();
- });
-
- compile.stderr.on("data", (data) => {
- errorBuffer += data;
- });
-
- compile.on("exit", (code) => {
- if (code === 0) {
- const regex = /Successfully verified contract (.*) against reference contract (.*)/;
- const match = outputBuffer.match(regex);
- if (match) {
- this.logger.info(`Contract ${contractName} verification done.`);
- resolve(true);
- }
- } else {
- reject(new ProcessError(errorBuffer));
+ return new Promise((resolve, reject) => {
+ if (contractRecord.build!.isVerified) {
+ this.logger.info(`Contract ${contractName} is already verified`);
+ resolve(true);
+ }
+ const compileArgs = [
+ "contract",
+ "verify",
+ `artifacts/${contractName}/${contractName}.contract`,
+ "--manifest-path",
+ `contracts/${contractName}/Cargo.toml`,
+ ];
+ const compile = spawn("cargo", compileArgs);
+ this.logger.info(`Running verify command: [${JSON.stringify(compile.spawnargs)}]`);
+ let outputBuffer = "";
+ let errorBuffer = "";
+
+ compile.stdout.on("data", (data) => {
+ outputBuffer += data.toString();
+ spinner.ora.clear();
+ });
+
+ compile.stderr.on("data", (data) => {
+ errorBuffer += data;
+ });
+
+ compile.on("exit", (code) => {
+ if (code === 0) {
+ const regex = /Successfully verified contract (.*) against reference contract (.*)/;
+ const match = outputBuffer.match(regex);
+ if (match) {
+ this.logger.info(`Contract ${contractName} verification done.`);
+ resolve(true);
}
- });
+ } else {
+ reject(new ProcessError(errorBuffer));
+ }
});
- },
+ });
+ },
`Verifying ${contractName} contract`,
`${contractName} Contract verified successfully`
);
@@ -116,16 +117,15 @@ export class VerifyContract extends SwankyCommand {
await this.spinner.runCommand(async () => {
const buildData = {
...contractRecord.build,
- isVerified: true
+ isVerified: true,
} as BuildData;
-
+
const newLocalConfig = new ConfigBuilder(localConfig)
.addContractBuild(args.contractName, buildData)
.build();
-
+
await this.storeConfig(newLocalConfig, "local");
}, "Writing config");
-
}
}
}
diff --git a/src/commands/env/check.ts b/src/commands/env/check.ts
index 417e6741..7cc763a8 100644
--- a/src/commands/env/check.ts
+++ b/src/commands/env/check.ts
@@ -1,5 +1,11 @@
import { Listr } from "listr2";
-import { extractCargoContractVersion, extractCargoDylintVersion, extractCargoNightlyVersion, extractCargoVersion, extractRustVersion } from "../../lib/index.js";
+import {
+ extractCargoContractVersion,
+ extractCargoDylintVersion,
+ extractCargoNightlyVersion,
+ extractCargoVersion,
+ extractRustVersion,
+} from "../../lib/index.js";
import { SwankyConfig } from "../../types/index.js";
import { pathExistsSync, writeJson } from "fs-extra/esm";
import { readFileSync } from "fs";
@@ -17,7 +23,7 @@ interface Ctx {
os: {
platform: string;
architecture: string;
- },
+ };
versions: {
tools: {
rust?: string | null;
@@ -134,7 +140,8 @@ export class Check extends SwankyCommand {
{
title: "Check swanky node",
task: async (ctx) => {
- ctx.versions.swankyNode = this.swankyConfig.node.version !== "" ? this.swankyConfig.node.version : null;
+ ctx.versions.swankyNode =
+ this.swankyConfig.node.version !== "" ? this.swankyConfig.node.version : null;
},
},
{
@@ -175,12 +182,16 @@ export class Check extends SwankyCommand {
Object.entries(ctx.versions.contracts).forEach(([contract, inkDependencies]) => {
Object.entries(inkDependencies).forEach(([depName, version]) => {
if (semver.gt(version, supportedInk)) {
- mismatched[
- `${contract}-${depName}`
- ] = `Version of ${depName} (${version}) in ${chalk.yellowBright(contract)} is higher than supported ink version (${supportedInk}) in current Swanky node version (${swankyNodeVersion}). A Swanky node update can fix this warning.`;
+ mismatched[`${contract}-${depName}`] =
+ `Version of ${depName} (${version}) in ${chalk.yellowBright(contract)} is higher than supported ink version (${supportedInk}) in current Swanky node version (${swankyNodeVersion}). A Swanky node update can fix this warning.`;
}
- if (version.startsWith(">") || version.startsWith("<") || version.startsWith("^") || version.startsWith("~")) {
+ if (
+ version.startsWith(">") ||
+ version.startsWith("<") ||
+ version.startsWith("^") ||
+ version.startsWith("~")
+ ) {
ctx.looseDefinitionDetected = true;
}
});
@@ -188,7 +199,9 @@ export class Check extends SwankyCommand {
ctx.mismatchedVersions = mismatched;
if (Object.entries(mismatched).length > 0) {
- throw new Warn("Ink versions in contracts don't match the Swanky node's supported version.");
+ throw new Warn(
+ "Ink versions in contracts don't match the Swanky node's supported version."
+ );
}
},
exitOnError: false,
@@ -200,25 +213,28 @@ export class Check extends SwankyCommand {
task: async (ctx) => {
const cargoContractVersion = ctx.versions.tools.cargoContract!;
const dependencyIdx = CARGO_CONTRACT_INK_DEPS.findIndex((dep) =>
- semver.satisfies(cargoContractVersion.replace(/-.*$/, ""), `>=${dep.minCargoContractVersion}`)
+ semver.satisfies(
+ cargoContractVersion.replace(/-.*$/, ""),
+ `>=${dep.minCargoContractVersion}`
+ )
);
if (dependencyIdx === -1) {
throw new Warn(`cargo-contract version ${cargoContractVersion} is not supported`);
}
-
+
const validInkVersionRange = CARGO_CONTRACT_INK_DEPS[dependencyIdx].validInkVersionRange;
- const minCargoContractVersion = dependencyIdx === 0
- ? CARGO_CONTRACT_INK_DEPS[dependencyIdx].minCargoContractVersion
- : CARGO_CONTRACT_INK_DEPS[dependencyIdx - 1].minCargoContractVersion
+ const minCargoContractVersion =
+ dependencyIdx === 0
+ ? CARGO_CONTRACT_INK_DEPS[dependencyIdx].minCargoContractVersion
+ : CARGO_CONTRACT_INK_DEPS[dependencyIdx - 1].minCargoContractVersion;
const mismatched: Record = {};
Object.entries(ctx.versions.contracts).forEach(([contract, inkPackages]) => {
Object.entries(inkPackages).forEach(([inkPackage, version]) => {
if (!semver.satisfies(version, validInkVersionRange)) {
- mismatched[
- `${contract}-${inkPackage}`
- ] = `Version of ${inkPackage} (${version}) in ${chalk.yellowBright(contract)} requires cargo-contract version >=${minCargoContractVersion}, but version ${cargoContractVersion} is installed`;
+ mismatched[`${contract}-${inkPackage}`] =
+ `Version of ${inkPackage} (${version}) in ${chalk.yellowBright(contract)} requires cargo-contract version >=${minCargoContractVersion}, but version ${cargoContractVersion} is installed`;
}
});
});
@@ -260,7 +276,7 @@ export class Check extends SwankyCommand {
},
swankyConfig: this.swankyConfig,
looseDefinitionDetected: false,
- mismatchedVersions: {}
+ mismatchedVersions: {},
});
Object.values(context.mismatchedVersions).forEach((mismatch) => this.warn(mismatch));
@@ -274,14 +290,17 @@ export class Check extends SwankyCommand {
const output = {
...context.os,
- ...context.versions
- }
+ ...context.versions,
+ };
const filePath = flags.print;
if (filePath !== undefined) {
- await this.spinner.runCommand(async () => {
- writeJson(filePath, output, { spaces: 2 });
- }, `Writing output to file ${chalk.yellowBright(filePath)}`);
+ await this.spinner.runCommand(
+ async () => {
+ writeJson(filePath, output, { spaces: 2 });
+ },
+ `Writing output to file ${chalk.yellowBright(filePath)}`
+ );
}
}
}
diff --git a/src/commands/env/install.ts b/src/commands/env/install.ts
index b7978484..8b3f8621 100644
--- a/src/commands/env/install.ts
+++ b/src/commands/env/install.ts
@@ -23,7 +23,7 @@ export class Install extends SwankyCommand {
const { flags } = await this.parse(Install);
const depsArray = flags.deps ?? [];
- const localConfig = getSwankyConfig('local') as SwankyConfig;
+ const localConfig = getSwankyConfig("local") as SwankyConfig;
const depsToInstall = depsArray.length > 0 ? this.parseDeps(depsArray) : localConfig.env;
if (Object.keys(depsToInstall).length === 0) {
@@ -41,14 +41,19 @@ export class Install extends SwankyCommand {
}
parseDeps(deps: string[]): Record {
- return deps.reduce((acc, dep) => {
- const [key, value] = dep.split('@');
- if (!Object.keys(SUPPORTED_DEPS).includes(key)) {
- throw new InputError(`Unsupported dependency '${key}'. Supported: ${Object.keys(SUPPORTED_DEPS).join(", ")}`);
- }
- acc[key] = value || 'latest';
- return acc;
- }, {} as Record);
+ return deps.reduce(
+ (acc, dep) => {
+ const [key, value] = dep.split("@");
+ if (!Object.keys(SUPPORTED_DEPS).includes(key)) {
+ throw new InputError(
+ `Unsupported dependency '${key}'. Supported: ${Object.keys(SUPPORTED_DEPS).join(", ")}`
+ );
+ }
+ acc[key] = value || "latest";
+ return acc;
+ },
+ {} as Record
+ );
}
async installDeps(dependencies: Record) {
@@ -62,10 +67,8 @@ export class Install extends SwankyCommand {
async updateLocalConfig(newDeps: Record): Promise {
await this.spinner.runCommand(async () => {
- const newLocalConfig = new ConfigBuilder(getSwankyConfig('local'))
- .updateEnv(newDeps)
- .build();
- await this.storeConfig(newLocalConfig, 'local');
+ const newLocalConfig = new ConfigBuilder(getSwankyConfig("local")).updateEnv(newDeps).build();
+ await this.storeConfig(newLocalConfig, "local");
}, "Updating Swanky config with new Dev Dependencies...");
}
}
diff --git a/src/commands/generate/tests.ts b/src/commands/generate/tests.ts
index 0c9a7b04..e15dced9 100644
--- a/src/commands/generate/tests.ts
+++ b/src/commands/generate/tests.ts
@@ -1,5 +1,10 @@
import { Args, Flags } from "@oclif/core";
-import { findContractRecord, getTemplates, prepareTestFiles, processTemplates } from "../../lib/index.js";
+import {
+ findContractRecord,
+ getTemplates,
+ prepareTestFiles,
+ processTemplates,
+} from "../../lib/index.js";
import { SwankyCommand } from "../../lib/swankyCommand.js";
import { ConfigError, InputError } from "../../lib/errors.js";
import path from "node:path";
@@ -55,15 +60,14 @@ export class GenerateTests extends SwankyCommand {
templates.templatesPath,
process.cwd(),
args.contractName,
- templateName,
+ templateName
);
}
async checkContract(name: string) {
-
const contractRecord = findContractRecord(this.swankyConfig, name);
- const contract = (await contractFromRecord(contractRecord));
+ const contract = await contractFromRecord(contractRecord);
await ensureArtifactsExist(contract);
}
@@ -71,7 +75,7 @@ export class GenerateTests extends SwankyCommand {
async checkOverwrite(
testPath: string,
testType: TestType,
- contractName?: string,
+ contractName?: string
): Promise {
if (!existsSync(testPath)) return true; // No need to overwrite
const message =
@@ -120,17 +124,17 @@ export class GenerateTests extends SwankyCommand {
templatesPath: string,
projectPath: string,
contractName?: string,
- templateName?: string,
+ templateName?: string
): Promise {
if (testType === "e2e") {
await this.spinner.runCommand(
() => prepareTestFiles("e2e", templatesPath, projectPath),
- "Generating e2e test helpers",
+ "Generating e2e test helpers"
);
} else {
await this.spinner.runCommand(
() => prepareTestFiles("mocha", templatesPath, projectPath, templateName, contractName),
- `Generating tests for ${contractName} with mocha`,
+ `Generating tests for ${contractName} with mocha`
);
}
await this.spinner.runCommand(
@@ -141,7 +145,7 @@ export class GenerateTests extends SwankyCommand {
contract_name: contractName ?? "",
contract_name_pascal: contractName ? pascalCase(contractName) : "",
}),
- "Processing templates",
+ "Processing templates"
);
}
}
diff --git a/src/commands/generate/types.ts b/src/commands/generate/types.ts
index 746eb622..109ca62e 100644
--- a/src/commands/generate/types.ts
+++ b/src/commands/generate/types.ts
@@ -19,7 +19,7 @@ export class GenerateTypes extends SwankyCommand {
const contractRecord = findContractRecord(this.swankyConfig, args.contractName);
- const contract = (await contractFromRecord(contractRecord));
+ const contract = await contractFromRecord(contractRecord);
await ensureArtifactsExist(contract);
diff --git a/src/commands/init/index.ts b/src/commands/init/index.ts
index 2dfa6312..0d6b986b 100644
--- a/src/commands/init/index.ts
+++ b/src/commands/init/index.ts
@@ -17,7 +17,7 @@ import {
installDeps,
prepareTestFiles,
processTemplates,
- swankyNodeVersions
+ swankyNodeVersions,
} from "../../lib/index.js";
import { SwankyCommand } from "../../lib/swankyCommand.js";
import { InputError, UnknownError } from "../../lib/errors.js";
@@ -146,10 +146,8 @@ export class Init extends SwankyCommand {
if (useSwankyNode) {
const versions = Array.from(swankyNodeVersions.keys());
let nodeVersion = DEFAULT_NODE_INFO.version;
- await inquirer.prompt([
- pickNodeVersion(versions),
- ]).then((answers) => {
- nodeVersion = answers.version;
+ await inquirer.prompt([pickNodeVersion(versions)]).then((answers) => {
+ nodeVersion = answers.version;
});
const nodeInfo = swankyNodeVersions.get(nodeVersion)!;
@@ -158,9 +156,13 @@ export class Init extends SwankyCommand {
task: downloadNode,
args: [this.projectPath, nodeInfo, this.spinner],
runningMessage: "Downloading Swanky node",
- callback: (localPath) => this.configBuilder.updateNodeSettings({ supportedInk: nodeInfo.supportedInk,
- polkadotPalletVersions: nodeInfo.polkadotPalletVersions,
- version: nodeInfo.version, localPath }),
+ callback: (localPath) =>
+ this.configBuilder.updateNodeSettings({
+ supportedInk: nodeInfo.supportedInk,
+ polkadotPalletVersions: nodeInfo.polkadotPalletVersions,
+ version: nodeInfo.version,
+ localPath,
+ }),
});
}
}
@@ -191,7 +193,7 @@ export class Init extends SwankyCommand {
runningMessage,
successMessage,
failMessage,
- shouldExitOnError,
+ shouldExitOnError
);
if (result && callback) {
callback(result as string);
@@ -271,7 +273,7 @@ export class Init extends SwankyCommand {
runningMessage: "Processing templates",
});
- this.configBuilder.updateContracts( {
+ this.configBuilder.updateContracts({
[contractName as string]: {
name: contractName,
moduleName: snakeCase(contractName),
@@ -291,7 +293,7 @@ export class Init extends SwankyCommand {
} catch (cause) {
throw new InputError(
`Error reading target directory [${chalk.yellowBright(pathToExistingProject)}]`,
- { cause },
+ { cause }
);
}
@@ -311,7 +313,7 @@ export class Init extends SwankyCommand {
const candidatesList: CopyCandidates = await getCopyCandidatesList(
pathToExistingProject,
- copyGlobsList,
+ copyGlobsList
);
const testDir = await detectTests(pathToExistingProject);
@@ -473,10 +475,10 @@ async function confirmCopyList(candidatesList: CopyCandidates) {
(
item: PathEntry & {
group: "contracts" | "crates" | "tests";
- },
+ }
) => {
resultingList[item.group]?.push(item);
- },
+ }
);
return resultingList;
}
@@ -503,7 +505,7 @@ async function detectTests(pathToExistingProject: string): Promise {
const { selectedDirectory } = await inquirer.prompt([
{
@@ -574,7 +576,7 @@ async function getCopyCandidatesList(
pathsToCopy: {
contractsDirectories: string[];
cratesDirectories: string[];
- },
+ }
) {
const detectedPaths = {
contracts: await getDirsAndFiles(projectPath, pathsToCopy.contractsDirectories),
@@ -595,7 +597,7 @@ async function getGlobPaths(projectPath: string, globList: string[], isDirOnly:
onlyDirectories: isDirOnly,
deep: 1,
objectMode: true,
- },
+ }
);
}
diff --git a/src/commands/node/chopsticks/init.ts b/src/commands/node/chopsticks/init.ts
index fd3ab620..7611cc9b 100644
--- a/src/commands/node/chopsticks/init.ts
+++ b/src/commands/node/chopsticks/init.ts
@@ -1,10 +1,6 @@
import path from "node:path";
import { SwankyCommand } from "../../../lib/swankyCommand.js";
-import {
- copyChopsticksTemplateFile,
- getSwankyConfig,
- getTemplates,
-} from "../../../lib/index.js";
+import { copyChopsticksTemplateFile, getSwankyConfig, getTemplates } from "../../../lib/index.js";
import { ConfigBuilder } from "../../../lib/config-builder.js";
import { SwankyConfig } from "../../../types/index.js";
@@ -21,9 +17,8 @@ export class InitChopsticks extends SwankyCommand {
const configPath = path.resolve(projectPath, "node", "config");
await this.spinner.runCommand(
- () =>
- copyChopsticksTemplateFile(chopsticksTemplatePath, configPath),
- "Copying Chopsticks template files...",
+ () => copyChopsticksTemplateFile(chopsticksTemplatePath, configPath),
+ "Copying Chopsticks template files..."
);
await this.spinner.runCommand(async () => {
@@ -36,4 +31,3 @@ export class InitChopsticks extends SwankyCommand {
this.log("Chopsticks config initialized successfully");
}
}
-
diff --git a/src/commands/node/chopsticks/start.ts b/src/commands/node/chopsticks/start.ts
index bde4a77f..07859131 100644
--- a/src/commands/node/chopsticks/start.ts
+++ b/src/commands/node/chopsticks/start.ts
@@ -8,10 +8,10 @@ export class StartChopsticks extends SwankyCommand {
static description = "Start chopsticks";
static flags = {
- "config": Flags.string({
+ config: Flags.string({
description: "Path to the chopsticks config file",
- })
- }
+ }),
+ };
async run(): Promise {
const { flags } = await this.parse(StartChopsticks);
@@ -20,20 +20,19 @@ export class StartChopsticks extends SwankyCommand {
const chopsticksConfigPath = flags.config ?? this.swankyConfig.node.chopsticks?.configPath;
- if(!chopsticksConfigPath) {
- throw new ConfigError("Chopsticks config not set in swanky config. Please set it in swanky config or provide the path to the chopsticks config file using --config flag.");
+ if (!chopsticksConfigPath) {
+ throw new ConfigError(
+ "Chopsticks config not set in swanky config. Please set it in swanky config or provide the path to the chopsticks config file using --config flag."
+ );
}
if (!(await pathExists(chopsticksConfigPath))) {
throw new FileError(`Chopsticks config file not found at ${flags.config}`);
}
- await execaCommand(
- `npx @acala-network/chopsticks@latest --config=${chopsticksConfigPath}`,
- {
- stdio: "inherit",
- }
- );
+ await execaCommand(`npx @acala-network/chopsticks@latest --config=${chopsticksConfigPath}`, {
+ stdio: "inherit",
+ });
this.log("Chopsticks started successfully.");
}
diff --git a/src/commands/node/install.ts b/src/commands/node/install.ts
index 9af510e1..5630a38a 100644
--- a/src/commands/node/install.ts
+++ b/src/commands/node/install.ts
@@ -13,27 +13,29 @@ export class InstallNode extends SwankyCommand {
static flags = {
"set-version": Flags.string({
- description: "Specify version of swanky node to install. \n List of supported versions: " + Array.from(swankyNodeVersions.keys()).join(", "),
+ description:
+ "Specify version of swanky node to install. \n List of supported versions: " +
+ Array.from(swankyNodeVersions.keys()).join(", "),
required: false,
}),
- }
+ };
async run(): Promise {
const { flags } = await this.parse(InstallNode);
if (flags.verbose) {
this.spinner.verbose = true;
}
- let nodeVersion= DEFAULT_NODE_INFO.version;
+ let nodeVersion = DEFAULT_NODE_INFO.version;
if (flags["set-version"]) {
nodeVersion = flags["set-version"];
- if(!swankyNodeVersions.has(nodeVersion)) {
- throw new InputError(`Version ${nodeVersion} is not supported.\n List of supported versions: ${Array.from(swankyNodeVersions.keys()).join(", ")}`);
+ if (!swankyNodeVersions.has(nodeVersion)) {
+ throw new InputError(
+ `Version ${nodeVersion} is not supported.\n List of supported versions: ${Array.from(swankyNodeVersions.keys()).join(", ")}`
+ );
}
} else {
const versions = Array.from(swankyNodeVersions.keys());
- await inquirer.prompt([
- pickNodeVersion(versions),
- ]).then((answers) => {
+ await inquirer.prompt([pickNodeVersion(versions)]).then((answers) => {
nodeVersion = answers.version;
});
}
@@ -41,7 +43,7 @@ export class InstallNode extends SwankyCommand {
const projectPath = path.resolve();
if (this.swankyConfig.node.localPath !== "") {
- const { overwrite } =await inquirer.prompt([
+ const { overwrite } = await inquirer.prompt([
choice("overwrite", "Swanky node already installed. Do you want to overwrite it?"),
]);
if (!overwrite) {
diff --git a/src/commands/node/start.ts b/src/commands/node/start.ts
index 89155083..7d161a7a 100644
--- a/src/commands/node/start.ts
+++ b/src/commands/node/start.ts
@@ -36,7 +36,7 @@ export class StartNode extends SwankyCommand {
// Non-Persistent mode (`--dev`) allows all CORS origin, without `--dev`, users need to specify origins by `--rpc-cors`.
await execaCommand(
`${this.swankyConfig.node.localPath} \
- ${ semver.gte(this.swankyConfig.node.version, "1.6.0") ? `--finalize-delay-sec ${flags.finalizeDelaySec}` : ""} \
+ ${semver.gte(this.swankyConfig.node.version, "1.6.0") ? `--finalize-delay-sec ${flags.finalizeDelaySec}` : ""} \
${flags.tmp ? "--dev" : `--rpc-cors ${flags.rpcCors}`}`,
{
stdio: "inherit",
diff --git a/src/commands/node/version.ts b/src/commands/node/version.ts
index a6937d09..e957d282 100644
--- a/src/commands/node/version.ts
+++ b/src/commands/node/version.ts
@@ -2,10 +2,9 @@ import { SwankyCommand } from "../../lib/swankyCommand.js";
export class NodeVersion extends SwankyCommand {
static description = "Show swanky node version";
async run(): Promise {
- if(this.swankyConfig.node.version === ""){
+ if (this.swankyConfig.node.version === "") {
this.log("Swanky node is not installed");
- }
- else {
+ } else {
this.log(`Swanky node version: ${this.swankyConfig.node.version}`);
}
}
diff --git a/src/commands/zombienet/init.ts b/src/commands/zombienet/init.ts
index e1082106..11a3da5c 100644
--- a/src/commands/zombienet/init.ts
+++ b/src/commands/zombienet/init.ts
@@ -65,13 +65,12 @@ As a result users of MacOS need to clone the Polkadot repo (https://github.com/p
if (!Object.keys(zombienet.binaries).includes(binaryName)) {
this.error(`Binary ${binaryName} not found in Zombienet config`);
}
- zombienetData.binaries[binaryName] = zombienet.binaries[binaryName as keyof typeof zombienet.binaries];
+ zombienetData.binaries[binaryName] =
+ zombienet.binaries[binaryName as keyof typeof zombienet.binaries];
}
await this.spinner.runCommand(async () => {
- const newLocalConfig = new ConfigBuilder(localConfig)
- .addZombienet(zombienetData)
- .build();
+ const newLocalConfig = new ConfigBuilder(localConfig).addZombienet(zombienetData).build();
await this.storeConfig(newLocalConfig, "local");
}, "Writing config");
@@ -81,24 +80,22 @@ As a result users of MacOS need to clone the Polkadot repo (https://github.com/p
if (binArray.length === 1 && binArray[0] === "polkadot") {
await spinner.runCommand(
- () =>
- copyZombienetTemplateFile(zombienetTemplatePath, configPath),
- "Copying template files",
+ () => copyZombienetTemplateFile(zombienetTemplatePath, configPath),
+ "Copying template files"
);
} else {
await spinner.runCommand(
() => buildZombienetConfigFromBinaries(binArray, zombienetTemplatePath, configPath),
- "Copying template files",
+ "Copying template files"
);
}
// Install binaries based on zombie config
await this.spinner.runCommand(
() => downloadZombienetBinaries(binArray, projectPath, localConfig, this.spinner),
- "Downloading Zombienet binaries",
+ "Downloading Zombienet binaries"
);
this.log("ZombieNet config Installed successfully");
}
}
-
diff --git a/src/commands/zombienet/start.ts b/src/commands/zombienet/start.ts
index 72f5b221..360b7db3 100644
--- a/src/commands/zombienet/start.ts
+++ b/src/commands/zombienet/start.ts
@@ -4,7 +4,6 @@ import { pathExistsSync } from "fs-extra/esm";
import { execaCommand } from "execa";
import { Flags } from "@oclif/core";
-
export class StartZombienet extends SwankyCommand {
static description = "Start Zombienet";
@@ -20,21 +19,21 @@ export class StartZombienet extends SwankyCommand {
async run(): Promise {
const { flags } = await this.parse(StartZombienet);
const projectPath = path.resolve();
- const binPath = path.resolve(projectPath, "zombienet", "bin")
+ const binPath = path.resolve(projectPath, "zombienet", "bin");
if (!pathExistsSync(path.resolve(binPath, "zombienet"))) {
this.error("Zombienet has not initialized. Run `swanky zombienet:init` first");
}
await execaCommand(
- `./zombienet/bin/zombienet \
+ `./zombienet/bin/zombienet \
spawn --provider native \
${flags["config-path"]}
`,
- {
- stdio: "inherit",
- }
+ {
+ stdio: "inherit",
+ }
);
this.log("ZombieNet started successfully");
}
-}
\ No newline at end of file
+}
diff --git a/src/lib/account.ts b/src/lib/account.ts
index e0f7e242..ecd2d420 100644
--- a/src/lib/account.ts
+++ b/src/lib/account.ts
@@ -66,13 +66,17 @@ export abstract class SwankyAccountCommand extends Swa
);
} catch (cause) {
if (cause instanceof Error) {
- if (cause.message.includes('ECONNREFUSED') && canBeSkipped) {
- this.warn(`Unable to connect to the node. Skipping faucet transfer for ${chalk.yellowBright(accountData.alias)}.`);
+ if (cause.message.includes("ECONNREFUSED") && canBeSkipped) {
+ this.warn(
+ `Unable to connect to the node. Skipping faucet transfer for ${chalk.yellowBright(accountData.alias)}.`
+ );
} else {
throw new ApiError("Error transferring tokens from faucet account", { cause });
}
} else {
- throw new ApiError("An unknown error occurred during faucet transfer", { cause: new Error(String(cause)) });
+ throw new ApiError("An unknown error occurred during faucet transfer", {
+ cause: new Error(String(cause)),
+ });
}
} finally {
if (api) {
@@ -81,4 +85,3 @@ export abstract class SwankyAccountCommand extends Swa
}
}
}
-
diff --git a/src/lib/cargoContractInfo.ts b/src/lib/cargoContractInfo.ts
index eafdd57d..52be5e21 100644
--- a/src/lib/cargoContractInfo.ts
+++ b/src/lib/cargoContractInfo.ts
@@ -10,4 +10,4 @@ export const CARGO_CONTRACT_INK_DEPS: CargoContractInkDependency[] = [
{ minCargoContractVersion: "2.2.0", validInkVersionRange: "<5.0.0" },
{ minCargoContractVersion: "2.0.2", validInkVersionRange: "<4.2.0" },
{ minCargoContractVersion: "2.0.0", validInkVersionRange: "<4.0.1" },
-];
\ No newline at end of file
+];
diff --git a/src/lib/checks.ts b/src/lib/checks.ts
index c709372b..87237663 100644
--- a/src/lib/checks.ts
+++ b/src/lib/checks.ts
@@ -19,7 +19,9 @@ export function ensureContractNameOrAllFlagIsSet(
export async function ensureContractPathExists(contractName: string, projectPath = "") {
const contractPath = path.resolve(projectPath, "contracts", contractName);
if (!(await pathExists(contractPath))) {
- throw new InputError(`Contract folder not found ${chalk.yellowBright(contractName)} at path: ${contractPath}`);
+ throw new InputError(
+ `Contract folder not found ${chalk.yellowBright(contractName)} at path: ${contractPath}`
+ );
}
}
@@ -28,7 +30,7 @@ export async function contractFromRecord(contractRecord: ContractData) {
if (!(await contract.pathExists())) {
throw new FileError(
- `Path to contract ${contractRecord.name} does not exist: ${contract.contractPath}`,
+ `Path to contract ${contractRecord.name} does not exist: ${contract.contractPath}`
);
}
return contract;
@@ -38,7 +40,7 @@ export async function ensureArtifactsExist(contract: Contract) {
const artifactsCheck = await contract.artifactsExist();
if (!artifactsCheck.result) {
throw new FileError(
- `No artifact file found at path: ${artifactsCheck.missingPaths.toString()}`,
+ `No artifact file found at path: ${artifactsCheck.missingPaths.toString()}`
);
}
}
@@ -77,4 +79,4 @@ export function ensureCargoContractVersionCompatibility(
`cargo-contract version >= ${minimalVersion} required, but found version ${cargoContractVersion}. Please update to a compatible version.`
);
}
-}
\ No newline at end of file
+}
diff --git a/src/lib/config-builder.ts b/src/lib/config-builder.ts
index 8a2d5e3b..58c0e53c 100644
--- a/src/lib/config-builder.ts
+++ b/src/lib/config-builder.ts
@@ -1,4 +1,11 @@
-import { AccountData, BuildData, DeploymentData, SwankyConfig, SwankySystemConfig, ZombienetData } from "../index.js";
+import {
+ AccountData,
+ BuildData,
+ DeploymentData,
+ SwankyConfig,
+ SwankySystemConfig,
+ ZombienetData,
+} from "../index.js";
import { snakeCase } from "change-case";
export class ConfigBuilder {
@@ -34,7 +41,7 @@ export class ConfigBuilder {
updateEnv(env: Record): ConfigBuilder {
if ("env" in this.config) {
- this.config.env = {...this.config.env, ...env};
+ this.config.env = { ...this.config.env, ...env };
}
return this;
}
@@ -79,10 +86,10 @@ export class ConfigBuilder {
}
addChopsticks(path: string): ConfigBuilder {
- if("node" in this.config) {
- this.config.node.chopsticks ={
+ if ("node" in this.config) {
+ this.config.node.chopsticks = {
configPath: path,
- }
+ };
}
return this;
}
diff --git a/src/lib/config.ts b/src/lib/config.ts
index 193af1bc..db869f2c 100644
--- a/src/lib/config.ts
+++ b/src/lib/config.ts
@@ -2,9 +2,9 @@ import { configName, SwankyConfig } from "../index.js";
import { FileError } from "./errors.js";
export function ensureSwankyNodeInstalled(config: SwankyConfig) {
- if (config.node.localPath === "") {
- throw new FileError('Swanky node is not installed. Please run `swanky node:install` first.');
- }
+ if (config.node.localPath === "") {
+ throw new FileError("Swanky node is not installed. Please run `swanky node:install` first.");
+ }
}
// //deploy
@@ -36,9 +36,9 @@ export function ensureSwankyNodeInstalled(config: SwankyConfig) {
// }
export function findContractRecord(config: SwankyConfig, contractName: string) {
- const contractRecord = config.contracts[contractName];
- if (!contractRecord) {
- throw new FileError(`Cannot find a contract named ${contractName} in "${configName()}"`);
- }
- return contractRecord;
+ const contractRecord = config.contracts[contractName];
+ if (!contractRecord) {
+ throw new FileError(`Cannot find a contract named ${contractName} in "${configName()}"`);
+ }
+ return contractRecord;
}
diff --git a/src/lib/contract.ts b/src/lib/contract.ts
index 22dc127e..463be595 100644
--- a/src/lib/contract.ts
+++ b/src/lib/contract.ts
@@ -26,7 +26,6 @@ export class Contract {
return pathExists(this.contractPath);
}
-
async artifactsExist(): Promise<{ result: boolean; missingPaths: string[] }> {
const missingPaths: string[] = [];
let result = true;
@@ -48,7 +47,7 @@ export class Contract {
missingPaths: [],
};
const artifactPath = path.resolve("typedContracts", `${this.name}`);
- if(!(await pathExists(artifactPath))) {
+ if (!(await pathExists(artifactPath))) {
result.result = false;
result.missingPaths.push(artifactPath);
}
@@ -64,7 +63,7 @@ export class Contract {
async getBundle() {
const contractArtifactPath = `${this.moduleName}.contract`;
await this.ensureArtifactExists(contractArtifactPath);
- return readJSON(path.resolve(this.artifactsPath, contractArtifactPath), 'utf8');
+ return readJSON(path.resolve(this.artifactsPath, contractArtifactPath), "utf8");
}
async getWasm(): Promise {
diff --git a/src/lib/contractCall.ts b/src/lib/contractCall.ts
index b42c0ae1..dcd7c840 100644
--- a/src/lib/contractCall.ts
+++ b/src/lib/contractCall.ts
@@ -15,7 +15,11 @@ import chalk from "chalk";
import { SwankyCommand } from "./swankyCommand.js";
import { cryptoWaitReady } from "@polkadot/util-crypto/crypto";
import { NetworkError } from "./errors.js";
-import { contractFromRecord, ensureArtifactsExist, ensureDevAccountNotInProduction } from "./checks.js";
+import {
+ contractFromRecord,
+ ensureArtifactsExist,
+ ensureDevAccountNotInProduction,
+} from "./checks.js";
export type JoinedFlagsType = Interfaces.InferredFlags<
(typeof ContractCall)["baseFlags"] & T["flags"]
@@ -43,7 +47,7 @@ export abstract class ContractCall extends SwankyComma
default: "local",
description: "Name of network to connect to",
}),
- }
+ };
protected flags!: JoinedFlagsType;
protected args!: Record;
@@ -61,19 +65,19 @@ export abstract class ContractCall extends SwankyComma
const contractRecord = findContractRecord(this.swankyConfig, args.contractName);
- const contract = (await contractFromRecord(contractRecord));
+ const contract = await contractFromRecord(contractRecord);
await ensureArtifactsExist(contract);
const deploymentData = flags.address
? contract.deployments.find(
- (deployment: DeploymentData) => deployment.address === flags.address,
- )
+ (deployment: DeploymentData) => deployment.address === flags.address
+ )
: contract.deployments[0];
if (!deploymentData?.address)
throw new NetworkError(
- `Cannot find a deployment with address: ${flags.address} in "${configName()}"`,
+ `Cannot find a deployment with address: ${flags.address} in "${configName()}"`
);
this.deploymentInfo = deploymentData;
@@ -93,17 +97,17 @@ export abstract class ContractCall extends SwankyComma
const mnemonic = accountData.isDev
? (accountData.mnemonic as string)
: decrypt(
- accountData.mnemonic as Encrypted,
- (
- await inquirer.prompt([
- {
- type: "password",
- message: `Enter password for ${chalk.yellowBright(accountData.alias)}: `,
- name: "password",
- },
- ])
- ).password,
- );
+ accountData.mnemonic as Encrypted,
+ (
+ await inquirer.prompt([
+ {
+ type: "password",
+ message: `Enter password for ${chalk.yellowBright(accountData.alias)}: `,
+ name: "password",
+ },
+ ])
+ ).password
+ );
const account = (await this.spinner.runCommand(async () => {
await cryptoWaitReady();
diff --git a/src/lib/nodeInfo.ts b/src/lib/nodeInfo.ts
index 59e2f415..9051baa6 100644
--- a/src/lib/nodeInfo.ts
+++ b/src/lib/nodeInfo.ts
@@ -4,120 +4,155 @@ export interface nodeInfo {
supportedInk: string;
downloadUrl: {
darwin: {
- "arm64"?: string;
- "x64"?: string;
+ arm64?: string;
+ x64?: string;
};
linux: {
- "arm64"?: string;
- "x64"?: string;
+ arm64?: string;
+ x64?: string;
};
};
}
export const swankyNodeVersions = new Map([
- ["1.6.0", {
- version: "1.6.0",
- polkadotPalletVersions: "polkadot-v0.9.39",
- supportedInk: "v4.3.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-macOS-universal.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-macOS-universal.tar.gz"
+ [
+ "1.6.0",
+ {
+ version: "1.6.0",
+ polkadotPalletVersions: "polkadot-v0.9.39",
+ supportedInk: "v4.3.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-macOS-universal.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-macOS-universal.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-ubuntu-aarch64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-ubuntu-aarch64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.6.0/swanky-node-v1.6.0-ubuntu-x86_64.tar.gz",
- }
- }
- }],
- ["1.5.0", {
- version: "1.5.0",
- polkadotPalletVersions: "polkadot-v0.9.39",
- supportedInk: "v4.0.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-macOS-universal.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-macOS-universal.tar.gz"
+ },
+ ],
+ [
+ "1.5.0",
+ {
+ version: "1.5.0",
+ polkadotPalletVersions: "polkadot-v0.9.39",
+ supportedInk: "v4.0.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-macOS-universal.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-macOS-universal.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-ubuntu-aarch64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-ubuntu-aarch64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.5.0/swanky-node-v1.5.0-ubuntu-x86_64.tar.gz",
- }
- }
- }],
- ["1.4.0", {
- version: "1.4.0",
- polkadotPalletVersions: "polkadot-v0.9.37",
- supportedInk: "v4.0.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-macOS-universal.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-macOS-universal.tar.gz"
+ },
+ ],
+ [
+ "1.4.0",
+ {
+ version: "1.4.0",
+ polkadotPalletVersions: "polkadot-v0.9.37",
+ supportedInk: "v4.0.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-macOS-universal.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-macOS-universal.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-ubuntu-aarch64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-ubuntu-aarch64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.4.0/swanky-node-v1.4.0-ubuntu-x86_64.tar.gz",
- }
- }
- }],
- ["1.3.0", {
- version: "1.3.0",
- polkadotPalletVersions: "polkadot-v0.9.37",
- supportedInk: "v4.0.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-macOS-universal.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-macOS-universal.tar.gz"
+ },
+ ],
+ [
+ "1.3.0",
+ {
+ version: "1.3.0",
+ polkadotPalletVersions: "polkadot-v0.9.37",
+ supportedInk: "v4.0.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-macOS-universal.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-macOS-universal.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-ubuntu-aarch64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-ubuntu-aarch64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.3.0/swanky-node-v1.3.0-ubuntu-x86_64.tar.gz",
- }
- }
- }],
- ["1.2.0", {
- version: "1.2.0",
- polkadotPalletVersions: "polkadot-v0.9.37",
- supportedInk: "v4.0.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-macOS-universal.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-macOS-universal.tar.gz"
+ },
+ ],
+ [
+ "1.2.0",
+ {
+ version: "1.2.0",
+ polkadotPalletVersions: "polkadot-v0.9.37",
+ supportedInk: "v4.0.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-macOS-universal.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-macOS-universal.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-ubuntu-aarch64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-ubuntu-aarch64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.2.0/swanky-node-v1.2.0-ubuntu-x86_64.tar.gz",
- }
- }
- }],
- ["1.1.0", {
- version: "1.1.0",
- polkadotPalletVersions: "polkadot-v0.9.37",
- supportedInk: "v4.0.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-macOS-x86_64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-macOS-x86_64.tar.gz"
+ },
+ ],
+ [
+ "1.1.0",
+ {
+ version: "1.1.0",
+ polkadotPalletVersions: "polkadot-v0.9.37",
+ supportedInk: "v4.0.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-macOS-x86_64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-macOS-x86_64.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-ubuntu-x86_64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-ubuntu-x86_64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.1.0/swanky-node-v1.1.0-ubuntu-x86_64.tar.gz",
- }
- }
- }],
- ["1.0.0", {
- version: "1.0.0",
- polkadotPalletVersions: "polkadot-v0.9.30",
- supportedInk: "v3.4.0",
- downloadUrl: {
- darwin: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-macOS-x86_64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-macOS-x86_64.tar.gz"
+ },
+ ],
+ [
+ "1.0.0",
+ {
+ version: "1.0.0",
+ polkadotPalletVersions: "polkadot-v0.9.30",
+ supportedInk: "v3.4.0",
+ downloadUrl: {
+ darwin: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-macOS-x86_64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-macOS-x86_64.tar.gz",
+ },
+ linux: {
+ arm64:
+ "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-ubuntu-x86_64.tar.gz",
+ x64: "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-ubuntu-x86_64.tar.gz",
+ },
},
- linux: {
- "arm64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-ubuntu-x86_64.tar.gz",
- "x64": "https://github.com/AstarNetwork/swanky-node/releases/download/v1.0.0/swanky-node-v1.0.0-ubuntu-x86_64.tar.gz",
- }
- }
- }]
+ },
+ ],
]);
diff --git a/src/lib/swankyCommand.ts b/src/lib/swankyCommand.ts
index d3c3ff43..0f7155b9 100644
--- a/src/lib/swankyCommand.ts
+++ b/src/lib/swankyCommand.ts
@@ -1,9 +1,12 @@
import { Command, Flags, Interfaces } from "@oclif/core";
import chalk from "chalk";
-import { buildSwankyConfig,
+import {
+ buildSwankyConfig,
configName,
getSwankyConfig,
- getSystemConfigDirectoryPath, Spinner } from "./index.js";
+ getSystemConfigDirectoryPath,
+ Spinner,
+} from "./index.js";
import { AccountData, SwankyConfig, SwankySystemConfig } from "../types/index.js";
import { writeJSON } from "fs-extra/esm";
import { existsSync, mkdirSync } from "fs";
@@ -144,7 +147,9 @@ export abstract class SwankyCommand extends Command {
);
if (!accountData) {
- throw new ConfigError(`Provided account alias ${chalk.yellowBright(alias)} not found in swanky.config.json`);
+ throw new ConfigError(
+ `Provided account alias ${chalk.yellowBright(alias)} not found in swanky.config.json`
+ );
}
return accountData;
diff --git a/src/lib/tasks.ts b/src/lib/tasks.ts
index 0755b9d8..26b418dd 100644
--- a/src/lib/tasks.ts
+++ b/src/lib/tasks.ts
@@ -6,7 +6,15 @@ import process from "node:process";
import { nodeInfo } from "./nodeInfo.js";
import decompress from "decompress";
import { Spinner } from "./spinner.js";
-import { DependencyName, Relaychain, SupportedArch, SupportedPlatforms, SwankyConfig, TestType, ZombienetConfig } from "../types/index.js";
+import {
+ DependencyName,
+ Relaychain,
+ SupportedArch,
+ SupportedPlatforms,
+ SwankyConfig,
+ TestType,
+ ZombienetConfig,
+} from "../types/index.js";
import { ConfigError, NetworkError, ProcessError } from "./errors.js";
import { BinaryNames } from "./zombienetInfo.js";
import { zombienetConfig } from "../commands/zombienet/init.js";
@@ -71,9 +79,7 @@ export function osCheck() {
const supportedArchs = supportedConfigs[platform as keyof typeof supportedConfigs];
if (!supportedArchs.includes(arch)) {
- throw new ConfigError(
- `Architecture '${arch}' is not supported on platform '${platform}'.`
- );
+ throw new ConfigError(`Architecture '${arch}' is not supported on platform '${platform}'.`);
}
return { platform, arch };
@@ -121,13 +127,13 @@ export async function downloadNode(projectPath: string, nodeInfo: nodeInfo, spin
const platformDlUrls = nodeInfo.downloadUrl[process.platform as SupportedPlatforms];
if (!platformDlUrls)
throw new ConfigError(
- `Could not download swanky-node. Platform ${process.platform} not supported!`,
+ `Could not download swanky-node. Platform ${process.platform} not supported!`
);
const dlUrl = platformDlUrls[process.arch as SupportedArch];
if (!dlUrl)
throw new ConfigError(
- `Could not download swanky-node. Platform ${process.platform} Arch ${process.arch} not supported!`,
+ `Could not download swanky-node. Platform ${process.platform} Arch ${process.arch} not supported!`
);
const dlFileDetails = await new Promise((resolve, reject) => {
@@ -144,7 +150,7 @@ export async function downloadNode(projectPath: string, nodeInfo: nodeInfo, spin
});
dl.start().catch((error: Error) =>
- reject(new Error(`Error downloading node: , ${error.message}`)),
+ reject(new Error(`Error downloading node: , ${error.message}`))
);
});
@@ -165,7 +171,12 @@ export async function downloadNode(projectPath: string, nodeInfo: nodeInfo, spin
return path.resolve(binPath, dlFileDetails.filePath);
}
-export async function downloadZombienetBinaries(binaries: string[], projectPath: string, swankyConfig: SwankyConfig, spinner: Spinner) {
+export async function downloadZombienetBinaries(
+ binaries: string[],
+ projectPath: string,
+ swankyConfig: SwankyConfig,
+ spinner: Spinner
+) {
const binPath = path.resolve(projectPath, "zombienet", "bin");
await ensureDir(binPath);
@@ -182,29 +193,31 @@ export async function downloadZombienetBinaries(binaries: string[], projectPath:
const platformDlUrls = zombienetInfo.downloadUrl[process.platform as SupportedPlatforms];
if (!platformDlUrls)
throw new ConfigError(
- `Could not download ${binaryName}. Platform ${process.platform} not supported!`,
+ `Could not download ${binaryName}. Platform ${process.platform} not supported!`
);
let dlUrl = platformDlUrls[process.arch as SupportedArch];
if (!dlUrl)
throw new ConfigError(
- `Could not download ${binaryName}. Platform ${process.platform} Arch ${process.arch} not supported!`,
+ `Could not download ${binaryName}. Platform ${process.platform} Arch ${process.arch} not supported!`
);
dlUrl = dlUrl.replace("${version}", version);
dlUrls.set(binaryName, dlUrl);
}
- for (const binaryName of Object.keys(zombienetInfo.binaries).filter((binaryName) => binaries.includes(binaryName))) {
+ for (const binaryName of Object.keys(zombienetInfo.binaries).filter((binaryName) =>
+ binaries.includes(binaryName)
+ )) {
const binaryInfo = zombienetInfo.binaries[binaryName as BinaryNames];
const version = binaryInfo.version;
const platformDlUrls = binaryInfo.downloadUrl[process.platform as SupportedPlatforms];
if (!platformDlUrls)
throw new ConfigError(
- `Could not download ${binaryName}. Platform ${process.platform} not supported!`,
+ `Could not download ${binaryName}. Platform ${process.platform} not supported!`
);
let dlUrl = platformDlUrls[process.arch as SupportedArch];
if (!dlUrl)
throw new ConfigError(
- `Could not download ${binaryName}. Platform ${process.platform} Arch ${process.arch} not supported!`,
+ `Could not download ${binaryName}. Platform ${process.platform} Arch ${process.arch} not supported!`
);
dlUrl = dlUrl.replace(/\$\{version}/gi, version);
dlUrls.set(binaryName, dlUrl);
@@ -225,7 +238,7 @@ export async function downloadZombienetBinaries(binaries: string[], projectPath:
});
dl.start().catch((error: Error) =>
- reject(new Error(`Error downloading ${binaryName}: , ${error.message}`)),
+ reject(new Error(`Error downloading ${binaryName}: , ${error.message}`))
);
});
@@ -249,7 +262,11 @@ export async function downloadZombienetBinaries(binaries: string[], projectPath:
}
}
-export async function buildZombienetConfigFromBinaries(binaries: string[], templatePath: string, configPath: string) {
+export async function buildZombienetConfigFromBinaries(
+ binaries: string[],
+ templatePath: string,
+ configPath: string
+) {
await ensureDir(configPath);
const configBuilder = {
settings: {
@@ -264,7 +281,9 @@ export async function buildZombienetConfigFromBinaries(binaries: string[], templ
} as ZombienetConfig;
for (const binaryName of binaries) {
- const template = TOML.parse(readFileSync(path.resolve(templatePath, binaryName + ".toml"), "utf8"));
+ const template = TOML.parse(
+ readFileSync(path.resolve(templatePath, binaryName + ".toml"), "utf8")
+ );
if (template.parachains !== undefined) {
(template.parachains as any).forEach((parachain: any) => {
configBuilder.parachains.push(parachain);
@@ -279,7 +298,6 @@ export async function buildZombienetConfigFromBinaries(binaries: string[], templ
if (template.relaychain !== undefined) {
configBuilder.relaychain = template.relaychain as unknown as Relaychain;
}
-
}
writeFileSync(path.resolve(configPath, zombienetConfig), TOML.stringify(configBuilder as any));
diff --git a/src/lib/templates.ts b/src/lib/templates.ts
index d0479e66..7820fa48 100644
--- a/src/lib/templates.ts
+++ b/src/lib/templates.ts
@@ -35,11 +35,11 @@ export function getTemplates() {
export async function copyContractTemplateFiles(
contractTemplatePath: string,
contractName: string,
- projectPath: string,
+ projectPath: string
) {
await copy(
path.resolve(contractTemplatePath, "contract"),
- path.resolve(projectPath, "contracts", contractName),
+ path.resolve(projectPath, "contracts", contractName)
);
}
@@ -47,7 +47,7 @@ export async function copyZombienetTemplateFile(templatePath: string, configPath
await ensureDir(configPath);
await copy(
path.resolve(templatePath, zombienetConfig),
- path.resolve(configPath, zombienetConfig),
+ path.resolve(configPath, zombienetConfig)
);
}
@@ -55,7 +55,7 @@ export async function copyChopsticksTemplateFile(templatePath: string, configPat
await ensureDir(configPath);
await copy(
path.resolve(templatePath, chopsticksConfig),
- path.resolve(configPath, chopsticksConfig),
+ path.resolve(configPath, chopsticksConfig)
);
}
@@ -65,12 +65,12 @@ export async function copyCommonTemplateFiles(templatesPath: string, projectPath
await Promise.all(
commonFiles.map(async (file) => {
await copy(path.resolve(templatesPath, file), path.resolve(projectPath, file));
- }),
+ })
);
await rename(path.resolve(projectPath, "gitignore"), path.resolve(projectPath, ".gitignore"));
await rename(
path.resolve(projectPath, "mocharc.json"),
- path.resolve(projectPath, ".mocharc.json"),
+ path.resolve(projectPath, ".mocharc.json")
);
await copy(path.resolve(templatesPath, "github"), path.resolve(projectPath, ".github"));
}
@@ -87,4 +87,4 @@ export async function processTemplates(projectPath: string, templateData: Record
await rm(tplFilePath);
await writeFile(tplFilePath.split(".hbs")[0], compiledFile);
}
-}
\ No newline at end of file
+}
diff --git a/src/lib/zombienetInfo.ts b/src/lib/zombienetInfo.ts
index 3b6b0faf..add21553 100644
--- a/src/lib/zombienetInfo.ts
+++ b/src/lib/zombienetInfo.ts
@@ -6,21 +6,23 @@ export const zombienet = {
version: "1.3.89",
downloadUrl: {
darwin: {
- "arm64": "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-macos",
- "x64": "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-macos",
+ arm64:
+ "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-macos",
+ x64: "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-macos",
},
linux: {
- "arm64": "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-linux-arm64",
- "x64": "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-linux-x64",
+ arm64:
+ "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-linux-arm64",
+ x64: "https://github.com/paritytech/zombienet/releases/download/v${version}/zombienet-linux-x64",
},
},
binaries: {
- "polkadot": {
+ polkadot: {
version: "0.9.43",
downloadUrl: {
linux: {
- "arm64": "https://github.com/paritytech/polkadot/releases/download/v${version}/polkadot",
- "x64": "https://github.com/paritytech/polkadot/releases/download/v${version}/polkadot",
+ arm64: "https://github.com/paritytech/polkadot/releases/download/v${version}/polkadot",
+ x64: "https://github.com/paritytech/polkadot/releases/download/v${version}/polkadot",
},
},
},
@@ -28,8 +30,9 @@ export const zombienet = {
version: "0.9.430",
downloadUrl: {
linux: {
- "arm64": "https://github.com/paritytech/cumulus/releases/download/v${version}/polkadot-parachain",
- "x64": "https://github.com/paritytech/cumulus/releases/download/v${version}/polkadot-parachain",
+ arm64:
+ "https://github.com/paritytech/cumulus/releases/download/v${version}/polkadot-parachain",
+ x64: "https://github.com/paritytech/cumulus/releases/download/v${version}/polkadot-parachain",
},
},
},
@@ -37,12 +40,14 @@ export const zombienet = {
version: "5.28.0",
downloadUrl: {
darwin: {
- "arm64": "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-macOS-x86_64.tar.gz",
- "x64": "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-macOS-x86_64.tar.gz",
+ arm64:
+ "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-macOS-x86_64.tar.gz",
+ x64: "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-macOS-x86_64.tar.gz",
},
linux: {
- "arm64": "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-ubuntu-aarch64.tar.gz",
- "x64": "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-ubuntu-x86_64.tar.gz",
+ arm64:
+ "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-ubuntu-aarch64.tar.gz",
+ x64: "https://github.com/AstarNetwork/Astar/releases/download/v${version}/astar-collator-v${version}-ubuntu-x86_64.tar.gz",
},
},
},
diff --git a/src/types/index.ts b/src/types/index.ts
index b5e27a42..a8266944 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -12,7 +12,10 @@ export interface ChainProperty {
export type ExtrinsicPayload = SubmittableExtrinsic<"promise">;
-export interface Encrypted { iv: string; data: string }
+export interface Encrypted {
+ iv: string;
+ data: string;
+}
export interface AccountData {
isDev: boolean;
@@ -44,15 +47,15 @@ export interface DeploymentData {
export interface DownloadUrl {
darwin: {
- "arm64": string,
- "x64": string
- },
+ arm64: string;
+ x64: string;
+ };
linux: {
- "arm64": string,
- "x64": string
- }
+ arm64: string;
+ x64: string;
+ };
}
-export interface SwankyConfig extends SwankySystemConfig{
+export interface SwankyConfig extends SwankySystemConfig {
node: {
polkadotPalletVersions: string;
localPath: string;
@@ -70,7 +73,7 @@ export interface SwankyConfig extends SwankySystemConfig{
export interface SwankySystemConfig {
defaultAccount: string | null;
accounts: AccountData[];
- networks: Record;
+ networks: Record;
}
export interface ZombienetData {
@@ -80,37 +83,37 @@ export interface ZombienetData {
}
export interface ZombienetConfig {
- settings: { timeout: number },
- relaychain: Relaychain,
- parachains: Parachain[],
- hrmp_channels?: HrmpChannel[],
+ settings: { timeout: number };
+ relaychain: Relaychain;
+ parachains: Parachain[];
+ hrmp_channels?: HrmpChannel[];
}
export interface Relaychain {
- default_command: string,
- chain: string,
- nodes: Node[]
+ default_command: string;
+ chain: string;
+ nodes: Node[];
}
export interface Node {
- name: string,
+ name: string;
}
export interface HrmpChannel {
- sender: number,
- recipient: number,
- max_capacity: number,
- max_message_size: number
+ sender: number;
+ recipient: number;
+ max_capacity: number;
+ max_message_size: number;
}
export interface Parachain {
- id: number,
- chain: string,
- cumulus_based: boolean,
- collator: Collator
+ id: number;
+ chain: string;
+ cumulus_based: boolean;
+ collator: Collator;
}
export interface Collator {
- name: string,
- command: string,
- rpc_port: number,
- args: string[],
+ name: string;
+ command: string;
+ rpc_port: number;
+ args: string[];
}
export enum BuildMode {