{"id":22116356,"url":"https://github.com/c0m4r/okrutnik","last_synced_at":"2026-04-17T15:33:32.329Z","repository":{"id":216251060,"uuid":"740834908","full_name":"c0m4r/okrutnik","owner":"c0m4r","description":"Bash script that helps you write correct Python code","archived":false,"fork":false,"pushed_at":"2025-02-08T21:22:56.000Z","size":88,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T06:45:52.190Z","etag":null,"topics":["bandit","bash","black","codespell","linter","linux","mypy","okrutnik","pylama","pylint","pyright","python","python-formatter","python-linter","ruff"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/c0m4r.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":["https://en.wosp.org.pl/fundacja/jak-wspierac-wosp/wesprzyj-online"]}},"created_at":"2024-01-09T06:54:58.000Z","updated_at":"2025-02-08T21:22:59.000Z","dependencies_parsed_at":"2024-01-22T21:56:38.844Z","dependency_job_id":null,"html_url":"https://github.com/c0m4r/okrutnik","commit_stats":null,"previous_names":["c0m4r/okrutnik"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c0m4r%2Fokrutnik","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c0m4r%2Fokrutnik/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c0m4r%2Fokrutnik/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c0m4r%2Fokrutnik/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/c0m4r","download_url":"https://codeload.github.com/c0m4r/okrutnik/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245217791,"owners_count":20579297,"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":["bandit","bash","black","codespell","linter","linux","mypy","okrutnik","pylama","pylint","pyright","python","python-formatter","python-linter","ruff"],"created_at":"2024-12-01T12:42:59.662Z","updated_at":"2026-04-17T15:33:32.324Z","avatar_url":"https://github.com/c0m4r.png","language":"Shell","funding_links":["https://en.wosp.org.pl/fundacja/jak-wspierac-wosp/wesprzyj-online"],"categories":[],"sub_categories":[],"readme":"# Okrutnik\n\n![linux](https://img.shields.io/badge/Linux-bash-%23777BB4?logo=linux\u0026logoColor=ffffff)\n![Python](https://img.shields.io/badge/Python-lint/format-blue?logo=python\u0026logoColor=ffffff)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![okrutnik](https://github.com/c0m4r/okrutnik/actions/workflows/okrutnik.yml/badge.svg)](https://github.com/c0m4r/okrutnik/actions/workflows/okrutnik.yml)\n[![CodeFactor](https://www.codefactor.io/repository/github/c0m4r/okrutnik/badge)](https://www.codefactor.io/repository/github/c0m4r/okrutnik)\n\nOkrutnik ([/ɔkrutɲik/](https://www.youtube.com/watch?v=JaEWtfozcSk)) - a bash script that helps you write correct Python code.\n\nIt can also ruin your day by letting you know how much your code sucks.\n\nSo like... enjoy.\n\n\u003cdiv align=\"center\"\u003e\n\n![o2](https://github.com/c0m4r/okrutnik/assets/6292788/11ef392b-1be8-4ff6-b6c9-2ab6603e7cc4)\n\n\u003c/div\u003e\n\n## 📦 Deps\n\nIt uses a bundle of different linters and a code formatter:\n\n[bandit](https://bandit.readthedocs.io/) \n| [black](https://github.com/psf/black) \n| [codespell](https://github.com/codespell-project/codespell) \n| [mypy](https://mypy.readthedocs.io/) \n| [pylint](https://github.com/pylint-dev/pylint) \n| [pyright](https://github.com/microsoft/pyright) \n| [ruff](https://github.com/astral-sh/ruff)\n\n## 💾 Installation\n\nDownload\n\n```\nwget https://raw.githubusercontent.com/c0m4r/okrutnik/main/okrutnik.sh\necho \"5f429b9afc27fd37f1082c6979379c8ddd316e5caa2267fa6714f969a5ebcd39 okrutnik.sh\" | sha256sum -c || rm -f okrutnik.sh\nchmod +x okrutnik.sh\n```\n\nJust put it where your project is and install the required modules:\n\n```\n./okrutnik.sh --install\n```\n\nInclude custom modules used in your project with `-r requirements.txt`:\n\n```\n./okrutnik.sh --install -r requirements.txt\n```\n\nOkrutnik will create a virtual Python environment in .okrutnik_venv for itself and store its tools in order to perform a scan.\n\nYou can `--update` or `--uninstall` them at any time.\n\n## 🚀 Usage\n\n```\n./okrutnik.sh target.py\n```\n\nTo stop on failed linters or errors:\n\n```\n./okrutnik.sh --stop target.py\n```\n\n**Be advised**: it will reformat your code by default. Make a backup or comment out black before use.\n\n```\nUsage: ./okrutnik.sh [options] \u003ctarget\u003e\n\nBefore \u003ctarget\u003e:\n -s, --stop       Exit on failed linters or errors\n\nStandalone:\n -h, --help       Print this help message\n --update         Update installed tools\n --uninstall      Remove installed tools\n```\n\n## 📜 License\n\n\u003e Okrutnik: a bash script that helps you write correct Python code\\\n\u003e Copyright (C) 2024-2026 c0m4r\n\u003e\n\u003e This program is free software: you can redistribute it and/or modify\\\n\u003e it under the terms of the GNU General Public License as published by\\\n\u003e the Free Software Foundation, either version 3 of the License, or\\\n\u003e (at your option) any later version.\n\u003e\n\u003e This program is distributed in the hope that it will be useful,\\\n\u003e but WITHOUT ANY WARRANTY; without even the implied warranty of\\\n\u003e MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\\n\u003e GNU General Public License for more details.\n\u003e\n\u003e You should have received a copy of the GNU General Public License\\\n\u003e along with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n## 💸 Funding\n\nIf you found this script helpful, please consider [making a donation](junglekeepers.org/donate) on my behalf. Thank you.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc0m4r%2Fokrutnik","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fc0m4r%2Fokrutnik","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc0m4r%2Fokrutnik/lists"}