Skip to content

Commit fbcca79

Browse files
committed
devmate/cli: Enhance CLI help messages and usage instructions.
- Refactor argparse setup for better readability and maintainability. - Include usage examples for each sub-command for improved user experience. - Extend main parser description for more comprehensive overview. - Mark model, protocol, address, and port arguments as required for relevant sub-commands. Signed-off-by: Nikolay Martyanov <nikolay@zededa.com>
1 parent c37b9a6 commit fbcca79

1 file changed

Lines changed: 66 additions & 38 deletions

File tree

client/devmatecli/client.py

Lines changed: 66 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -202,44 +202,72 @@ def delete_device(device_name):
202202

203203

204204
def main():
205-
parser = argparse.ArgumentParser(description="Device Management CLI")
206-
207-
subparsers = parser.add_subparsers(dest="command", help="Available commands")
208-
209-
# List Devices
210-
list_parser = subparsers.add_parser("list", help="List all devices")
211-
212-
# Reserve Device
213-
reserve_parser = subparsers.add_parser("reserve", help="Reserve a device")
214-
reserve_parser.add_argument("device", help="Name of the device to reserve")
215-
# Set the default value for --user to the current username
216-
reserve_parser.add_argument("--user", default=os.getlogin(), help="Username of the user reserving the device")
217-
218-
# Release Device
219-
release_parser = subparsers.add_parser("release", help="Release a reserved device")
220-
release_parser.add_argument("device", help="Name of the device to release")
221-
222-
# Add Device
223-
add_parser = subparsers.add_parser("add", help="Add a new device")
224-
add_parser.add_argument("device", help="Name of the new device")
225-
add_parser.add_argument("--model", required=True, help="Model of the new device")
226-
227-
# Set Device to Offline
228-
offline_parser = subparsers.add_parser("offline", help="Set a device to offline mode")
229-
offline_parser.add_argument("device", help="Name of the device to set to offline")
230-
231-
# Return Device from Offline
232-
online_parser = subparsers.add_parser("online", help="Set a device back to free")
233-
online_parser.add_argument("device", help="Name of the device to set to available")
234-
235-
# Delete Device
236-
delete_parser = subparsers.add_parser("delete", help="Delete a device")
237-
delete_parser.add_argument("device", help="Name of the device to delete")
238-
239-
config_parser = subparsers.add_parser('configure', help='Configure server address and port')
240-
config_parser.add_argument('--protocol', required=True, help='Server protocol (http or https)')
241-
config_parser.add_argument('--address', required=True, help='Server address')
242-
config_parser.add_argument('--port', required=True, help='Server port')
205+
parser = argparse.ArgumentParser(
206+
description="Device Management CLI: A tool for managing, reserving, and monitoring devices."
207+
)
208+
subparsers = parser.add_subparsers(
209+
dest="command",
210+
help="Available commands. Use '<command> --help' for more information on each command."
211+
)
212+
213+
list_parser = subparsers.add_parser(
214+
"list",
215+
help="Lists all available and reserved devices.",
216+
usage="list"
217+
)
218+
219+
reserve_parser = subparsers.add_parser(
220+
"reserve",
221+
help="Reserve a device for use.",
222+
usage="reserve <device> [--user]",
223+
)
224+
reserve_parser.add_argument("device")
225+
reserve_parser.add_argument("--user", default=os.getlogin())
226+
227+
release_parser = subparsers.add_parser(
228+
"release",
229+
help="Release a previously reserved device.",
230+
usage="release <device>"
231+
)
232+
release_parser.add_argument("device")
233+
234+
add_parser = subparsers.add_parser(
235+
"add",
236+
help="Add a new device to the management system.",
237+
usage="add <device> --model"
238+
)
239+
add_parser.add_argument("device")
240+
add_parser.add_argument("--model", required=True)
241+
242+
offline_parser = subparsers.add_parser(
243+
"offline",
244+
help="offline <device>. Set a device to offline mode.",
245+
usage="offline <device>"
246+
)
247+
offline_parser.add_argument("device")
248+
249+
online_parser = subparsers.add_parser(
250+
"online",
251+
help="Set an offline device back to available mode.",
252+
usage="online <device>"
253+
)
254+
online_parser.add_argument("device")
255+
256+
delete_parser = subparsers.add_parser(
257+
"delete",
258+
help="Permanently remove a device from the management system.",
259+
usage="delete <device>"
260+
)
261+
delete_parser.add_argument("device")
262+
263+
config_parser = subparsers.add_parser(
264+
'configure',
265+
help='Configure the server protocol, address, and port. Must be run before using other commands.',
266+
usage='configure --protocol --address --port'
267+
)
268+
config_parser.add_argument('--protocol', required=True)
269+
config_parser.add_argument('--address', required=True)
270+
config_parser.add_argument('--port', required=True)
243271

244272
args = parser.parse_args()
245273

0 commit comments

Comments
 (0)