Initial commit
This commit is contained in:
162
skills/argparse-patterns/templates/boolean-flags.py
Executable file
162
skills/argparse-patterns/templates/boolean-flags.py
Executable file
@@ -0,0 +1,162 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Boolean flag patterns with store_true, store_false, and count actions.
|
||||
|
||||
Usage:
|
||||
python boolean-flags.py --verbose
|
||||
python boolean-flags.py -vvv --debug --force
|
||||
python boolean-flags.py --no-cache --quiet
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Boolean flag patterns',
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter
|
||||
)
|
||||
|
||||
# ===== store_true (False by default) =====
|
||||
parser.add_argument(
|
||||
'--verbose',
|
||||
action='store_true',
|
||||
help='Enable verbose output'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--debug',
|
||||
action='store_true',
|
||||
help='Enable debug mode'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--force', '-f',
|
||||
action='store_true',
|
||||
help='Force operation without confirmation'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--dry-run',
|
||||
action='store_true',
|
||||
help='Perform a dry run without making changes'
|
||||
)
|
||||
|
||||
# ===== store_false (True by default) =====
|
||||
parser.add_argument(
|
||||
'--no-cache',
|
||||
action='store_false',
|
||||
dest='cache',
|
||||
help='Disable caching (enabled by default)'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--no-color',
|
||||
action='store_false',
|
||||
dest='color',
|
||||
help='Disable colored output (enabled by default)'
|
||||
)
|
||||
|
||||
# ===== count action (count occurrences) =====
|
||||
parser.add_argument(
|
||||
'-v',
|
||||
action='count',
|
||||
default=0,
|
||||
dest='verbosity',
|
||||
help='Increase verbosity (-v, -vv, -vvv)'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'-q', '--quiet',
|
||||
action='count',
|
||||
default=0,
|
||||
help='Decrease verbosity (-q, -qq, -qqq)'
|
||||
)
|
||||
|
||||
# ===== store_const action =====
|
||||
parser.add_argument(
|
||||
'--fast',
|
||||
action='store_const',
|
||||
const='fast',
|
||||
dest='mode',
|
||||
help='Use fast mode'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--safe',
|
||||
action='store_const',
|
||||
const='safe',
|
||||
dest='mode',
|
||||
help='Use safe mode (default)'
|
||||
)
|
||||
|
||||
parser.set_defaults(mode='safe')
|
||||
|
||||
# ===== Combined short flags =====
|
||||
parser.add_argument(
|
||||
'-a', '--all',
|
||||
action='store_true',
|
||||
help='Process all items'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'-r', '--recursive',
|
||||
action='store_true',
|
||||
help='Process recursively'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'-i', '--interactive',
|
||||
action='store_true',
|
||||
help='Run in interactive mode'
|
||||
)
|
||||
|
||||
# Parse arguments
|
||||
args = parser.parse_args()
|
||||
|
||||
# Calculate effective verbosity
|
||||
effective_verbosity = args.verbosity - args.quiet
|
||||
|
||||
# Display configuration
|
||||
print("Boolean Flags Configuration:")
|
||||
print(f" Verbose: {args.verbose}")
|
||||
print(f" Debug: {args.debug}")
|
||||
print(f" Force: {args.force}")
|
||||
print(f" Dry Run: {args.dry_run}")
|
||||
print(f" Cache: {args.cache}")
|
||||
print(f" Color: {args.color}")
|
||||
print(f" Verbosity Level: {effective_verbosity}")
|
||||
print(f" Mode: {args.mode}")
|
||||
print(f" All: {args.all}")
|
||||
print(f" Recursive: {args.recursive}")
|
||||
print(f" Interactive: {args.interactive}")
|
||||
|
||||
# Example usage based on flags
|
||||
if args.debug:
|
||||
print("\nDebug mode enabled - showing detailed information")
|
||||
|
||||
if args.dry_run:
|
||||
print("\nDry run mode - no changes will be made")
|
||||
|
||||
if effective_verbosity > 0:
|
||||
print(f"\nVerbosity level: {effective_verbosity}")
|
||||
if effective_verbosity >= 3:
|
||||
print("Maximum verbosity - showing everything")
|
||||
elif effective_verbosity < 0:
|
||||
print(f"\nQuiet level: {abs(effective_verbosity)}")
|
||||
|
||||
if args.force:
|
||||
print("\nForce mode - skipping confirmations")
|
||||
|
||||
if not args.cache:
|
||||
print("\nCache disabled")
|
||||
|
||||
if not args.color:
|
||||
print("\nColor output disabled")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user