Lesson 11: Building a CLI Tool

⏱ ~35 min Lesson 11 of 14 💚 Free

Command-line tools are programs you run in the terminal. They take arguments and flags (like git commit -m 'message') and are incredibly powerful for automation. Python's argparse module makes them easy to build.

Key Concepts

sys.argv

sys.argv is a list of command-line arguments. sys.argv[0] is the script name. sys.argv[1] is the first argument. Simple but fragile for complex tools.

argparse Module

import argparse
parser = argparse.ArgumentParser(description='My tool')
parser.add_argument('name')
parser.add_argument('--count', type=int, default=1)
args = parser.parse_args()
Argparse generates --help automatically.

Positional vs Optional Args

Positional: required, no prefix. mytool filename.txt
Optional: starts with --, optional. mytool --verbose
Flags: boolean --debug True/False. parser.add_argument('--debug', action='store_true')

Subcommands

Like git: git add, git commit, git push — these are subcommands.
subparsers = parser.add_subparsers(dest='command')
add_parser = subparsers.add_parser('add')

✅ Check Your Understanding

1. What does argparse generate automatically?

2. A positional argument in argparse is:

3. What is a subcommand? (e.g., git commit)