geeadd Changelog
Stable Release: v2.0.0

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.

BEFORE (v1)
geeadd_old.py
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)
AFTER (v2)
geeadd.py
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.

Example: Quota Output
Cloud Project: projects/samapriya
Storage: 231.33 GB of 250 GB
[███████████████████████████░░░] 92.5%
Assets: 4,133 of 50,000
[██░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 8.3%

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.

Terminal
# 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.

Terminal
# Create dashboard
geeadd projects dashboard --outdir ./reports