Skip to main content

CLI tool for Microsoft Planner - manage plans, tasks, and buckets

Project description

Planer CLI

CLI tool for Microsoft Planner - manage plans, tasks, and buckets from the command line.

Installation

uv sync

Configuration

Option 1: Environment Variable

export PLANER_CLIENT_ID=<your-azure-ad-client-id>

Option 2: Config File

planer config init
planer config edit

Config file location: ~/.config/planer-cli/config.yaml

# Required
client_id: "your-azure-ad-client-id"

# Optional
tenant_id: common
output_format: table
default_plan_id: ""
watch_interval: 60
log_level: INFO

Azure AD App Registration

  1. Go to Azure Portal > App Registrations
  2. Create a new registration
  3. Set Redirect URI to https://login.microsoftonline.com/common/oauth2/nativeclient
  4. Enable "Allow public client flows"
  5. Add API permissions (Delegated):
    • Tasks.ReadWrite
    • Group.Read.All
    • User.Read
    • User.ReadBasic.All

Authentication

planer login      # Authenticate with Microsoft
planer status     # Check authentication status
planer logout     # Clear cached tokens

Commands

Tasks

# List your tasks
planer tasks my
planer tasks my --open              # Only open tasks
planer tasks my --done              # Only completed tasks
planer tasks my --overdue           # Overdue tasks
planer tasks my --due-today         # Due today
planer tasks my --this-week         # Due this week
planer tasks my --unassigned        # Unassigned tasks
planer tasks my --label 1           # Filter by label

# Sorting
planer tasks my --sort-by due-date
planer tasks my --sort-by priority
planer tasks my --sort-by title
planer tasks my --sort-by due-date --reverse

# Export
planer tasks my --export tasks.csv
planer tasks my --export tasks.json

# List tasks in plan/bucket
planer tasks list <plan-id>
planer tasks list-bucket <bucket-id>

# Get task details
planer tasks get <task-id>
planer tasks get -i                 # Interactive selection with fzf

# Create task
planer tasks create <plan-id> "Task title"
planer tasks create <plan-id> "Task title" --bucket-id <id>
planer tasks create <plan-id> "Task title" --due-date 2024-12-31
planer tasks create <plan-id> "Task title" --priority urgent
planer tasks create <plan-id> "Task title" --notes "Description here"

# Update task
planer tasks update <task-id> --title "New title"
planer tasks update <task-id> --progress 50
planer tasks update <task-id> --priority important
planer tasks update <task-id> --due-date 2024-12-31
planer tasks update <task-id> --bucket-id <id>
planer tasks update <task-id> --notes "Updated notes"
planer tasks update <task-id> --label 1 --label 2
planer tasks update <task-id> --remove-label 3
planer tasks update -i --title "New title"  # Interactive

# Complete task
planer tasks complete <task-id>
planer tasks complete -i            # Interactive selection

# Assign task
planer tasks assign <task-id> <user-id>

# Delete task
planer tasks delete <task-id>
planer tasks delete -i              # Interactive selection

Batch Operations

# Complete all tasks
planer tasks complete-all --plan-id <id>
planer tasks complete-all --bucket-id <id>
planer tasks complete-all --plan-id <id> --yes  # Skip confirmation

# Move all tasks between buckets
planer tasks move-all --from-bucket <id> --to-bucket <id>

# Delete all tasks
planer tasks delete-all --plan-id <id>
planer tasks delete-all --bucket-id <id>
planer tasks delete-all --plan-id <id> --done-only  # Only completed

Checklists

planer tasks checklist list <task-id>
planer tasks checklist add <task-id> "Checklist item"
planer tasks checklist check <task-id> <item-id>
planer tasks checklist uncheck <task-id> <item-id>
planer tasks checklist remove <task-id> <item-id>

Quick-Add (Natural Language)

planer quick "Fix bug tomorrow"
planer quick "Review PR next Monday"
planer quick "Deploy on Friday" --plan-id <id>
planer quick "Write docs" --bucket-id <id>

Requires default_plan_id in config or --plan-id flag.

Watch Mode

planer watch                    # Default 60s interval
planer watch --interval 30      # Custom interval
planer watch --no-notify        # Disable desktop notifications

Shows desktop notifications (macOS/Linux) when tasks are:

  • Added
  • Updated
  • Completed

Plans

planer plans my                         # Plans you have tasks in
planer plans list <group-id>            # Plans in a group
planer plans get <plan-id>              # Plan details
planer plans create <group-id> "Title"  # Create plan
planer plans update <plan-id> --title "New Title"
planer plans delete <plan-id>

# Labels
planer plans labels <plan-id>           # Show plan labels
planer plans set-label <plan-id> 1 "Bug"  # Set label name

Buckets

planer buckets list <plan-id>
planer buckets get <bucket-id>
planer buckets create <plan-id> "Bucket Name"
planer buckets update <bucket-id> --name "New Name"
planer buckets delete <bucket-id>

Groups

planer groups list              # List Microsoft 365 groups
planer groups get <group-id>    # Group details

Users

planer users me                 # Show your user ID
planer users list               # List users in organization
planer users list --search Max  # Search by name or email
planer users get <user-id>      # Get user by ID or email

Use these IDs with planer tasks assign <task-id> <user-id>.

Config

planer config init    # Create config template
planer config show    # Show current configuration
planer config edit    # Open in default editor

Output Formats

planer tasks my --format json
planer -f json tasks my

Shell Completions

# Bash
planer completions bash >> ~/.bashrc

# Zsh
planer completions zsh >> ~/.zshrc

# Fish
planer completions fish > ~/.config/fish/completions/planer.fish

Interactive Selection (fzf)

Commands with -i/--interactive flag use fzf for task selection:

planer tasks get -i
planer tasks complete -i
planer tasks update -i --title "New title"
planer tasks delete -i

Requires fzf to be installed:

brew install fzf      # macOS
apt install fzf       # Ubuntu/Debian

Testing

uv run pytest tests/ -v
uv run pytest tests/ --cov=planer_cli --cov-report=term-missing

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planer_cli-0.2.1.tar.gz (111.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

planer_cli-0.2.1-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

Details for the file planer_cli-0.2.1.tar.gz.

File metadata

  • Download URL: planer_cli-0.2.1.tar.gz
  • Upload date:
  • Size: 111.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for planer_cli-0.2.1.tar.gz
Algorithm Hash digest
SHA256 94591fdfc1c3fe93af77f0bdf10d8f1b90e09dbbee2e6264886e59a2e6693e9d
MD5 8a29abdc84ca367dcd9217ccf1ee430b
BLAKE2b-256 ced4d38d64e4fc1ec3fc932f4967d63926641df4dfe0983f10fa1d2408fe65ad

See more details on using hashes here.

File details

Details for the file planer_cli-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: planer_cli-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for planer_cli-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a77ef6386435dab54b61c6e9536973426acf41dda80050190aa2a4877e03785
MD5 abc108988fa790c20c258df1f7bc0527
BLAKE2b-256 af2d3ee90f8e1a54e7d8b2d0e8bf07211dd5685f5089b75a1ee5d616563957a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page