{"id":25182902,"url":"https://github.com/jeeves-sh/jeeves-shell","last_synced_at":"2025-07-30T03:38:15.832Z","repository":{"id":46476666,"uuid":"415268115","full_name":"jeeves-sh/jeeves-shell","owner":"jeeves-sh","description":"Pythonic alternative for GNU Make.","archived":false,"fork":false,"pushed_at":"2024-11-03T14:42:57.000Z","size":3744,"stargazers_count":40,"open_issues_count":20,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-10T18:51:22.745Z","etag":null,"topics":["administration","boilerplate","linting","make","makefile","python","shell","testing"],"latest_commit_sha":null,"homepage":"https://jeeves.sh","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeeves-sh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-10-09T09:51:33.000Z","updated_at":"2024-11-03T14:42:51.000Z","dependencies_parsed_at":"2023-01-30T20:30:18.098Z","dependency_job_id":"e27f841c-8250-434a-8854-1008eb122636","html_url":"https://github.com/jeeves-sh/jeeves-shell","commit_stats":{"total_commits":35,"total_committers":1,"mean_commits":35.0,"dds":0.0,"last_synced_commit":"b419240221965d00a9148379de686e7f0a39900e"},"previous_names":["jeeves-sh/jeeves-core"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jeeves-sh/jeeves-shell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeeves-sh%2Fjeeves-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeeves-sh%2Fjeeves-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeeves-sh%2Fjeeves-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeeves-sh%2Fjeeves-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeeves-sh","download_url":"https://codeload.github.com/jeeves-sh/jeeves-shell/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeeves-sh%2Fjeeves-shell/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266512510,"owners_count":23941022,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["administration","boilerplate","linting","make","makefile","python","shell","testing"],"created_at":"2025-02-09T18:18:24.022Z","updated_at":"2025-07-30T03:38:15.808Z","avatar_url":"https://github.com/jeeves-sh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jeeves Shell\n\n[![Build Status](https://github.com/jeeves-sh/jeeves-shell/workflows/test/badge.svg?branch=master\u0026event=push)](https://github.com/jeeves-sh/jeeves-shell/actions?query=workflow%3Atest)\n[![codecov](https://codecov.io/gh/jeeves-sh/jeeves-shell/branch/master/graph/badge.svg)](https://codecov.io/gh/jeeves-sh/jeeves-shell)\n[![Python Version](https://img.shields.io/pypi/pyversions/jeeves-shell.svg)](https://pypi.org/project/jeeves-shell/)\n[![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide)\n\n![](docs/assets/cover.png)\n\nA Pythonic replacement for GNU Make, with re-usability and modularity added as a bonus.\n\nJeeves transforms your shell experience by enabling you to create custom Python-based shell commands to manage and automate your development workflows.\n\n## Features\n\n- **Custom Shell Commands**: Construct commands to build, compile, lint, format, test, deploy, and propel your projects forward.\n- **Python-Powered**: Use Python for readable and maintainable workflows.\n- **Rich Integrations**: Stylish command output with `rich` and `sh`.\n- **Plugin System**: Share your setup across projects.\n\n## Quick Start\n\nInstall with pip:\n\n    pip install 'jeeves-shell[all]'\n\nOr with poetry:\n\n    poetry add --group dev --extras=all jeeves-shell\n\n## Example\n\nCreate a file named `jeeves.py` in the root of your project.\n\n```python\nimport rich\nimport sh\n\n\ndef hi():\n    \"\"\"Hello world.\"\"\"\n    user_name = sh.whoami()\n    machine = sh.uname('-a')\n\n    rich.print(f'Hello [b]{user_name}[/b]!')\n    rich.print(f'This code is running on: [b]{machine}[/b].')\n```\n\nAnd then execute in your shell:\n\n```shell\nj hi\n```\n\nthis should print something along the lines of:\n\n```\nHello john-connor!\nThis code is running on: Cyberdyne T800!\n```\n\n## Learn More\n\nRead [the tutorial](https://jeeves.sh/jeeves-py/)!\n\n## Credits\n\nThis project was generated with [`wemake-python-package`](https://github.com/wemake-services/wemake-python-package).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeeves-sh%2Fjeeves-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeeves-sh%2Fjeeves-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeeves-sh%2Fjeeves-shell/lists"}