Skip to main content

EOL CLI Release

EOL CLI

Query end-of-life dates and support lifecycles from the terminal

PyPI Version Python Versions License CI Status

GitHub Stars GitHub Issues GitHub Release


Overview

EOL CLI is a Python command-line tool for querying the endoflife.date API. It helps you inspect product lifecycles, release cycles, categories, tags, identifiers, and API metadata directly from your terminal.

Key Features

Feature Description
Product Lookup Inspect products, release cycles, and release metadata
Category Queries List categories or fetch products by category
Tag Queries List tags or fetch products by tag
Identifier Queries Resolve products by PURL, CPE, and other identifier types
API Index Inspect the API index and available surfaces
Rich Output Human-friendly terminal output with tables and colors
Structured Output JSON, XML, and SARIF output for automation
Tag-Based Releases Publish releases from git tags with GitHub Actions

Supported Commands

Command Purpose
products list List all products
products get <name> Show product details
products release <product> <release> Show a specific release cycle
categories list List categories
categories get <name> Show products in a category
tags list List tags
tags get <name> Show products for a tag
identifiers list List identifier types
identifiers get <type> Show products for an identifier type
index Show API index data

Installation

From PyPI

pip install eol-cli

From Source

git clone https://github.com/seifreed/eol-cli.git
cd eol-cli
pip install -e .

Development Installation

git clone https://github.com/seifreed/eol-cli.git
cd eol-cli
pip install -e ".[dev]"

Quick Start

# List all available products
eol-cli products list

# Get details for a specific product
eol-cli products get ubuntu

# Get the latest release information
eol-cli products release python latest

# Query products by category
eol-cli categories get os

# Query products by tag
eol-cli tags get linux

Usage

Products

# List all products
eol-cli products list

# List all products with full details
eol-cli products list --full

# Get a specific product
eol-cli products get <product-name>

# Get multiple products (comma-separated)
eol-cli products get <product1>,<product2>,<product3>

# Get all product details
eol-cli products get <product-name> --all

# Get a specific release cycle
eol-cli products release <product-name> <release-cycle>

# Get the latest release cycle
eol-cli products release <product-name> latest

Categories

# List all categories
eol-cli categories list

# Get products in a category
eol-cli categories get <category-name>

Tags

# List all tags
eol-cli tags list

# Get products with a specific tag
eol-cli tags get <tag-name>

Identifiers

# List all identifier types
eol-cli identifiers list

# Get products by identifier type
eol-cli identifiers get <identifier-type>

API Information

# Get API index
eol-cli index

Output Formats

Rich Terminal Output

Rich is the default output format. It renders tables and summaries that are easy to read in a terminal.

JSON Output

Use --json for machine-readable JSON output.

eol-cli products get ubuntu --json

XML Output

Use --xml for XML output.

eol-cli products get ubuntu --xml

SARIF Output

Use --sarif for SARIF output in security and automation workflows.

eol-cli products get ubuntu --sarif

Releases

Releases are published from version tags.

git tag v1.0.0
git push origin v1.0.0

That workflow:

  • Builds the package artifacts
  • Publishes to PyPI with GitHub Actions OIDC trusted publishing
  • Uploads the built files to the GitHub Release assets

Before publishing tag-based releases, configure PyPI trusted publishing for this repository:

  • Owner: seifreed
  • Repository: eol-cli
  • Workflow file: publish.yml
  • Environment: pypi

Development

Setup Development Environment

# Clone the repository
git clone https://github.com/seifreed/eol-cli.git
cd eol-cli

# Create a virtual environment
python3 -m venv venv
source venv/bin/activate

# Install development dependencies
pip install -e ".[dev]"

Running Tests

# Run all tests
pytest

# Run tests without API calls
pytest -q -m "not api" --tb=short

# Run with coverage
pytest --cov=eol_cli --cov-report=term-missing

Code Quality

# Lint
ruff check eol_cli tests

# Format check
black --check eol_cli tests

# Type check
mypy eol_cli tests

Requirements


Contributing

Contributions are welcome.

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push the branch
  5. Open a pull request

License

This project is licensed under the MIT License. See the LICENSE file for details.

Attribution


Built for clean EOL lookups and release automation.

Metadata

Release files for eol-cli 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eol-cli 1.0.0
File Size Uploaded
eol_cli-1.0.0.tar.gz 56.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eol-cli 1.0.0
File Interpreter ABI Platform
eol_cli-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 99.4 kB

Release files / eol_cli-1.0.0.tar.gz

Download URL eol_cli-1.0.0.tar.gz
Size 56.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0ff81165f6dc76366d258ca195e69222ad68365d2ea1b805f768636e7619ad65
BLAKE2b-256 checksum
How to use checksums
ff9173123f657dbe81af577753ab58776d9922257876678042007e0831947a35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / eol_cli-1.0.0-py3-none-any.whl

Download URL eol_cli-1.0.0-py3-none-any.whl
Size 43.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b5bf6415239e901a93861ddbe04c0149f19f0b3c130cbbd2701b0d0b95eec740
BLAKE2b-256 checksum
How to use checksums
35527c2e3cb30f5f992cb41722e43736245a363ec69a4fdac0b9b787215c2392
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page