Skip to content

Commit 64aa70a

Browse files
committed
Add commands 'config dump --default' and 'config delete {name}'
1 parent 999856f commit 64aa70a

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

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/config.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
from itertools import chain
2-
from logging import Logger
31
import os.path
42
from typing import Any, Dict, List
53

@@ -57,7 +55,8 @@ def get_dependency_url(key: str, tag: str, platform: str) -> str:
5755
def get_value(name: str) -> str:
5856
_guard_valid_name(name)
5957
data = get_active()
60-
value = data.get(name, get_defaults()[name])
58+
default_value = get_defaults()[name]
59+
value = data.get(name, default_value)
6160
assert isinstance(value, str)
6261
return value
6362

@@ -72,6 +71,16 @@ def set_value(name: str, value: Any):
7271
write_file(data)
7372

7473

74+
def delete_value(name: str):
75+
_guard_valid_config_deletion(name)
76+
data = read_file()
77+
active_config = data.get("active", "default")
78+
data.setdefault("configurations", {})
79+
data["configurations"].setdefault(active_config, {})
80+
del data["configurations"][active_config][name]
81+
write_file(data)
82+
83+
7584
def get_active():
7685
data = read_file()
7786
configs = data.get("configurations", {})

0 commit comments

Comments
 (0)