cli: Remove redundant Solidity code (#2778)
This commit is contained in:
parent
bcd7e1719e
commit
dbb36d211c
|
@ -1,9 +1,6 @@
|
|||
use crate::VERSION;
|
||||
use crate::{config::ProgramWorkspace, create_files};
|
||||
use anchor_syn::idl::types::Idl;
|
||||
use crate::create_files;
|
||||
use anyhow::Result;
|
||||
use heck::{ToLowerCamelCase, ToSnakeCase, ToUpperCamelCase};
|
||||
use std::fmt::Write;
|
||||
use heck::{ToSnakeCase, ToUpperCamelCase};
|
||||
use std::path::Path;
|
||||
|
||||
/// Create a solidity program.
|
||||
|
@ -15,110 +12,7 @@ pub fn create_program(name: &str) -> Result<()> {
|
|||
create_files(&files)
|
||||
}
|
||||
|
||||
pub fn idl_ts(idl: &Idl) -> Result<String> {
|
||||
let mut idl = idl.clone();
|
||||
for acc in idl.accounts.iter_mut() {
|
||||
acc.name = acc.name.to_lower_camel_case();
|
||||
}
|
||||
let idl_json = serde_json::to_string_pretty(&idl)?;
|
||||
Ok(format!(
|
||||
r#"export type {} = {};
|
||||
|
||||
export const IDL: {} = {};
|
||||
"#,
|
||||
idl.name.to_upper_camel_case(),
|
||||
idl_json,
|
||||
idl.name.to_upper_camel_case(),
|
||||
idl_json
|
||||
))
|
||||
}
|
||||
|
||||
pub fn deploy_js_script_host(cluster_url: &str, script_path: &str) -> String {
|
||||
format!(
|
||||
r#"
|
||||
const anchor = require('@coral-xyz/anchor');
|
||||
|
||||
// Deploy script defined by the user.
|
||||
const userScript = require("{script_path}");
|
||||
|
||||
async function main() {{
|
||||
const url = "{cluster_url}";
|
||||
const preflightCommitment = 'recent';
|
||||
const connection = new anchor.web3.Connection(url, preflightCommitment);
|
||||
const wallet = anchor.Wallet.local();
|
||||
|
||||
const provider = new anchor.AnchorProvider(connection, wallet, {{
|
||||
preflightCommitment,
|
||||
commitment: 'recent',
|
||||
}});
|
||||
|
||||
// Run the user's deploy script.
|
||||
userScript(provider);
|
||||
}}
|
||||
main();
|
||||
"#
|
||||
)
|
||||
}
|
||||
|
||||
pub fn deploy_ts_script_host(cluster_url: &str, script_path: &str) -> String {
|
||||
format!(
|
||||
r#"import * as anchor from '@coral-xyz/anchor';
|
||||
|
||||
// Deploy script defined by the user.
|
||||
const userScript = require("{script_path}");
|
||||
|
||||
async function main() {{
|
||||
const url = "{cluster_url}";
|
||||
const preflightCommitment = 'recent';
|
||||
const connection = new anchor.web3.Connection(url, preflightCommitment);
|
||||
const wallet = anchor.Wallet.local();
|
||||
|
||||
const provider = new anchor.AnchorProvider(connection, wallet, {{
|
||||
preflightCommitment,
|
||||
commitment: 'recent',
|
||||
}});
|
||||
|
||||
// Run the user's deploy script.
|
||||
userScript(provider);
|
||||
}}
|
||||
main();
|
||||
"#
|
||||
)
|
||||
}
|
||||
|
||||
pub fn deploy_script() -> &'static str {
|
||||
r#"// Migrations are an early feature. Currently, they're nothing more than this
|
||||
// single deploy script that's invoked from the CLI, injecting a provider
|
||||
// configured from the workspace's Anchor.toml.
|
||||
|
||||
const anchor = require("@coral-xyz/anchor");
|
||||
|
||||
module.exports = async function (provider) {
|
||||
// Configure client to use the provider.
|
||||
anchor.setProvider(provider);
|
||||
|
||||
// Add your deploy script here.
|
||||
};
|
||||
"#
|
||||
}
|
||||
|
||||
pub fn ts_deploy_script() -> &'static str {
|
||||
r#"// Migrations are an early feature. Currently, they're nothing more than this
|
||||
// single deploy script that's invoked from the CLI, injecting a provider
|
||||
// configured from the workspace's Anchor.toml.
|
||||
|
||||
const anchor = require("@coral-xyz/anchor");
|
||||
|
||||
module.exports = async function (provider) {
|
||||
// Configure client to use the provider.
|
||||
anchor.setProvider(provider);
|
||||
|
||||
// Add your deploy script here.
|
||||
};
|
||||
"#
|
||||
}
|
||||
|
||||
pub fn solidity(name: &str) -> String {
|
||||
fn solidity(name: &str) -> String {
|
||||
format!(
|
||||
r#"
|
||||
contract {} {{
|
||||
|
@ -214,93 +108,6 @@ describe("{}", () => {{
|
|||
)
|
||||
}
|
||||
|
||||
pub fn package_json(jest: bool) -> String {
|
||||
if jest {
|
||||
format!(
|
||||
r#"{{
|
||||
"scripts": {{
|
||||
"lint:fix": "prettier */*.js \"*/**/*{{.js,.ts}}\" -w",
|
||||
"lint": "prettier */*.js \"*/**/*{{.js,.ts}}\" --check"
|
||||
}},
|
||||
"dependencies": {{
|
||||
"@coral-xyz/anchor": "^{VERSION}"
|
||||
}},
|
||||
"devDependencies": {{
|
||||
"jest": "^29.0.3",
|
||||
"prettier": "^2.6.2"
|
||||
}}
|
||||
}}
|
||||
"#
|
||||
)
|
||||
} else {
|
||||
format!(
|
||||
r#"{{
|
||||
"scripts": {{
|
||||
"lint:fix": "prettier */*.js \"*/**/*{{.js,.ts}}\" -w",
|
||||
"lint": "prettier */*.js \"*/**/*{{.js,.ts}}\" --check"
|
||||
}},
|
||||
"dependencies": {{
|
||||
"@coral-xyz/anchor": "^{VERSION}"
|
||||
}},
|
||||
"devDependencies": {{
|
||||
"chai": "^4.3.4",
|
||||
"mocha": "^9.0.3",
|
||||
"prettier": "^2.6.2"
|
||||
}}
|
||||
}}
|
||||
"#
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ts_package_json(jest: bool) -> String {
|
||||
if jest {
|
||||
format!(
|
||||
r#"{{
|
||||
"scripts": {{
|
||||
"lint:fix": "prettier */*.js \"*/**/*{{.js,.ts}}\" -w",
|
||||
"lint": "prettier */*.js \"*/**/*{{.js,.ts}}\" --check"
|
||||
}},
|
||||
"dependencies": {{
|
||||
"@coral-xyz/anchor": "^{VERSION}"
|
||||
}},
|
||||
"devDependencies": {{
|
||||
"@types/bn.js": "^5.1.0",
|
||||
"@types/jest": "^29.0.3",
|
||||
"jest": "^29.0.3",
|
||||
"prettier": "^2.6.2",
|
||||
"ts-jest": "^29.0.2",
|
||||
"typescript": "^4.3.5"
|
||||
}}
|
||||
}}
|
||||
"#
|
||||
)
|
||||
} else {
|
||||
format!(
|
||||
r#"{{
|
||||
"scripts": {{
|
||||
"lint:fix": "prettier */*.js \"*/**/*{{.js,.ts}}\" -w",
|
||||
"lint": "prettier */*.js \"*/**/*{{.js,.ts}}\" --check"
|
||||
}},
|
||||
"dependencies": {{
|
||||
"@coral-xyz/anchor": "^{VERSION}"
|
||||
}},
|
||||
"devDependencies": {{
|
||||
"chai": "^4.3.4",
|
||||
"mocha": "^9.0.3",
|
||||
"ts-mocha": "^10.0.0",
|
||||
"@types/bn.js": "^5.1.0",
|
||||
"@types/chai": "^4.3.0",
|
||||
"@types/mocha": "^9.0.0",
|
||||
"typescript": "^4.3.5",
|
||||
"prettier": "^2.6.2"
|
||||
}}
|
||||
}}
|
||||
"#
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ts_mocha(name: &str) -> String {
|
||||
format!(
|
||||
r#"import * as anchor from "@coral-xyz/anchor";
|
||||
|
@ -352,139 +159,3 @@ describe("{}", () => {{
|
|||
name.to_upper_camel_case(),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn ts_jest(name: &str) -> String {
|
||||
format!(
|
||||
r#"import * as anchor from "@coral-xyz/anchor";
|
||||
import {{ Program }} from "@coral-xyz/anchor";
|
||||
import {{ {} }} from "../target/types/{}";
|
||||
|
||||
describe("{}", () => {{
|
||||
// Configure the client to use the local cluster.
|
||||
const provider = anchor.AnchorProvider.env();
|
||||
anchor.setProvider(provider);
|
||||
|
||||
const dataAccount = anchor.web3.Keypair.generate();
|
||||
const wallet = provider.wallet;
|
||||
|
||||
const program = anchor.workspace.{} as Program<{}>;
|
||||
|
||||
it("Is initialized!", async () => {{
|
||||
// Add your test here.
|
||||
const tx = await program.methods
|
||||
.new()
|
||||
.accounts({{ dataAccount: dataAccount.publicKey }})
|
||||
.signers([dataAccount])
|
||||
.rpc();
|
||||
console.log("Your transaction signature", tx);
|
||||
}});
|
||||
}});
|
||||
"#,
|
||||
name.to_upper_camel_case(),
|
||||
name.to_snake_case(),
|
||||
name,
|
||||
name.to_upper_camel_case(),
|
||||
name.to_upper_camel_case(),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn ts_config(jest: bool) -> &'static str {
|
||||
if jest {
|
||||
r#"{
|
||||
"compilerOptions": {
|
||||
"types": ["jest"],
|
||||
"typeRoots": ["./node_modules/@types"],
|
||||
"lib": ["es2015"],
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"esModuleInterop": true
|
||||
}
|
||||
}
|
||||
"#
|
||||
} else {
|
||||
r#"{
|
||||
"compilerOptions": {
|
||||
"types": ["mocha", "chai"],
|
||||
"typeRoots": ["./node_modules/@types"],
|
||||
"lib": ["es2015"],
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"esModuleInterop": true
|
||||
}
|
||||
}
|
||||
"#
|
||||
}
|
||||
}
|
||||
|
||||
pub fn git_ignore() -> &'static str {
|
||||
r#"
|
||||
.anchor
|
||||
.DS_Store
|
||||
target
|
||||
**/*.rs.bk
|
||||
node_modules
|
||||
test-ledger
|
||||
"#
|
||||
}
|
||||
|
||||
pub fn prettier_ignore() -> &'static str {
|
||||
r#"
|
||||
.anchor
|
||||
.DS_Store
|
||||
target
|
||||
node_modules
|
||||
dist
|
||||
build
|
||||
test-ledger
|
||||
"#
|
||||
}
|
||||
|
||||
pub fn node_shell(
|
||||
cluster_url: &str,
|
||||
wallet_path: &str,
|
||||
programs: Vec<ProgramWorkspace>,
|
||||
) -> Result<String> {
|
||||
let mut eval_string = format!(
|
||||
r#"
|
||||
const anchor = require('@coral-xyz/anchor');
|
||||
const web3 = anchor.web3;
|
||||
const PublicKey = anchor.web3.PublicKey;
|
||||
const Keypair = anchor.web3.Keypair;
|
||||
|
||||
const __wallet = new anchor.Wallet(
|
||||
Keypair.fromSecretKey(
|
||||
Buffer.from(
|
||||
JSON.parse(
|
||||
require('fs').readFileSync(
|
||||
"{wallet_path}",
|
||||
{{
|
||||
encoding: "utf-8",
|
||||
}},
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
const __connection = new web3.Connection("{cluster_url}", "processed");
|
||||
const provider = new anchor.AnchorProvider(__connection, __wallet, {{
|
||||
commitment: "processed",
|
||||
preflightcommitment: "processed",
|
||||
}});
|
||||
anchor.setProvider(provider);
|
||||
"#
|
||||
);
|
||||
|
||||
for program in programs {
|
||||
write!(
|
||||
&mut eval_string,
|
||||
r#"
|
||||
anchor.workspace.{} = new anchor.Program({}, new PublicKey("{}"), provider);
|
||||
"#,
|
||||
program.name.to_upper_camel_case(),
|
||||
serde_json::to_string(&program.idl)?,
|
||||
program.program_id
|
||||
)?;
|
||||
}
|
||||
|
||||
Ok(eval_string)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue