{"id":23305957,"url":"https://github.com/eccenca/cmem-plugin-index","last_synced_at":"2025-07-03T09:33:28.137Z","repository":{"id":268345222,"uuid":"904039847","full_name":"eccenca/cmem-plugin-index","owner":"eccenca","description":"Create an up-to-date list of Corporate Memory plugin packages.","archived":false,"fork":false,"pushed_at":"2025-06-27T08:10:17.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-27T08:27:10.354Z","etag":null,"topics":["corporate-memory","eccenca"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eccenca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2024-12-16T06:18:28.000Z","updated_at":"2025-06-27T08:10:21.000Z","dependencies_parsed_at":"2024-12-16T07:40:48.535Z","dependency_job_id":"66220e61-b41a-4d9f-8778-1e329a994425","html_url":"https://github.com/eccenca/cmem-plugin-index","commit_stats":null,"previous_names":["eccenca/cmem-plugin-index"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eccenca/cmem-plugin-index","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fcmem-plugin-index","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fcmem-plugin-index/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fcmem-plugin-index/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fcmem-plugin-index/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eccenca","download_url":"https://codeload.github.com/eccenca/cmem-plugin-index/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fcmem-plugin-index/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263300769,"owners_count":23445299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["corporate-memory","eccenca"],"created_at":"2024-12-20T12:14:54.814Z","updated_at":"2025-07-03T09:33:28.109Z","avatar_url":"https://github.com/eccenca.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cmem-plugin-index\n\nCreate an up-to-date list of Corporate Memory plugin packages.\n\nThis repository contains an up-to-date list of Python packages starting with the prefix `cmem-plugin`, fetched from [PyPI](https://pypi.org).\nIt is updated daily through an automated GitHub Action, which queries the PyPI simple index and gathers details for all plugins starting with `cmem-plugin`.\n\n[![workflow](https://github.com/eccenca/cmem-plugin-index/actions/workflows/check.yml/badge.svg)](https://github.com/eccenca/cmem-plugin-index/actions)\n[![poetry][poetry-shield]][poetry-link] [![ruff][ruff-shield]][ruff-link] [![mypy][mypy-shield]][mypy-link] [![copier][copier-shield]][copier]\n\n## Development\n\n- Run [task](https://taskfile.dev/) to see all major development tasks.\n- Use [pre-commit](https://pre-commit.com/) to avoid errors before commit.\n- This repository was created with [this copier template](https://github.com/eccenca/cmem-plugin-template).\n\n## Repository Structure\n\n- `cmem_plugin_index/`: contains the Python package, a CLI that queries PyPI and fetches details of plugins.\n- `data/`: Stores the generated JSON file (`plugins_info.json`) with details about each `cmem-plugin` package, including the package ID, name, summary, and latest version.\n- `.github/`: Contains GitHub Actions workflow files that automate the daily updates.\n- `README.md`: This file.\n\n## How It Works\n\n1. **GitHub Action**: The `update_plugins.yml` workflow in the `.github/workflows/` directory runs daily to fetch the list of `cmem-plugin` packages from pypi.org and saves the information into a `plugins_info.json` file in the `data/` folder.\n\n2. **Plugin Information**: The script fetches the following details for each plugin:\n   - **ID**: The package name.\n   - **Name**: The display name of the package.\n   - **Summary**: A brief description of the package (if available).\n   - **Latest Version**: The latest version available for the package.\n   - **Latest Version Publish Time**: The timestamp when the latest version was uploaded to PyPI.\n\n3. **Data Output**: The generated `plugins_info.json` file is stored in the `data/` folder and contains the details of all the plugins.\n\n## Manual Triggering\n\nYou can manually trigger the GitHub Action by going to the **Actions** tab of this repository and selecting the **Update CMEM Plugin List** workflow. From there, you can click the **Run workflow** button.\n\nYou can also use the command line directly:\n\n```\n$ poetry install\nInstalling dependencies from lock file\n...\n\n$ poetry run cmem-plugin-index --help\nUsage: cmem-plugin-index [OPTIONS] OUTPUT_FILE\n\n  Fetch and save a list of plugin details from pypi.org\n\nOptions:\n  --prefix TEXT  Prefix of the packages to fetch.  [default: cmem-plugin-]\n  --ignore TEXT  Ignore given packages.  [default: cmem-plugin-base, cmem-\n                 client]\n  --help         Show this message and exit.\n\n$ poetry run cmem-plugin-index data/plugins_info.json\n2024-12-16 16:47:38.499 | WARNING  | cmem_plugin_index.cli:cli:28 - Output file data/plugins_info.json exists, will overwrite it\n2024-12-16 16:47:38.499 | INFO     | cmem_plugin_index.plugin_info:get_package_names:14 - Start fetching plugin names from pypi.org\n2024-12-16 16:47:47.319 | INFO     | cmem_plugin_index.plugin_info:get_package_names:20 - Got 593112 package names from pypi.org\n2024-12-16 16:47:47.348 | INFO     | cmem_plugin_index.plugin_info:get_package_names_with_prefix:28 - Found 25 packages with prefix 'cmem-plugin-' (ignoring ('cmem-plugin-base', 'cmem-client'))\n2024-12-16 16:47:51.984 | INFO     | cmem_plugin_index.cli:cli:39 - Data saved to data/plugins_info.json\n```\n\nBe aware that cmemc itself fetches the information from [download.eccenca.com](https://download.eccenca.com/cmem-plugin-index/cmem-plugin-index.json).\nUploading the JSON dataset to this host is part of the github action mentioned above.\n\n[poetry-link]: https://python-poetry.org/\n[poetry-shield]: https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json\n[ruff-link]: https://docs.astral.sh/ruff/\n[ruff-shield]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\u0026label=Code%20Style\n[mypy-link]: https://mypy-lang.org/\n[mypy-shield]: https://www.mypy-lang.org/static/mypy_badge.svg\n[copier]: https://copier.readthedocs.io/\n[copier-shield]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-purple.json\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feccenca%2Fcmem-plugin-index","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feccenca%2Fcmem-plugin-index","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feccenca%2Fcmem-plugin-index/lists"}