Skip to content

Commit

Permalink
Fixed: Fix bugs in the functions and variables
Browse files Browse the repository at this point in the history
  • Loading branch information
Juminstock committed Feb 25, 2024
1 parent af9f441 commit f28c2ed
Showing 1 changed file with 36 additions and 47 deletions.
83 changes: 36 additions & 47 deletions src/commands/clear/index.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
import { SwankyCommand } from "../../lib/swankyCommand.js";
import { ConfigError, FileError } from "../../lib/errors.js";
import fs from "fs-extra"
import path from "node:path"
import fs from "fs-extra";
import path from "node:path";
import { Args, Flags } from "@oclif/core";

type Folder = {name: string, contractName?: string, path: string}
interface Folder {
name: string,
contractName?: string,
path: string
}

export default class Clear extends SwankyCommand<typeof Clear> {

static flags = {
all: Flags.boolean({
char: "a",
description: "Select all the project artifacts for delete"
description: "Select all the project artifacts for delete",
}),
};

Expand All @@ -26,57 +30,42 @@ export default class Clear extends SwankyCommand<typeof Clear> {
async deleteFolder(path: string): Promise<void> {
try {
await fs.remove(path);
} catch (err) {
throw new FileError(
`Error deleting the folder ${path}.`, {cause: err}
);
this.log(`Successfully deleted ${path}`);
} catch (err: any) {
if (err.code === "ENOENT") {
this.log(`Folder ${path} does not exist, skipping.`);
} else {
throw new FileError(`Error deleting the folder ${path}.`, { cause: err });
}
}
}
}

public async run(): Promise<any> {

const { flags, args } = await this.parse(Clear);

if(args.contractName === undefined && !flags.all) throw new ConfigError("You need to send any flag or argument.")
if (args.contractName === undefined && !flags.all) {
throw new ConfigError("Specify a contract name or use the --all flag to delete all artifacts.");
}

const workDirectory = process.cwd();
let foldersToDelete: Folder[] = []

if(flags.all) {

foldersToDelete.push({
name: "Artifacts",
path: path.join(workDirectory, './artifacts')
}, {
name: "Target",
path: path.join(workDirectory, './target')
})

for await (const folder of foldersToDelete) {
let resultSpinner = await this.spinner.runCommand( async () => this.deleteFolder(folder.path),
`Deleting the ${folder.name} folder`
)
}
} else if (args.contractName) {

foldersToDelete.push({
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 await (const folder of foldersToDelete) {
let resultSpinner = await this.spinner.runCommand( async () => this.deleteFolder(folder.path),
`Deleting the ${folder.name} folder`
)
}
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) },
{ 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),
`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}`
);
}
}
}

0 comments on commit f28c2ed

Please sign in to comment.