Skip to content

Commit 424473c

Browse files
committed
untested: codex-assisted first attempt at adding --file support for #1399
1 parent 839a250 commit 424473c

File tree

1 file changed

+31
-19
lines changed

1 file changed

+31
-19
lines changed

bin/get_profile.py

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,6 @@ def get_current_profile(nightscout, token, profile_name):
8383
logging.debug("default profile: %s", default_profile)
8484
profile["timezone"] = p_list[0]["store"][default_profile]["timezone"]
8585
return profile
86-
# sys.exit(
87-
# """Latest 'Profile Switch' event doesn't contain profile, """ +
88-
# """please specify profile name to use with --name flag.""")
8986
p_list[0]["store"][default_profile]["name"] = default_profile
9087
try:
9188
if not p_list[0]["store"][default_profile]["units"]:
@@ -103,39 +100,50 @@ def get_current_profile(nightscout, token, profile_name):
103100
return p_list[0]["store"][profile_name]
104101

105102

106-
def profiles(nightscout, token):
103+
def profiles(nightscout, token, file):
107104
"""
108-
print list of profiles available in nightscout
105+
print list of profiles available in --nightscout or --file
109106
"""
110-
p_list = get_profiles(nightscout, token)
107+
if file is not None:
108+
with open(file, 'r') as f:
109+
p_list = json.loads(f.read())
110+
else:
111+
p_list = get_profiles(nightscout, token)
111112
default_profile = p_list[0]["defaultProfile"]
112113
profile_list = p_list[0]["store"].keys()
113114
print("Default profile: {}".format(default_profile))
114115
print("Available profiles:")
115116
for profile in profile_list:
116117
print("\t" + profile)
117118

118-
119-
def display(nightscout, token, profile_name, profile_format):
119+
def display(nightscout, token, profile_name, profile_format, file):
120120
"""
121-
Display contents of a profile, in requested format
121+
Display contents of a profile (from --nightscout or --file), in requested format
122122
"""
123+
if file is not None:
124+
with open(file, 'r') as f:
125+
p_list = json.loads(f.read())
126+
else:
127+
p_list = get_profiles(nightscout, token)
123128
profile = get_current_profile(nightscout, token, profile_name)
124129
if profile_format == "nightscout":
125-
# display_nightscout(p_list, profile_name)
126130
logging.debug("Displaying profile {}".format(profile["name"]))
127131
print(json.dumps(profile, indent=4))
128132
elif profile_format == "text":
129133
display_text(profile)
130134
else:
131135
print(json.dumps(ns_to_oaps(profile), indent=4))
132136

133-
134-
def write(nightscout, token, profile_name, directory):
137+
def write(nightscout, token, profile_name, directory, file):
135138
"""
136-
Write profile in OpenAPS format to a directory
139+
Write profile (from either --nightscout or --file) in OpenAPS format to a directory
137140
"""
138-
profile = ns_to_oaps(get_current_profile(nightscout, token, profile_name))
141+
if file is not None:
142+
with open(file, 'r') as f:
143+
p_list = json.loads(f.read())
144+
else:
145+
p_list = get_profiles(nightscout, token)
146+
profile = get_current_profile(nightscout, token, profile_name)
139147
logging.debug("Checking for directory: %s", directory)
140148
if not os.path.isdir(directory):
141149
sys.exit(
@@ -160,7 +168,6 @@ def write(nightscout, token, profile_name, directory):
160168
with open(os.path.join(directory, profile_file), 'w') as f:
161169
f.write(json.dumps(profile, indent=4))
162170

163-
164171
def normalize_entry(entry):
165172
"""
166173
Clean up an entry before further processing
@@ -383,18 +390,25 @@ def display_text(p_data):
383390
#times_table.add_rows(times_list)
384391
#print(times_table.draw() + "\n")
385392

386-
393+
# support either --nightscout or --file (reading in the profile from a file).
387394
if __name__ == "__main__":
388395
parser = argparse.ArgumentParser(description="Get nightscout profile.")
389396
parser.add_argument(
390397
"--nightscout",
391398
help="Nightscout URL",
392-
required=True,
399+
required=False,
393400
nargs="?",
394401
const="http://127.0.0.1:1337",
395402
default="http://127.0.0.1:1337",
396403
)
397404
parser.add_argument("--token", help="Authenticaton token")
405+
parser.add_argument(
406+
"--file",
407+
help="File containing nightscout profile",
408+
required=False,
409+
nargs="?",
410+
default=None,
411+
)
398412

399413
subparsers = parser.add_subparsers(help="Sub-command to run",
400414
dest="subparser")
@@ -428,7 +442,5 @@ def display_text(p_data):
428442

429443
logging.debug(vars(parser.parse_args()))
430444

431-
# https://stackoverflow.com/questions/4575747/get-selected-subcommand-with-argparse/44948406#44948406
432-
# I have no idea what it does, but it seems to do the trick
433445
kwargs = vars(parser.parse_args())
434446
globals()[kwargs.pop("subparser")](**kwargs)

0 commit comments

Comments
 (0)