{"id":30182073,"url":"https://github.com/alexaandru/eol","last_synced_at":"2026-02-12T09:31:39.280Z","repository":{"id":309319079,"uuid":"1035571011","full_name":"alexaandru/eol","owner":"alexaandru","description":"endoflife.date Go cli wrapper","archived":false,"fork":false,"pushed_at":"2025-08-31T11:25:08.000Z","size":1308,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-15T02:26:20.379Z","etag":null,"topics":["endoflife","endoflife-date","eol"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexaandru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-10T17:18:34.000Z","updated_at":"2025-09-14T10:07:33.000Z","dependencies_parsed_at":"2025-08-28T13:09:35.221Z","dependency_job_id":"27c1d2d1-a02f-448a-bd81-2ef7aca6f19c","html_url":"https://github.com/alexaandru/eol","commit_stats":null,"previous_names":["alexaandru/eol"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/alexaandru/eol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Feol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Feol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Feol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Feol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexaandru","download_url":"https://codeload.github.com/alexaandru/eol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Feol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29362780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["endoflife","endoflife-date","eol"],"created_at":"2025-08-12T09:36:51.826Z","updated_at":"2026-02-12T09:31:39.258Z","avatar_url":"https://github.com/alexaandru.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EndOfLife.date API Client\n\n[![Test](https://github.com/alexaandru/eol/actions/workflows/ci.yml/badge.svg)](https://github.com/alexaandru/eol/actions/workflows/ci.yml)\n![Coverage](coverage-badge.svg)\n![Go](go-badge.svg)\n\nA Go command-line tool for the [endoflife.date](https://endoflife.date) [API v1](https://endoflife.date/docs/api/v1/).\n\nThe endoflife.date API provides information about end-of-life dates and support lifecycles\nfor various products including operating systems, frameworks, databases, and other software products.\n\n## Features\n\n- **Complete API Coverage**: All endoflife.date API endpoints;\n- **Zero Dependencies**: Uses only Go standard library;\n- **Template Based**: Customizable output formatting;\n- **Version Fallback**: Automatic fallback for versions (1.24.6 → 1.24 → 1);\n- **JSON Output**: Machine-readable output for automation;\n- **Shell Completion**: Bash and Zsh completion support;\n- **Badge Creation**: As a side-kick, it can generate badges for\n  releases, color coded appropriately based on EOL ![Red](nokia-c21.svg),\n  EOAS ![Orange](ubuntu-22.04.svg) or maintained ![Green](aws-lambda-provided.al2023.svg).\n\n![Sample](sample.png)\n\n## Installation\n\n```bash\ngo install github.com/alexaandru/eol@latest # or\ngo get -tool github.com/alexaandru/eol\n```\n\nYou can enable command-line completion:\n\n```bash\neol completion-bash \u003e ~/.bash_completion.d/eol # or, for zsh\neol completion-zsh \u003e ~/.zsh/autoload/_eol \u0026\u0026 echo \"compdef _eol eol\" \u003e\u003e ~/.zshrc\n```\n\n## Usage\n\n### Commands Overview\n\n```bash\n# Get help and version\neol help\neol version\n\n# List products\neol products\neol products-full                # Full info. Preferably use products to get a summary\n                                 # and reduce the amount of data transferred.\n# Product information\neol product ubuntu\neol release ubuntu 22.04\neol release go 1.24.6            # Will try 1.24.6 → 1.24 → 1\neol latest ubuntu\neol release-badge go 1.21        # Generate SVG badge with color-coded status\neol release-badge ubuntu 22.04   # Width adjusts to text length automatically\n\n# Browse by category/tag\neol categories                   # List categories\neol category os                  # Products in 'os' category\neol tags                         # List tags\neol tag canonical                # Products with 'canonical' tag\n\n# Identifiers\neol identifiers                  # List identifier types\neol identifier cpe               # CPE identifiers\n\n# Template management\neol templates-export             # Export templates to default location\n```\n\nMost commands also support the following options:\n\n```bash\n# Output format\neol -f json # or text, the default\neol -f json product ubuntu | jq '.result.releases[0]'\n\n# Custom, inline templates\neol -t '{{.name}}: {{.category}}' product ubuntu\neol -t '{{.name}}' latest go\neol -t '{{if .isMaintained}}✅ Active{{else}}💀 EOL{{end}}' latest terraform\n\n# Custom, on disk templates\neol --templates-dir ~/my-templates templates-export # and edit as needed, then\neol --templates-dir ~/my-templates product go\n```\n\n### Template Customization\n\nThe tool uses Go [text/template](https://pkg.go.dev/text/template@go1.25.0), so\nyou can leverage all the capabilities of Go templates. Additionally, it provides\nseveral custom template functions to make your life easier:\n\n- `join (toStringSlice .tags) \", \"` - Join string slices with separator;\n- `toJSON .` - Convert to JSON format;\n- `eolWithin \"6mo\" .eolFrom` - Check if EOL is within duration (supports mo, wk, d, h, m, s),\n  enabling proactive monitoring;\n- `dict \"key1\" \"value1\" \"key2\" \"value2\"` - Create a dictionary;\n- `toStringSlice .field` - Convert to string slice;\n- `collect \"fieldname\" .slice` - Extract field from slice of objects for clean joining;\n- `add .a .b` - Addition (integers);\n- `mul .a .b` - Multiplication (integers);\n- `exit 1` - Exit with error code (for scripting).\n\nNote that while the cli itself will not exit with error on eol, etc. you can easily\ncontrol that via templates by leveraging the `exit` template function, i.e.:\n\n```bash\neol release go 1.17 -t '{{if .isEol}}{{exit 1}}{{else if .isEoas}}{{exit 2}}{{end}}'\necho $?  # Will be 1 if EOL, 2 if EOAS, 0 if maintained\n```\n\n### Version Fallback\n\nThe tool automatically tries version variants when a specific version isn't found:\n\n```bash\n# If 1.24.6 doesn't exist, it will try 1.24, then 1\neol release go 1.24.6\n\n# If 3.11.5 doesn't exist, it will try 3.11, then 3\neol release python 3.11.5\n```\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexaandru%2Feol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexaandru%2Feol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexaandru%2Feol/lists"}