Refactored.
Modernized.
A complete rewrite of the core logic. We've moved from argparse to
click,
introduced rich for beautiful terminal output, and reorganized the command
structure for scalability.
Nested Commands
Commands are now logically grouped (e.g.,
projects quota instead of just quota).
Rich UI
Beautiful tables, panels, and spinners replace standard text output and basic progress bars.
Deprecations
Legacy commands are caught and provide helpful redirection messages to the new syntax.
Core Architecture
The underlying CLI framework has been completely swapped to improve maintainability and help generation.
import argparse
# Flat argument parsing
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser_quota = subparsers.add_parser("quota")
parser_quota.set_defaults(func=quota_from_parser)
parser_copy = subparsers.add_parser("copy")
parser_copy.set_defaults(func=copy_from_parser)
import click
from click import Group
# Nested Group Structure
@click.group(cls=OrderedGroup)
def cli(): pass
@cli.group()
def projects(): pass
@projects.command('quota')
def projects_quota(project): ...
Command Restructuring
| Old Command | New Command Group | Reasoning |
|---|---|---|
| geeadd quota | geeadd projects quota | Grouped under 'projects' management. |
| geeadd projects | geeadd projects enabled | Clarified action (listing enabled projects). |
| geeadd copy | geeadd assets copy | All file operations moved to 'assets' group. |
| geeadd search | geeadd utils search | Moved generic tools to 'utils' group. |
| geeadd cancel | geeadd tasks cancel | Consolidated task operations. |
UI & Rich Output
We removed colorama and basic print() statements in favor of the
rich library.
Code Implementation
Tables are now constructed using rich.table.Table, enabling auto-sizing columns and
consistent coloring across the application. Panels are used for error messages and deprecation
warnings.
New Features
Palette Generator
A completely new tool based on ColorBrewer logic. It generates hex codes for data visualization and can output directly to CSS, Python lists, or JSON.
# Generate a 5-class sequential blue palette
geeadd utils palette --name Blues --classes 5 --format hex
# Output:
# ['#eff3ff', '#bdd7e7', '#6baed6', '#3182bd', '#08519c']
Project Dashboard
Generates an interactive HTML dashboard summarizing all your enabled Earth Engine projects, their types (Commercial/Non-Commercial), and states.
# Create dashboard
geeadd projects dashboard --outdir ./reports