<img align="right" src="https://raw.github.com/cliffano/repomaestro/main/avatar.jpg" alt="Avatar"/>
[](https://github.com/cliffano/repomaestro/actions?query=workflow%3ACI)
[](https://snyk.io/test/github/cliffano/repomaestro)
[](https://libraries.io/github/cliffano/repomaestro)
[](https://pypi.python.org/pypi/repomaestro)
<br/>
Repo Maestro
------------
Repo Maestro is a code repositories configuration file manager.
It fetches repositories data from GitHub, stored in a Repo Maestro configuration file, and then generates output files using Jinja2 templates rendered with the repositories data.
Installation
------------
pip3 install repomaestro
Usage
-----
Initialise a Repo Maestro configuration file with GitHub repositories data:
GITHUB_TOKEN=<github_token> repomaestro init --conf-file .repomaestro.yaml --github-id cliffano
Please note that the fetched GitHub repositories data are based on the ones accessible using the provided `GITHUB_TOKEN`, which can include repositories owned by multiple users and orgs.
When `--github-ids` flag is provided, only the repositories owned by the specified user or org will be included in Repo Maestro configuration file.
Generate output file based on a Jinja2 template:
repomaestro gen --conf-file path/to/.repomaestro.yaml --template-file path/to/some-template.j2 --out-file path/to/some-output.json
Show help guide:
repomaestro --help
### Templates
Template parameters:
| Parameter | Description |
|-----------|-------------|
| `repos` | Repositories data with repository name as key and map of `git_url`, `homepage`, and `keywords`, as value. |
The `repos` parameter can then be used in Jinja2 templates like this:
```jinja2
{
"repos": {
{% for repo_name, repo_data in repos.items() %}
"{{ repo_name }}": {
"git_url": "{{ repo_data.git_url }}",
"homepage": "{{ repo_data.homepage }}",
"keywords": {{ repo_data.keywords }}
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}
```
Colophon
--------
[Developer's Guide](https://cliffano.github.io/developers_guide.html#python)
Build reports:
* [Lint report](https://cliffano.github.io/repomaestro/lint/pylint/index.html)
* [Code complexity report](https://cliffano.github.io/repomaestro/complexity/wily/index.html)
* [Unit tests report](https://cliffano.github.io/repomaestro/test/pytest/index.html)
* [Test coverage report](https://cliffano.github.io/repomaestro/coverage/coverage/index.html)
* [Integration tests report](https://cliffano.github.io/repomaestro/test-integration/pytest/index.html)
* [API Documentation](https://cliffano.github.io/repomaestro/doc/sphinx/index.html)
Raw data
{
"_id": null,
"home_page": "https://github.com/cliffano/repomaestro",
"name": "repomaestro",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "repomaestro, ...",
"author": "Cliffano Subagio",
"author_email": "cliffano@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/9b/40/5cb6ad42585b2e6ee91291324050036d91fe8f97e4506df055b6ac72c2b4/repomaestro-1.0.0.tar.gz",
"platform": null,
"description": "<img align=\"right\" src=\"https://raw.github.com/cliffano/repomaestro/main/avatar.jpg\" alt=\"Avatar\"/>\n\n[](https://github.com/cliffano/repomaestro/actions?query=workflow%3ACI)\n[](https://snyk.io/test/github/cliffano/repomaestro)\n[](https://libraries.io/github/cliffano/repomaestro)\n[](https://pypi.python.org/pypi/repomaestro)\n<br/>\n\nRepo Maestro\n------------\n\nRepo Maestro is a code repositories configuration file manager.\n\nIt fetches repositories data from GitHub, stored in a Repo Maestro configuration file, and then generates output files using Jinja2 templates rendered with the repositories data.\n\nInstallation\n------------\n\n pip3 install repomaestro\n\nUsage\n-----\n\nInitialise a Repo Maestro configuration file with GitHub repositories data:\n\n GITHUB_TOKEN=<github_token> repomaestro init --conf-file .repomaestro.yaml --github-id cliffano\n\nPlease note that the fetched GitHub repositories data are based on the ones accessible using the provided `GITHUB_TOKEN`, which can include repositories owned by multiple users and orgs.\n\nWhen `--github-ids` flag is provided, only the repositories owned by the specified user or org will be included in Repo Maestro configuration file.\n\nGenerate output file based on a Jinja2 template:\n\n repomaestro gen --conf-file path/to/.repomaestro.yaml --template-file path/to/some-template.j2 --out-file path/to/some-output.json\n\nShow help guide:\n\n repomaestro --help\n\n### Templates\n\nTemplate parameters:\n\n| Parameter | Description |\n|-----------|-------------|\n| `repos` | Repositories data with repository name as key and map of `git_url`, `homepage`, and `keywords`, as value. |\n\nThe `repos` parameter can then be used in Jinja2 templates like this:\n\n```jinja2\n{\n \"repos\": {\n {% for repo_name, repo_data in repos.items() %}\n \"{{ repo_name }}\": {\n \"git_url\": \"{{ repo_data.git_url }}\",\n \"homepage\": \"{{ repo_data.homepage }}\",\n \"keywords\": {{ repo_data.keywords }}\n }{% if not loop.last %},{% endif %}\n {% endfor %}\n }\n}\n```\n\nColophon\n--------\n\n[Developer's Guide](https://cliffano.github.io/developers_guide.html#python)\n\nBuild reports:\n\n* [Lint report](https://cliffano.github.io/repomaestro/lint/pylint/index.html)\n* [Code complexity report](https://cliffano.github.io/repomaestro/complexity/wily/index.html)\n* [Unit tests report](https://cliffano.github.io/repomaestro/test/pytest/index.html)\n* [Test coverage report](https://cliffano.github.io/repomaestro/coverage/coverage/index.html)\n* [Integration tests report](https://cliffano.github.io/repomaestro/test-integration/pytest/index.html)\n* [API Documentation](https://cliffano.github.io/repomaestro/doc/sphinx/index.html)\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Code repositories conductor",
"version": "1.0.0",
"project_urls": {
"Documentation": "https://github.com/cliffano/repomaestro",
"Homepage": "https://github.com/cliffano/repomaestro",
"Repository": "https://github.com/cliffano/repomaestro"
},
"split_keywords": [
"repomaestro",
" ..."
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3045c98dfe304d787a40d0926ef365ca9a367e198534f05018230da0fa6f970f",
"md5": "0dcfc2a9c2bde2ae8599bece0245c751",
"sha256": "e409a105744c067cae9bb574d087cf4ff00663e22bb4fa8d866a2b3a54b66645"
},
"downloads": -1,
"filename": "repomaestro-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0dcfc2a9c2bde2ae8599bece0245c751",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 9613,
"upload_time": "2025-01-06T22:46:23",
"upload_time_iso_8601": "2025-01-06T22:46:23.504344Z",
"url": "https://files.pythonhosted.org/packages/30/45/c98dfe304d787a40d0926ef365ca9a367e198534f05018230da0fa6f970f/repomaestro-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b405cb6ad42585b2e6ee91291324050036d91fe8f97e4506df055b6ac72c2b4",
"md5": "3d48b2936bc7927cc866ac4e4b11864c",
"sha256": "773ee543a75c56b2046ef6a8249a81f9cce76422af015bf498cd7377795baead"
},
"downloads": -1,
"filename": "repomaestro-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "3d48b2936bc7927cc866ac4e4b11864c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 8065,
"upload_time": "2025-01-06T22:46:25",
"upload_time_iso_8601": "2025-01-06T22:46:25.822803Z",
"url": "https://files.pythonhosted.org/packages/9b/40/5cb6ad42585b2e6ee91291324050036d91fe8f97e4506df055b6ac72c2b4/repomaestro-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-06 22:46:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cliffano",
"github_project": "repomaestro",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "repomaestro"
}