chain-audit-cli
Version:
A command-line tool for auditing smart contracts using AI-powered analysis. Provides comprehensive security reports, vulnerability detection, and code quality assessments for Solidity contracts.
57 lines (46 loc) • 1.49 kB
JavaScript
const { Command } = require("commander");
const inquirer = require("inquirer");
const { analyzeContract } = require("./src/ai-prompt");
const fs = require("fs");
const path = require("path");
require("dotenv").config();
const program = new Command();
program
.name("chain-audit-cli")
.description("A CLI tool to audit smart contracts using OpenAI")
.version("1.0.0");
const getApiKey = async () => {
const { apiKey } = await inquirer.prompt([
{
type: "input",
name: "apiKey",
message: "Enter your OpenAI API key:",
validate: (input) => input.length > 0 || "API key is required",
},
]);
return apiKey;
};
program
.command("check <file>")
.description("Analyze a smart contract")
.action(async (file) => {
try {
const apiKey = await getApiKey();
const contractPath = path.resolve(process.cwd(), file);
console.log(`Checking file at path: ${contractPath}`);
if (!fs.existsSync(contractPath)) {
console.error(`File not found: ${contractPath}`);
process.exit(1);
}
if (fs.statSync(contractPath).isDirectory()) {
console.error(`Path is a directory, not a file: ${contractPath}`);
process.exit(1);
}
const contract = fs.readFileSync(contractPath, "utf8");
await analyzeContract(contract, apiKey);
} catch (error) {
console.error("Error during analysis:", error.message);
}
});
program.parse(process.argv);