From 8370d4318fe1df7d57572eb01b075127dd4c6e67 Mon Sep 17 00:00:00 2001 From: emizzle Date: Mon, 16 Mar 2020 18:27:10 +1100 Subject: [PATCH] feat: allow case-insensitive `verify status` command, without being logged in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The MythX portal displays UUIDs in uppercase and therfore can’t be copy/pasted to the `verify status ` command. This PR allows for case-insensitive entry of the UUID in to the `verify status ` command. Additionally, running `verify status ` without first running a verify command would fail due to not being logged in. This PR logs in when the `verify status ` command is run, so this command can be run *before* `verify`. --- mythx.js | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/mythx.js b/mythx.js index 9b597fc..f6c4b0c 100644 --- a/mythx.js +++ b/mythx.js @@ -9,6 +9,18 @@ const { MythXIssues, doReport } = require('./lib/issues2eslint'); const defaultConcurrentAnalyses = 4 +function checkEnvVariables(embark) { + if (process.env.MYTHX_ETH_ADDRESS) { + process.env.MYTHX_USERNAME = process.env.MYTHX_ETH_ADDRESS; + embark.logger.warn("The environment variable MYTHX_ETH_ADDRESS has been deprecated in favour of MYTHX_USERNAME and will be removed in future versions. Please update your .env file or your environment variables accordingly."); + } + + // Connect to MythX via armlet + if (!process.env.MYTHX_USERNAME || !process.env.MYTHX_PASSWORD) { + throw new Error("Environment variables 'MYTHX_USERNAME' and 'MYTHX_PASSWORD' not found. Place these in a .env file in the root of your ÐApp, add them in the CLI command, ie 'MYTHX_USERNAME=xyz MYTHX_PASSWORD=123 embark run', or add them to your system's environment variables."); + } +} + async function analyse(contracts, cfg, embark) { cfg.logger = embark.logger @@ -25,15 +37,7 @@ async function analyse(contracts, cfg, embark) { return 1 } - if (process.env.MYTHX_ETH_ADDRESS) { - process.env.MYTHX_USERNAME = process.env.MYTHX_ETH_ADDRESS; - embark.logger.warn("The environment variable MYTHX_ETH_ADDRESS in favour of MYTHX_USERNAME and will be removed in future versions. Please update your .env file or your environment variables accordingly."); - } - - // Connect to MythX via armlet - if(!process.env.MYTHX_USERNAME || !process.env.MYTHX_PASSWORD) { - throw new Error("Environment variables 'MYTHX_USERNAME' and 'MYTHX_PASSWORD' not found. Place these in a .env file in the root of your ÐApp, add them in the CLI command, ie 'MYTHX_USERNAME=xyz MYTHX_PASSWORD=123 embark run', or add them to your system's environment variables."); - } + checkEnvVariables(embark); const armletClient = new armlet.Client( { @@ -83,16 +87,20 @@ async function analyse(contracts, cfg, embark) { async function getStatus(uuid, embark) { + checkEnvVariables(embark); + // Connect to MythX via armlet const armletClient = new armlet.Client( - { - clientToolName: "embark-mythx", - password: process.env.MYTHX_PASSWORD, - ethAddress: process.env.MYTHX_USERNAME, - }) + { + clientToolName: "embark-mythx", + password: process.env.MYTHX_PASSWORD, + ethAddress: process.env.MYTHX_USERNAME, + }); + + await armletClient.login(); try { - const results = await armletClient.getIssues(uuid); + const results = await armletClient.getIssues(uuid.toLowerCase()); return ghettoReport(embark.logger, results); } catch (err) { embark.logger.warn(err);