Skip to content
Snippets Groups Projects
Select Git revision
  • 51d73838c824713a32bdd11b0c85cff3b34f113c
  • main default protected
  • godot4
3 results

BeatSphere.tscn

Blame
  • Forked from IVMI / Ivmi-Builder
    Source project has a limited visibility.
    deploy.ts 2.49 KiB
    import { InMemorySigner } from "@taquito/signer";
    import { TezosToolkit } from "@taquito/taquito";
    import chalk from "chalk";
    import { Spinner } from "cli-spinner";
    import dotenv from "dotenv";
    import multisig from "../compiled/Multisig.json";
    
    dotenv.config();
    
    const rpcUrl = process.env.RPC_URL;
    const pk = process.env.PK;
    
    const missingEnvVarLog = (name: string) =>
      console.log(
        chalk.redBright`Missing ` +
          chalk.red.bold.underline(name) +
          chalk.redBright` env var. Please add it in ` +
          chalk.red.bold.underline(`deploy/.env`)
      );
    
    const makeSpinnerOperation = async <T>(
      operation: Promise<T>,
      {
        loadingMessage,
        endMessage,
      }: {
        loadingMessage: string;
        endMessage: string;
      }
    ): Promise<T> => {
      const spinner = new Spinner(loadingMessage);
      spinner.start();
      const result = await operation;
      spinner.stop();
      console.log("");
      console.log(endMessage);
    
      return result;
    };
    
    if (!pk && !rpcUrl) {
      console.log(
        chalk.redBright`Couldn't find env variables. Have you renamed ` +
          chalk.red.bold.underline`deploy/.env.dist` +
          chalk.redBright` to ` +
          chalk.red.bold.underline(`deploy/.env`)
      );
    
      process.exit(-1);
    }
    
    if (!pk) {
      missingEnvVarLog("PK");
      process.exit(-1);
    }
    
    if (!rpcUrl) {
      missingEnvVarLog("RPC_URL");
      process.exit(-1);
    }
    
    const Tezos = new TezosToolkit(rpcUrl);
    const signer = new InMemorySigner(pk);
    Tezos.setProvider({ signer: signer });
    
    async function deploy() {
      const storage = {
        name: "DAO",
        description: "Dao description",
        token_address: "KT1LnPY3excYVUTLBuCfBbf1hLeGJTLhXNSz",
        admin_address: "tz1fd4mdbyg2VnB29pMnt4PwkQWoPzxoWzAk",
        proposal_map: {},
      };
    
      try {
        const origination = await makeSpinnerOperation(
          Tezos.contract.originate({
            code: multisig,
            storage: storage,
          }),
          {
            loadingMessage: chalk.yellowBright`Deploying contract`,
            endMessage: chalk.green`Contract deployed!`,
          }
        );
    
        await makeSpinnerOperation(origination.contract(), {
          loadingMessage:
            chalk.yellowBright`Waiting for contract to be confirmed at: ` +
            chalk.yellow.bold(origination.contractAddress),
          endMessage: chalk.green`Contract confirmed!`,
        });
    
        console.log(
          chalk.green`\nContract address: \n- ` +
            chalk.green.underline`${origination.contractAddress}`
        );
      } catch (error: any) {
        console.log("");
        console.log(chalk.redBright`Error during deployment:`);
        console.log(error);
    
        process.exit(1);
      }
    }
    
    deploy();