chore: download contracts to tmp dir
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing

This commit is contained in:
William Luke 2022-03-01 17:06:01 +03:00
parent 525aab8c77
commit 9ae198f0f6
2 changed files with 18 additions and 9 deletions

View File

@ -56,6 +56,7 @@ def execute(config: Config, eargs: ExtraArgs):
skip_gen = eargs.skip_gen skip_gen = eargs.skip_gen
skip_deploy = eargs.skip_deploy skip_deploy = eargs.skip_deploy
wallet_keystore = eargs.y wallet_keystore = eargs.y
if wallet_keystore:
config.add(wallet_keystore, "WALLET_KEY_FILE", exists_ok=True) config.add(wallet_keystore, "WALLET_KEY_FILE", exists_ok=True)
if not skip_gen: if not skip_gen:

View File

@ -5,6 +5,8 @@ import sys
import json import json
import requests import requests
import importlib import importlib
import tempfile
import hashlib
# local imports # local imports
from cic.writers import OutputWriter from cic.writers import OutputWriter
@ -21,17 +23,24 @@ CONTRACTS = [
"url": "https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/master/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap", "url": "https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/master/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap",
"name": "Demurrage Token Single No Cap", "name": "Demurrage Token Single No Cap",
}, },
{
"url":"https://gitlab.com/cicnet/erc20-demurrage-token/-/raw/lash/gas-safety-valve/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap",
"name": "Demurrage Token Single No Cap (gas-safety-valve)",
}
] ]
# Download File from Url # Download File from Url
def download_file(url: str, directory: str, filename=None) -> (str, bytes): def download_file(url: str, filename=None) -> (str, bytes):
os.makedirs(directory, exist_ok=True) directory = tempfile.gettempdir()
filename = filename if filename else url.split("/")[-1] filename = filename if filename else url.split("/")[-1]
path = os.path.join(directory, filename) hash_object = hashlib.md5(url.encode())
path = os.path.join(directory, hash_object.hexdigest())
log.debug(f"Downloading {filename} to {path}")
if not os.path.exists(path): if not os.path.exists(path):
log.debug(f"Downloading {filename}") log.debug(f"Downloading {filename}")
r = requests.get(url, allow_redirects=True) r = requests.get(url, allow_redirects=True)
open(path, "wb").write(r.content) with open(path, "wb") as f:
f.write(r.content)
return path return path
return path return path
@ -50,15 +59,14 @@ def select_contract():
val = input("Select contract (C,0,1..): ") val = input("Select contract (C,0,1..): ")
if val.isdigit() and int(val) < len(CONTRACTS): if val.isdigit() and int(val) < len(CONTRACTS):
contract = CONTRACTS[int(val)] contract = CONTRACTS[int(val)]
directory = f"./contracts/{contract['name']}" bin_path = os.path.abspath(download_file(contract["url"] + ".bin"))
bin_path = os.path.abspath(download_file(contract["url"] + ".bin", directory)) json_path = download_file(contract["url"] + ".json")
json_path = download_file(contract["url"] + ".json", directory)
elif val == "C": elif val == "C":
possible_bin_location = input("Enter a path or url to a contract.bin: ") possible_bin_location = input("Enter a path or url to a contract.bin: ")
if possible_bin_location.startswith('http'): if possible_bin_location.startswith('http'):
# possible_bin_location is url # possible_bin_location is url
bin_path = download_file(possible_bin_location, directory) bin_path = download_file(possible_bin_location)
else: else:
# possible_bin_location is path # possible_bin_location is path
if os.path.exists(possible_bin_location): if os.path.exists(possible_bin_location):