Skip to content

Commit bf2e978

Browse files
Merge pull request #52 from ElrondNetwork/development
Version 1.0.20
2 parents 5c182ec + 775f614 commit bf2e978

22 files changed

Lines changed: 265 additions & 60 deletions

erdpy-up.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def run_in_venv(args):
182182
del os.environ["PYTHONHOME"]
183183

184184
process = subprocess.Popen(args, env={
185-
"PATH": os.path.join(get_erdpy_path(), "bin"),
185+
"PATH": os.path.join(get_erdpy_path(), "bin") + ":" + os.environ["PATH"],
186186
"VIRTUAL_ENV": get_erdpy_path()
187187
})
188188

erdpy/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ All notable changes will be documented in this file.
44

55
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
66

7+
## [1.0.20] - 26.10.2021
8+
- Bugfix by [phanletrunghieu](https://github.com/phanletrunghieu): use $PATH in `erdpy-up`
9+
- Bugfix by [x2ocoder](https://github.com/x2ocoder): add missing `enable_epochs` configurations
10+
- Dependency tags now accept `latest`
11+
- New optional configuration value `github_api_token` for querying latest versions from Github
12+
- The command `erdpy deps install` now accepts `all` as an argument
13+
- More fixes for `erdpy testnet`
14+
715
## [1.0.19] - 05.10.2021
816
- Bugfix by [MWFIAE](https://github.com/MWFIAE): add missing `enable_epochs` configurations
917

erdpy/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.0.19"
1+
__version__ = "1.0.20"

erdpy/cli.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import erdpy.cli_transactions
2020
import erdpy.cli_validators
2121
import erdpy.cli_wallet
22-
import erdpy.cli_delagation
22+
import erdpy.cli_delegation
2323
import erdpy.cli_dns
2424
from erdpy import config, errors, scope
2525
from erdpy._version import __version__
@@ -99,7 +99,7 @@ def setup_parser(args: List[str] = sys.argv[1:]):
9999
commands.append(erdpy.cli_block.setup_parser(subparsers))
100100
commands.append(erdpy.cli_testnet.setup_parser(args, subparsers))
101101
commands.append(erdpy.cli_data.setup_parser(subparsers))
102-
commands.append(erdpy.cli_delagation.setup_parser(args, subparsers))
102+
commands.append(erdpy.cli_delegation.setup_parser(args, subparsers))
103103
commands.append(erdpy.cli_dns.setup_parser(args, subparsers))
104104

105105
parser.epilog = """

erdpy/cli_config.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def setup_parser(subparsers: Any) -> Any:
1313
subparsers = parser.add_subparsers()
1414

1515
sub = cli_shared.add_command_subparser(subparsers, "config", "dump", "Dumps configuration.")
16+
sub.add_argument('--defaults', required=False, help='dump defaults instead of local config', action='store_true')
1617
sub.set_defaults(func=dump)
1718

1819
sub = cli_shared.add_command_subparser(subparsers, "config", "get", "Gets a configuration value.")
@@ -24,6 +25,10 @@ def setup_parser(subparsers: Any) -> Any:
2425
sub.add_argument("value", help="the new value")
2526
sub.set_defaults(func=set_value)
2627

28+
sub = cli_shared.add_command_subparser(subparsers, "config", "delete", "Deletes a configuration value.")
29+
_add_name_arg(sub)
30+
sub.set_defaults(func=delete_value)
31+
2732
sub = cli_shared.add_command_subparser(subparsers, "config", "new", "Creates a new configuration.")
2833
_add_name_arg(sub)
2934
sub.add_argument("--template", required=False, help="template from which to create the new config")
@@ -45,7 +50,11 @@ def _add_name_arg(sub: Any):
4550

4651

4752
def dump(args: Any):
48-
data = config.get_active()
53+
if args.defaults:
54+
data = config.get_defaults()
55+
else:
56+
data = config.get_active()
57+
4958
utils.dump_out_json(data, sys.stdout)
5059

5160

@@ -58,6 +67,10 @@ def set_value(args: Any):
5867
config.set_value(args.name, args.value)
5968

6069

70+
def delete_value(args: Any):
71+
config.delete_value(args.name)
72+
73+
6174
def new_config(args: Any):
6275
config.create_new_config(name=args.name, template=args.template)
6376
dump(None)

erdpy/cli_deps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def setup_parser(subparsers: Any) -> Any:
1111
parser = cli_shared.add_group_subparser(subparsers, "deps", "Manage dependencies or elrond-sdk modules")
1212
subparsers = parser.add_subparsers()
1313

14-
choices = list(get_deps_dict().keys())
14+
choices = ['all'] + list(get_deps_dict().keys())
1515

1616
sub = cli_shared.add_command_subparser(subparsers, "deps", "install", "Install dependencies or elrond-sdk modules.")
1717
sub.add_argument("name", choices=choices, help="the dependency to install")

erdpy/config.py

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from itertools import chain
2-
from logging import Logger
31
import os.path
2+
import semver
43
from typing import Any, Dict, List
4+
from pathlib import Path
55

6-
from erdpy import errors, utils
6+
from erdpy import errors, utils, workstation
77

88
ROOT_FOLDER_NAME = "elrondsdk"
99
LOCAL_CONFIG_PATH = os.path.join(os.getcwd(), "erdpy.json")
@@ -57,7 +57,8 @@ def get_dependency_url(key: str, tag: str, platform: str) -> str:
5757
def get_value(name: str) -> str:
5858
_guard_valid_name(name)
5959
data = get_active()
60-
value = data.get(name, get_defaults()[name])
60+
default_value = get_defaults()[name]
61+
value = data.get(name, default_value)
6162
assert isinstance(value, str)
6263
return value
6364

@@ -72,6 +73,16 @@ def set_value(name: str, value: Any):
7273
write_file(data)
7374

7475

76+
def delete_value(name: str):
77+
_guard_valid_config_deletion(name)
78+
data = read_file()
79+
active_config = data.get("active", "default")
80+
data.setdefault("configurations", {})
81+
data["configurations"].setdefault(active_config, {})
82+
del data["configurations"][active_config][name]
83+
write_file(data)
84+
85+
7586
def get_active():
7687
data = read_file()
7788
configs = data.get("configurations", {})
@@ -137,30 +148,32 @@ def get_defaults() -> Dict[str, Any]:
137148
"proxy": "https://testnet-gateway.elrond.com",
138149
"chainID": "T",
139150
"txVersion": "1",
140-
"dependencies.arwentools.tag": "v1.1.2",
141-
"dependencies.elrond_wasm_rs.tag": "v0.12.0",
151+
"dependencies.arwentools.tag": "latest",
152+
"dependencies.elrond_wasm_rs.tag": "latest",
142153
"dependencies.arwentools.urlTemplate.linux": "https://github.com/ElrondNetwork/arwen-wasm-vm/archive/{TAG}.tar.gz",
143154
"dependencies.arwentools.urlTemplate.osx": "https://github.com/ElrondNetwork/arwen-wasm-vm/archive/{TAG}.tar.gz",
144155
"dependencies.llvm.tag": "v9-19feb",
145156
"dependencies.llvm.urlTemplate.linux": "https://ide.elrond.com/vendor-llvm/{TAG}/linux-amd64.tar.gz?t=19feb",
146157
"dependencies.llvm.urlTemplate.osx": "https://ide.elrond.com/vendor-llvm/{TAG}/darwin-amd64.tar.gz?t=19feb",
147-
"dependencies.rust.tag": "",
158+
"dependencies.rust.tag": "nightly",
148159
"dependencies.nodejs.tag": "v12.18.3",
149160
"dependencies.nodejs.urlTemplate.linux": "https://nodejs.org/dist/{TAG}/node-{TAG}-linux-x64.tar.gz",
150161
"dependencies.nodejs.urlTemplate.osx": "https://nodejs.org/dist/{TAG}/node-{TAG}-darwin-x64.tar.gz",
151-
"dependencies.elrond_go.tag": "master",
162+
"dependencies.elrond_go.tag": "latest",
152163
"dependencies.elrond_go.urlTemplate.linux": "https://github.com/ElrondNetwork/elrond-go/archive/{TAG}.tar.gz",
153164
"dependencies.elrond_go.urlTemplate.osx": "https://github.com/ElrondNetwork/elrond-go/archive/{TAG}.tar.gz",
154165
"dependencies.elrond_go.url": "https://github.com/ElrondNetwork/elrond-go/archive/{TAG}.tar.gz",
155-
"dependencies.elrond_proxy_go.tag": "master",
166+
"dependencies.elrond_proxy_go.tag": "latest",
156167
"dependencies.elrond_proxy_go.urlTemplate.linux": "https://github.com/ElrondNetwork/elrond-proxy-go/archive/{TAG}.tar.gz",
157168
"dependencies.elrond_proxy_go.urlTemplate.osx": "https://github.com/ElrondNetwork/elrond-proxy-go/archive/{TAG}.tar.gz",
158169
"dependencies.golang.tag": "go1.15.2",
159170
"dependencies.golang.urlTemplate.linux": "https://golang.org/dl/{TAG}.linux-amd64.tar.gz",
160171
"dependencies.golang.urlTemplate.osx": "https://golang.org/dl/{TAG}.darwin-amd64.tar.gz",
161-
"dependencies.mcl_signer.tag": "v1.0.0",
172+
"dependencies.mcl_signer.tag": "latest",
162173
"dependencies.mcl_signer.urlTemplate.linux": "https://github.com/ElrondNetwork/elrond-sdk-go-tools/releases/download/{TAG}/mcl_signer_{TAG}_ubuntu-latest.tar.gz",
163174
"dependencies.mcl_signer.urlTemplate.osx": "https://github.com/ElrondNetwork/elrond-sdk-go-tools/releases/download/{TAG}/mcl_signer_{TAG}_macos-latest.tar.gz",
175+
"testnet.validate_expected_keys": "false",
176+
"github_api_token": "",
164177
}
165178

166179

@@ -227,3 +240,44 @@ def determine_final_args(argv: List[str], config_args: Dict[str, Any]) -> List[s
227240
pre_args = [verbose_flag]
228241

229242
return pre_args + argv + extra_args
243+
244+
245+
def get_dependency_directory(key: str, tag: str) -> Path:
246+
parent_directory = get_dependency_parent_directory(key)
247+
if tag == 'latest':
248+
tag = get_latest_semver_from_directory(parent_directory)
249+
250+
return parent_directory / tag
251+
252+
253+
def get_dependency_parent_directory(key: str) -> Path:
254+
tools_folder = Path(workstation.get_tools_folder())
255+
return tools_folder / key
256+
257+
258+
def get_latest_semver_from_directory(directory: Path) -> str:
259+
subdirs = [subdir.name for subdir in directory.iterdir()]
260+
versions = parse_strings_to_semver(subdirs)
261+
if len(versions) == 0:
262+
raise Exception(f'no versions found in {directory}')
263+
264+
if len(versions) == 1:
265+
latest_version = versions[0]
266+
else:
267+
latest_version = sorted(versions).pop()
268+
return 'v' + str(latest_version)
269+
270+
271+
def parse_strings_to_semver(version_strings: List[str]) -> List[semver.VersionInfo]:
272+
versions = []
273+
for version_string in version_strings:
274+
try:
275+
# Omit the 'v' prefix of the version string
276+
version_string = version_string[1:]
277+
version = semver.VersionInfo.parse(version_string)
278+
except ValueError:
279+
continue
280+
281+
versions.append(version)
282+
283+
return versions

erdpy/dependencies/install.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
from pathlib import Path
23
from typing import Dict, List
34

45
from erdpy import config, errors
@@ -10,11 +11,16 @@
1011

1112

1213
def install_module(key: str, tag: str = "", overwrite: bool = False):
13-
module = get_module_by_key(key)
14-
module.install(tag, overwrite)
14+
if key == 'all':
15+
modules = get_all_deps()
16+
else:
17+
modules = [get_module_by_key(key)]
18+
19+
for module in modules:
20+
module.install(tag, overwrite)
1521

1622

17-
def get_module_directory(key: str) -> str:
23+
def get_module_directory(key: str) -> Path:
1824
module = get_module_by_key(key)
1925
default_tag = config.get_dependency_tag(key)
2026
directory = module.get_directory(default_tag)
@@ -44,8 +50,8 @@ def get_all_deps() -> List[DependencyModule]:
4450
ArwenToolsModule(key="arwentools"),
4551
Rust(key="rust"),
4652
NodejsModule(key="nodejs", aliases=[]),
47-
StandaloneModule(key="elrond_go"),
48-
StandaloneModule(key="elrond_proxy_go"),
53+
StandaloneModule(key="elrond_go", repo_name="elrond-go", organisation="ElrondNetwork"),
54+
StandaloneModule(key="elrond_proxy_go", repo_name="elrond-proxy-go", organisation="ElrondNetwork"),
4955
GolangModule(key="golang"),
5056
MclSignerModule(key="mcl_signer")
5157
]

0 commit comments

Comments
 (0)