bash-classify 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. bash_classify/__init__.py +14 -0
  2. bash_classify/__main__.py +3 -0
  3. bash_classify/classifier.py +244 -0
  4. bash_classify/cli.py +110 -0
  5. bash_classify/commands/apt.yaml +23 -0
  6. bash_classify/commands/awk.yaml +5 -0
  7. bash_classify/commands/basename.yaml +5 -0
  8. bash_classify/commands/bash.yaml +18 -0
  9. bash_classify/commands/brew.yaml +25 -0
  10. bash_classify/commands/builtin.yaml +6 -0
  11. bash_classify/commands/cargo.yaml +29 -0
  12. bash_classify/commands/cat.yaml +5 -0
  13. bash_classify/commands/chgrp.yaml +8 -0
  14. bash_classify/commands/chmod.yaml +8 -0
  15. bash_classify/commands/chown.yaml +8 -0
  16. bash_classify/commands/column.yaml +5 -0
  17. bash_classify/commands/comm.yaml +5 -0
  18. bash_classify/commands/command.yaml +10 -0
  19. bash_classify/commands/cp.yaml +5 -0
  20. bash_classify/commands/curl.yaml +28 -0
  21. bash_classify/commands/cut.yaml +5 -0
  22. bash_classify/commands/date.yaml +8 -0
  23. bash_classify/commands/df.yaml +5 -0
  24. bash_classify/commands/diff.yaml +5 -0
  25. bash_classify/commands/dig.yaml +5 -0
  26. bash_classify/commands/dirname.yaml +5 -0
  27. bash_classify/commands/docker.yaml +152 -0
  28. bash_classify/commands/du.yaml +5 -0
  29. bash_classify/commands/echo.yaml +5 -0
  30. bash_classify/commands/env.yaml +14 -0
  31. bash_classify/commands/expand.yaml +5 -0
  32. bash_classify/commands/false.yaml +5 -0
  33. bash_classify/commands/file.yaml +5 -0
  34. bash_classify/commands/find.yaml +27 -0
  35. bash_classify/commands/fmt.yaml +5 -0
  36. bash_classify/commands/fold.yaml +5 -0
  37. bash_classify/commands/free.yaml +5 -0
  38. bash_classify/commands/gawk.yaml +5 -0
  39. bash_classify/commands/git.yaml +441 -0
  40. bash_classify/commands/go.yaml +38 -0
  41. bash_classify/commands/grep.yaml +5 -0
  42. bash_classify/commands/groups.yaml +5 -0
  43. bash_classify/commands/gunzip.yaml +5 -0
  44. bash_classify/commands/gzip.yaml +5 -0
  45. bash_classify/commands/head.yaml +5 -0
  46. bash_classify/commands/helm.yaml +127 -0
  47. bash_classify/commands/hostname.yaml +5 -0
  48. bash_classify/commands/id.yaml +5 -0
  49. bash_classify/commands/install.yaml +5 -0
  50. bash_classify/commands/join.yaml +5 -0
  51. bash_classify/commands/journalctl.yaml +12 -0
  52. bash_classify/commands/jq.yaml +5 -0
  53. bash_classify/commands/kill.yaml +5 -0
  54. bash_classify/commands/killall.yaml +5 -0
  55. bash_classify/commands/kubectl.yaml +190 -0
  56. bash_classify/commands/less.yaml +5 -0
  57. bash_classify/commands/ln.yaml +5 -0
  58. bash_classify/commands/ls.yaml +5 -0
  59. bash_classify/commands/make.yaml +19 -0
  60. bash_classify/commands/md5sum.yaml +5 -0
  61. bash_classify/commands/mkdir.yaml +5 -0
  62. bash_classify/commands/more.yaml +5 -0
  63. bash_classify/commands/mv.yaml +5 -0
  64. bash_classify/commands/netstat.yaml +5 -0
  65. bash_classify/commands/nice.yaml +9 -0
  66. bash_classify/commands/nl.yaml +5 -0
  67. bash_classify/commands/node.yaml +5 -0
  68. bash_classify/commands/nohup.yaml +6 -0
  69. bash_classify/commands/npm.yaml +65 -0
  70. bash_classify/commands/nslookup.yaml +5 -0
  71. bash_classify/commands/paste.yaml +5 -0
  72. bash_classify/commands/ping.yaml +5 -0
  73. bash_classify/commands/pip.yaml +29 -0
  74. bash_classify/commands/pip3.yaml +29 -0
  75. bash_classify/commands/pkill.yaml +5 -0
  76. bash_classify/commands/poetry.yaml +74 -0
  77. bash_classify/commands/printenv.yaml +5 -0
  78. bash_classify/commands/printf.yaml +5 -0
  79. bash_classify/commands/ps.yaml +5 -0
  80. bash_classify/commands/pwd.yaml +5 -0
  81. bash_classify/commands/python.yaml +5 -0
  82. bash_classify/commands/python3.yaml +5 -0
  83. bash_classify/commands/read.yaml +5 -0
  84. bash_classify/commands/readlink.yaml +5 -0
  85. bash_classify/commands/realpath.yaml +5 -0
  86. bash_classify/commands/rev.yaml +5 -0
  87. bash_classify/commands/rm.yaml +5 -0
  88. bash_classify/commands/rsync.yaml +10 -0
  89. bash_classify/commands/scp.yaml +5 -0
  90. bash_classify/commands/sed.yaml +12 -0
  91. bash_classify/commands/seq.yaml +5 -0
  92. bash_classify/commands/sh.yaml +12 -0
  93. bash_classify/commands/sha1sum.yaml +5 -0
  94. bash_classify/commands/sha256sum.yaml +5 -0
  95. bash_classify/commands/sort.yaml +8 -0
  96. bash_classify/commands/ss.yaml +5 -0
  97. bash_classify/commands/ssh.yaml +39 -0
  98. bash_classify/commands/stat.yaml +5 -0
  99. bash_classify/commands/strace.yaml +18 -0
  100. bash_classify/commands/sudo.yaml +22 -0
  101. bash_classify/commands/systemctl.yaml +56 -0
  102. bash_classify/commands/tac.yaml +5 -0
  103. bash_classify/commands/tail.yaml +5 -0
  104. bash_classify/commands/tar.yaml +22 -0
  105. bash_classify/commands/tee.yaml +5 -0
  106. bash_classify/commands/terraform.yaml +68 -0
  107. bash_classify/commands/test.yaml +5 -0
  108. bash_classify/commands/time.yaml +6 -0
  109. bash_classify/commands/timeout.yaml +15 -0
  110. bash_classify/commands/top.yaml +5 -0
  111. bash_classify/commands/touch.yaml +5 -0
  112. bash_classify/commands/tr.yaml +5 -0
  113. bash_classify/commands/traceroute.yaml +5 -0
  114. bash_classify/commands/true.yaml +5 -0
  115. bash_classify/commands/type.yaml +5 -0
  116. bash_classify/commands/uname.yaml +5 -0
  117. bash_classify/commands/unexpand.yaml +5 -0
  118. bash_classify/commands/uniq.yaml +5 -0
  119. bash_classify/commands/unzip.yaml +7 -0
  120. bash_classify/commands/uptime.yaml +5 -0
  121. bash_classify/commands/uv.yaml +117 -0
  122. bash_classify/commands/wc.yaml +5 -0
  123. bash_classify/commands/wget.yaml +5 -0
  124. bash_classify/commands/whereis.yaml +5 -0
  125. bash_classify/commands/which.yaml +5 -0
  126. bash_classify/commands/whoami.yaml +5 -0
  127. bash_classify/commands/xargs.yaml +25 -0
  128. bash_classify/commands/xmllint.yaml +5 -0
  129. bash_classify/commands/yes.yaml +5 -0
  130. bash_classify/commands/yq.yaml +8 -0
  131. bash_classify/commands/zip.yaml +5 -0
  132. bash_classify/commands/zsh.yaml +12 -0
  133. bash_classify/database.py +257 -0
  134. bash_classify/matcher.py +702 -0
  135. bash_classify/models.py +148 -0
  136. bash_classify/parser.py +525 -0
  137. bash_classify/py.typed +0 -0
  138. bash_classify-0.1.0.dist-info/METADATA +147 -0
  139. bash_classify-0.1.0.dist-info/RECORD +142 -0
  140. bash_classify-0.1.0.dist-info/WHEEL +4 -0
  141. bash_classify-0.1.0.dist-info/entry_points.txt +2 -0
  142. bash_classify-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,147 @@
1
+ Metadata-Version: 2.4
2
+ Name: bash-classify
3
+ Version: 0.1.0
4
+ Summary: Classify bash commands as READONLY, WRITE, DANGEROUS, or UNKNOWN
5
+ Project-URL: Homepage, https://github.com/fprochazka/bash-classify
6
+ Project-URL: Repository, https://github.com/fprochazka/bash-classify
7
+ Project-URL: Issues, https://github.com/fprochazka/bash-classify/issues
8
+ Project-URL: Documentation, https://github.com/fprochazka/bash-classify/blob/main/SPEC.md
9
+ Author-email: Filip Procházka <dev@fprochazka.cz>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: bash,classification,cli,security,tree-sitter
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Security
21
+ Classifier: Topic :: Software Development :: Libraries
22
+ Classifier: Topic :: System :: Shells
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.12
25
+ Requires-Dist: pyyaml>=6.0
26
+ Requires-Dist: tree-sitter-bash>=0.23
27
+ Requires-Dist: tree-sitter>=0.24
28
+ Description-Content-Type: text/markdown
29
+
30
+ # bash-classify
31
+
32
+ Classify bash commands by their side-effect risk level.
33
+
34
+ ## What it does
35
+
36
+ bash-classify parses bash expressions using tree-sitter, classifies each command against a database of 120+ known commands, and outputs a structured JSON verdict. Commands are classified into four levels: `READONLY`, `WRITE`, `DANGEROUS`, and `UNKNOWN`.
37
+
38
+ Designed primarily as a [Claude Code](https://docs.anthropic.com/en/docs/claude-code) hook to automatically allow safe, read-only commands while flagging risky ones for human review.
39
+
40
+ ## Installation
41
+
42
+ ```bash
43
+ uv tool install bash-classify
44
+ # or
45
+ pip install bash-classify
46
+ ```
47
+
48
+ ## Quick start
49
+
50
+ ```bash
51
+ $ echo 'kubectl get pods -n production' | bash-classify | jq '.classification'
52
+ "READONLY"
53
+
54
+ $ echo 'git push --force origin main' | bash-classify | jq '.classification'
55
+ "DANGEROUS"
56
+
57
+ $ echo 'cp file.txt /etc/config' | bash-classify | jq '.classification'
58
+ "DANGEROUS"
59
+
60
+ $ echo 'find . -name "*.pyc" -delete' | bash-classify | jq '.classification'
61
+ "DANGEROUS"
62
+ ```
63
+
64
+ ## Claude Code hook
65
+
66
+ Install as a Claude Code hook to auto-allow read-only commands and require approval for everything else:
67
+
68
+ ```json
69
+ {
70
+ "hooks": {
71
+ "PreToolUse": [
72
+ {
73
+ "matcher": "Bash",
74
+ "hooks": [
75
+ {
76
+ "type": "command",
77
+ "command": "echo \"$CLAUDE_TOOL_INPUT\" | jq -r '.command' | bash-classify",
78
+ "timeout": 5000,
79
+ "on_output": [
80
+ {
81
+ "matcher": "\"classification\": \"READONLY\"",
82
+ "action": "approve"
83
+ }
84
+ ]
85
+ }
86
+ ]
87
+ }
88
+ ]
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Command database
94
+
95
+ The classification database includes 120+ command definitions covering common Unix utilities, package managers, container tools, cloud CLIs, and more.
96
+
97
+ - See [docs/classification-guidance.md](docs/classification-guidance.md) for how to add new commands
98
+ - YAML definitions are validated against a JSON Schema for IDE autocomplete and CI checks
99
+
100
+ ## Classification levels
101
+
102
+ | Level | Description | Examples |
103
+ |---|---|---|
104
+ | `READONLY` | No side effects, safe to auto-approve | `ls`, `cat`, `grep`, `kubectl get` |
105
+ | `WRITE` | Modifies local files or state | `mkdir`, `cp`, `git commit` |
106
+ | `DANGEROUS` | Destructive, system-wide, or irreversible | `rm -rf`, `git push --force`, `chmod` |
107
+ | `UNKNOWN` | Command not in database | Any unrecognized command |
108
+
109
+ ## How it works
110
+
111
+ - **Tree-sitter parsing** -- bash expressions are parsed into an AST for accurate command extraction, handling pipes, subshells, and command substitution
112
+ - **YAML command database** -- each command has classification rules with subcommand and option matching
113
+ - **Subcommand matching** -- `kubectl get` and `kubectl delete` can have different classifications
114
+ - **Delegation for wrappers** -- commands like `xargs`, `sudo`, and `env` delegate classification to the inner command
115
+
116
+ ## Python API
117
+
118
+ ```python
119
+ from bash_classify import classify_expression
120
+
121
+ result = classify_expression("kubectl get pods")
122
+ print(result.classification) # Classification.READONLY
123
+ ```
124
+
125
+ See [SPEC.md](SPEC.md) for the full specification.
126
+
127
+ ## Development
128
+
129
+ ```bash
130
+ git clone https://github.com/fprochazka/bash-classify.git
131
+ cd bash-classify
132
+ uv sync --dev
133
+ ```
134
+
135
+ Run tests and linting before committing:
136
+
137
+ ```bash
138
+ uv run ruff format .
139
+ uv run ruff check .
140
+ uv run pytest
141
+ ```
142
+
143
+ To add or modify command definitions, see [docs/classification-guidance.md](docs/classification-guidance.md). All YAML files in `src/bash_classify/commands/` are validated against a [JSON Schema](schemas/command.schema.json) — your IDE will provide autocomplete if it supports the `# $schema:` comment.
144
+
145
+ ## License
146
+
147
+ [MIT](LICENSE)
@@ -0,0 +1,142 @@
1
+ bash_classify/__init__.py,sha256=SmgoVAWuW9SJ6au9wjJOmj8uMtq1tomUBbm5fzZhHKo,438
2
+ bash_classify/__main__.py,sha256=ZVGqh6yuvVPHCzpUDVbnVj6A8nNT8V5-pn1Lt0ahUzo,43
3
+ bash_classify/classifier.py,sha256=hNCbRp54J1s7i5z29xFxmK0x1OywqtilRw86jFNXEyw,8815
4
+ bash_classify/cli.py,sha256=84WhLdHEkeeP3WRsH1jnAKUlPSJZUfdzwBd8-bagFJk,3321
5
+ bash_classify/database.py,sha256=UlUlNQhqt-wkAai0ZFMi5S7k-irSSgSA43jjh36F4fU,8362
6
+ bash_classify/matcher.py,sha256=OINrRZR8mZhjk-eKgtJ3Lw_BNopPz1UfHsS75I1MbLA,25083
7
+ bash_classify/models.py,sha256=xmC05HbDjPCA7fGzL6fM9TJi_2hc__sLP4vqm0JNtC0,4021
8
+ bash_classify/parser.py,sha256=vvt7I-FL8hLZcHJ9NKVX_4SuZ1BL0OKbd_BQdS-XchI,18166
9
+ bash_classify/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ bash_classify/commands/apt.yaml,sha256=0v6DPXZniW4jorCvLZoPmCDQjkqkwmmWUEczCmG9Gqg,488
11
+ bash_classify/commands/awk.yaml,sha256=emkjOaTMhCUPIO-u_DWGaRI5jY7pXQXJe5z_et2T71s,161
12
+ bash_classify/commands/basename.yaml,sha256=kzaZDdkFNXQpmmqiNQFcrIb8e_hODExUq24NQWKZD34,162
13
+ bash_classify/commands/bash.yaml,sha256=GdHrrjYDY1Ky5HDJKkf3NUbxbZzr0aWl-8y_9CDscvI,336
14
+ bash_classify/commands/brew.yaml,sha256=UeTrsCHbaWBJxNdtSbO8yiGHI7ftPA48Kx31n2kgkGQ,513
15
+ bash_classify/commands/builtin.yaml,sha256=QAUYfcJfx3dMhhp1pGtqHrbyHnP90WH7pz6YY8M0uEw,173
16
+ bash_classify/commands/cargo.yaml,sha256=3ep1MDs-xUh22pRD_mwjpqh6Tdi8wbJU0rE4bg_jCIY,584
17
+ bash_classify/commands/cat.yaml,sha256=6JyeCjyOFYiuIN54ynkkozhaY5SspaYUx5cmE6sLypY,143
18
+ bash_classify/commands/chgrp.yaml,sha256=C5dyOtPv0NwaS5zPwtB8U6BnzDggnMwMrqKlhvtZfkk,237
19
+ bash_classify/commands/chmod.yaml,sha256=fVcD7Hglnj8u9sw6yIJqu1kTKHVOKcaz_2IVjccOIS8,227
20
+ bash_classify/commands/chown.yaml,sha256=fLgYYqxXI_Vv4A--lC0D_uxfsTr0hFL1Zb_WVbYkQBo,233
21
+ bash_classify/commands/column.yaml,sha256=_1cL2Q_Dk_1sD-dGimdenG8ux9LiiQLznHgsnCzX4o0,153
22
+ bash_classify/commands/comm.yaml,sha256=7UdtrP8qICsA8pffgRAmApyi3ngsdhg7a_p2uE7DNNs,154
23
+ bash_classify/commands/command.yaml,sha256=EIXwbP3AeodSGQ5Dqa5Jsms6nccZp-lub2ZoodCrqbE,219
24
+ bash_classify/commands/cp.yaml,sha256=Mo7a1miMIFTP15oAI6IyReqv-Q1iuY9T6SFCs9FhiZI,138
25
+ bash_classify/commands/curl.yaml,sha256=U1kRaf2K97vw-j342Tzyz4PcisQ_fVsRoRSQarRaiOE,966
26
+ bash_classify/commands/cut.yaml,sha256=ffgYG4vXwLKVOAKOsLAMHyTyeVLpCuiHqdO1F4i6CZA,155
27
+ bash_classify/commands/date.yaml,sha256=PKCY9A_uCpRJdH5-WFEuHah5U86uWHLSC3TzrP3WRzU,278
28
+ bash_classify/commands/df.yaml,sha256=o3SNXEA0DzFmrubQOa-7uX2nr28-VIDpCy0ed-ie5eA,150
29
+ bash_classify/commands/diff.yaml,sha256=Oc7Q37gk-W74eQy9fZRYZ4R6LxB9UYJZEqRm-l7Y2Og,143
30
+ bash_classify/commands/dig.yaml,sha256=VJ_YYymjffWddypr4R1JQrhBJGsWmHb485z1MBXh3Fs,134
31
+ bash_classify/commands/dirname.yaml,sha256=KUl45jQjoF9PLsB5y-VKjR_VMEKNR1X58GnXxvgZrvU,155
32
+ bash_classify/commands/docker.yaml,sha256=EpfMh7UPxH-KIze8U4HdruqE773F8Zw3zQQCoxF2ws0,3059
33
+ bash_classify/commands/du.yaml,sha256=aHiuHITExMygXVETRL5qBxrOOYnUExlO_Yza_C26lsY,140
34
+ bash_classify/commands/echo.yaml,sha256=yCxXYfWUGiDUyap1jSD6cAPoHeHd4ioz_qIFcEoaAwI,139
35
+ bash_classify/commands/env.yaml,sha256=DmtusWzjQ4-UG3u02pWTJRS5YBKUujiJvlL1R-0hwsU,444
36
+ bash_classify/commands/expand.yaml,sha256=I8wZiVXFwnqJLL0odyXcKAWHP8mKacvWPXwtOml-08E,141
37
+ bash_classify/commands/false.yaml,sha256=-dxa5F4WSlcKieid8vUZ_LZ032DrRnwlU5Upxm04JF4,154
38
+ bash_classify/commands/file.yaml,sha256=N4M41hDaTGIh3q5mFnX7iNwLvzJSS87h_AiF2HedaqE,136
39
+ bash_classify/commands/find.yaml,sha256=trydWCEbfo-xNgq5x10zOac1M8JjnlxOIaNgszhy0w0,603
40
+ bash_classify/commands/fmt.yaml,sha256=UeIAITaJ3z96n45WrUXCebB97GtL3cV7h1eI-qwyMpc,145
41
+ bash_classify/commands/fold.yaml,sha256=xB8LQfnwpbITZPWi_ZWod4H8-atswnn6uK_usUM0qyw,163
42
+ bash_classify/commands/free.yaml,sha256=zgQc4tqKJWOSY-w3VX0h6dvm2WmJKwIvtK_tJSAGnAo,155
43
+ bash_classify/commands/gawk.yaml,sha256=hAQXCdbKqZID5NItX00c_5X6Ee8AIdVZ03CwzAUDOt8,157
44
+ bash_classify/commands/git.yaml,sha256=hqMPIp88w8Bkk8QYaJ2BuVNRFKaVuG9DlKBh7XrzxDI,9629
45
+ bash_classify/commands/go.yaml,sha256=xQDIATPTx9GTiXQXdI1FtDQnNpUQn4-w520LG5BFSdw,760
46
+ bash_classify/commands/grep.yaml,sha256=lNgadZdeqypAKKi1K4gRU7cCFr54JdJfnykRWYUyCPk,145
47
+ bash_classify/commands/groups.yaml,sha256=0eDqIXB14eS_Hqai71-9CdiIjMvRBta9Ng5_DjWuScA,148
48
+ bash_classify/commands/gunzip.yaml,sha256=cIYsNOSq2UPixsJTcDmyxR5Eq5bWFq4gt9FrlcNwQ2c,148
49
+ bash_classify/commands/gzip.yaml,sha256=3LoffJTwOd_eX0vbIUhYffOiN0A3My93FlbEyhqcsrI,153
50
+ bash_classify/commands/head.yaml,sha256=hGxQR8vNzWfb8pIwtsoEv041dAQ9W95M3ezvKAYE27I,147
51
+ bash_classify/commands/helm.yaml,sha256=b7ToIp7ZROpvMavgR5f2-TjWwb_pgJxNadUqQG-2fFY,2564
52
+ bash_classify/commands/hostname.yaml,sha256=AQakK9TvC_TpbCuuiqod2_tI0Ht7m7W1maP37eOiFS8,149
53
+ bash_classify/commands/id.yaml,sha256=fti3UJKUTpr6KkDJm-jGbJSZkcgtfV0jb4FaVZ55eKA,158
54
+ bash_classify/commands/install.yaml,sha256=UWcdBMrmkThBr9tdCIWqijZRjFtWsDshu2_mgLqkx4U,146
55
+ bash_classify/commands/join.yaml,sha256=vx6lCUPwSGE7x--6BUShHCxtubjnS_LigN5BthrYTxE,158
56
+ bash_classify/commands/journalctl.yaml,sha256=JI0s2uGWernZvUjoKwhaxbyoK6Nc9PgB-i1NiAxnNFE,425
57
+ bash_classify/commands/jq.yaml,sha256=JS4HZ4-XhU1_l-3JrT5H8vfwT2KP6FN1ZE1yOpn7QFU,142
58
+ bash_classify/commands/kill.yaml,sha256=R3Yv4wWeXKaNnp0IgzgDINbQOMO3DWhFkbsCBV-tUx0,143
59
+ bash_classify/commands/killall.yaml,sha256=77ZokaFkTtCB2jjSynqbXLOD4OqMtJwmVYtXnrH5J3o,143
60
+ bash_classify/commands/kubectl.yaml,sha256=7iQFvJ0ZK_jdRGg4AIThhKojZV1os6CmXv76Ja-frPE,4004
61
+ bash_classify/commands/less.yaml,sha256=zHlFOz6ACsgqxKOtHlwTxJlBElieuc-CE8eXC2qycKk,158
62
+ bash_classify/commands/ln.yaml,sha256=ZlY-e6MHwqkQyo8MvaMXhwzY-9HlSIORsq44onCWRX0,136
63
+ bash_classify/commands/ls.yaml,sha256=47ukvLexn0ccURat6LAt8i4TwT3EqXm1p8A31DWDkiw,138
64
+ bash_classify/commands/make.yaml,sha256=EBWJe-5YiathSfpNipS-zYutn0yXf951yyLtYc57kIY,602
65
+ bash_classify/commands/md5sum.yaml,sha256=klL5-HVeD7oU4LBHE_wQFtb9oBlvfe8HcSYCNevZp_k,155
66
+ bash_classify/commands/mkdir.yaml,sha256=3FbiKN2MTRp4nIMr8Wur47DWfndrRxilXuu7rtYWRcU,133
67
+ bash_classify/commands/more.yaml,sha256=qNuGmUKSJ35XO5Pgp4O5kc2ns8BjX3kASOn5LIidgt4,156
68
+ bash_classify/commands/mv.yaml,sha256=ofDIA8cxoa3o5NBMSPHvfXlP9PDuP5fDDMG1xjTIqKc,148
69
+ bash_classify/commands/netstat.yaml,sha256=ETse8B6tsDLFz8YbZkKXR_FPUkDhK5vD2y06li3wP6Y,160
70
+ bash_classify/commands/nice.yaml,sha256=80Y0mBF8CfUhGVMQnOdrhFKRSaKEoiFm_IGXOGPipvk,269
71
+ bash_classify/commands/nl.yaml,sha256=gFN0ZcdmTMnzUgHSDqY8Tjz4jx77k-gRDgBCf8TdpX0,136
72
+ bash_classify/commands/node.yaml,sha256=DD4Ix9cjzWo1Hju9pef1yOJFTuaPAt71QMLsTQ_bG-o,155
73
+ bash_classify/commands/nohup.yaml,sha256=S3vCrfW6fT-ucAL5gi_dCekAVczASULJK6pjTG_Ghrw,168
74
+ bash_classify/commands/npm.yaml,sha256=DHmoX86_n8NlKSEECzEZkvkZJnRiS6HjZjl7JOxygk4,1233
75
+ bash_classify/commands/nslookup.yaml,sha256=bnz3-TxGb_-xBHYeQsluaxlwmoS_GczNfnpCikp2Fqg,162
76
+ bash_classify/commands/paste.yaml,sha256=GbvnsV6m_qNL3hpXj91UrIkjr13dQzodoHt3toeCo4c,151
77
+ bash_classify/commands/ping.yaml,sha256=gDoe-z9gr_PpPj6M-h5q6ZRzHID6a_QMb078XOeAEhU,157
78
+ bash_classify/commands/pip.yaml,sha256=i-b2dnoM0NKw8j7NemfgIQqvDF5Lamf8TBZ3nh-NulU,575
79
+ bash_classify/commands/pip3.yaml,sha256=DqNbXe5WwND_Fiaib8821jnqYD2JRVcL7C1W6x0umKE,576
80
+ bash_classify/commands/pkill.yaml,sha256=SCQ372wktRVWvugE6e48q8NzyzPUxUVAeBTOxphgnPA,163
81
+ bash_classify/commands/poetry.yaml,sha256=iMOy2sTtM6qRGvnJ_d53UOazsxX-jPU0cqqWamPdNe8,1432
82
+ bash_classify/commands/printenv.yaml,sha256=MtjIPZAwqchso_fqTBUlEvI_Jnen3_5Eu2Ga3LQtI8Y,163
83
+ bash_classify/commands/printf.yaml,sha256=bE9iaJKbTzXbVeWs_WTUOXSlWh6sPHm7hbvsJ2yWYmc,140
84
+ bash_classify/commands/ps.yaml,sha256=PXJOmfu0uVpWFXXge-qZ7ogJZzsUsQ1S7iwZGsAdpTk,153
85
+ bash_classify/commands/pwd.yaml,sha256=gUykLHxYauAckcTltMoLUYJgnJk5HfhdmSkmdPjPSZw,155
86
+ bash_classify/commands/python.yaml,sha256=GTDMu50KrPaQd5Cq0_PNwiRAwAnOm2Ui-FN_tGgL8qM,147
87
+ bash_classify/commands/python3.yaml,sha256=lmKlID85zFAvbW77YtJqNdKzsCbc7oiu3j8JxtySuzo,150
88
+ bash_classify/commands/read.yaml,sha256=iD_C7R-jFweaZzrhRRFVIvcOYhYa6mJgCzJPtbq6Yhk,148
89
+ bash_classify/commands/readlink.yaml,sha256=pYCiy4D2q5yb3QzAWycvz5aqpIQrwXhaFP5J8lbmlLs,169
90
+ bash_classify/commands/realpath.yaml,sha256=q0jB5ZdeVL0cHcxVZBpV0DPsrCHcpCMV0Ome3LsYAj0,153
91
+ bash_classify/commands/rev.yaml,sha256=q9-bSILNgE_kRzEfZvavcyXsKutaNwLJGSfn8BZrCjc,144
92
+ bash_classify/commands/rm.yaml,sha256=FPMc0kTZ777vFgYuvetzLQslAye_6UHBxfiBPABzXvk,143
93
+ bash_classify/commands/rsync.yaml,sha256=-e0A3-olhhp1bj4yc5nmfx0v3fRBbO19krW6RYzwKgA,307
94
+ bash_classify/commands/scp.yaml,sha256=B_Ez9F5CdSeoR-Woynbran8uFNrqfjRCwhu3uD0P0zk,144
95
+ bash_classify/commands/sed.yaml,sha256=oXlS1ATD8hQ703U-StVYCOQUAhcbKgtR63DhK2Pj-P8,395
96
+ bash_classify/commands/seq.yaml,sha256=uNVRyOBLsg_txm90hWbt5rIC1v2abEq556g_GZs0AV0,143
97
+ bash_classify/commands/sh.yaml,sha256=0JHy2w5wMi2qcC6yt7JKx_Sx3MW5yxKIK39hy0w1HeU,257
98
+ bash_classify/commands/sha1sum.yaml,sha256=w7c7BuiOsiXRx2mmkskXWck-se_aP1cC6AtqMSpx3c8,158
99
+ bash_classify/commands/sha256sum.yaml,sha256=rmP5JdkiVn7KiA_lfg7-ukWDB7ngsXdC1vUYUbUBQpg,162
100
+ bash_classify/commands/sort.yaml,sha256=iAQfP9CSMGzkOymC3Bnw7RgqT26kcVLfAJuqwnFKLas,259
101
+ bash_classify/commands/ss.yaml,sha256=LGR6oGZdAVBUNQSZF-Zm20XXx2xsEsgtvReTDT614sI,145
102
+ bash_classify/commands/ssh.yaml,sha256=qL0IGIUpJqQChXyEHwdWOShCUavT9EJCZsttwUI3O50,705
103
+ bash_classify/commands/stat.yaml,sha256=2y8mwLhM4T1pPturW-YhQTgJmO4_MCQtC2wxdiunzQk,151
104
+ bash_classify/commands/strace.yaml,sha256=k12sibDb9oY55K8Hl4j-d8eTfF_maN0Hq8L6FSTI4hs,346
105
+ bash_classify/commands/sudo.yaml,sha256=a8RzIzbnS4XiPvt3HFgIRfiMSYUlDOoB3rwvoyTOjAE,502
106
+ bash_classify/commands/systemctl.yaml,sha256=5KDMTNtBGoJN5yqPhrrFZ24lcEWGclfRgSfZ9s7L_Kk,1199
107
+ bash_classify/commands/tac.yaml,sha256=D5v8E1ucwHgDLHnZUE6OxsRQkwqJQsrnDfzynOmULdk,154
108
+ bash_classify/commands/tail.yaml,sha256=AyaLkUjdUj6bYbu-to4t-MQ1_mNDzl4g4IooUU2vwpk,146
109
+ bash_classify/commands/tar.yaml,sha256=19QSxyjOJQKww4btS22xOipNbN0dr4PXlFGmqTIpO2o,632
110
+ bash_classify/commands/tee.yaml,sha256=CdpgWiwTHpwxvEEZGudiq9FoehKkuboVNCSx7P5PNLo,158
111
+ bash_classify/commands/terraform.yaml,sha256=KLNSxJ-xTcw2pqfRFDZ7fsFYhvpVZDJWp-WNC5yJULc,1437
112
+ bash_classify/commands/test.yaml,sha256=OpAP8AbpBgIwJrfF-LWRJlOoRFyLM1Vi5zd2kdzhJ50,149
113
+ bash_classify/commands/time.yaml,sha256=r-b57UsX-OtI9255uDGRyMu7JRvzWSXL3NUSppjV5j8,163
114
+ bash_classify/commands/timeout.yaml,sha256=G_VW_7h8-JhZb73MG0tnWUOQEWvhLjsaX-_fhv0DFBA,400
115
+ bash_classify/commands/top.yaml,sha256=8x2h6E2ewBR6WahQ3TSFMRrHLe1bNZ_TADnO8JFSenE,152
116
+ bash_classify/commands/touch.yaml,sha256=j0ptg3NCsXNZxL60MPSnzbq5XGi0pDg8TBJ9XkeV7ZQ,159
117
+ bash_classify/commands/tr.yaml,sha256=4aOQVtMlqurTGdiJCtSsXLy1lE_lq8lSbXHLzcOJ2VM,145
118
+ bash_classify/commands/traceroute.yaml,sha256=jOzrNAhElj4XgGB8SYHcPwMzgHKLYmKSredhd_EsfKI,161
119
+ bash_classify/commands/true.yaml,sha256=TiJqirJ5RS7x1a8YSJtwwsIPzTfBnNjjBLrFLJxvj5I,150
120
+ bash_classify/commands/type.yaml,sha256=O080wKymRzy5K3J6eEN8ed72vwGn1D-P-EFb2P_Cuuk,155
121
+ bash_classify/commands/uname.yaml,sha256=uUWrQ_Em3aaWgR-zRR6hfn32I6PpnlbpCxJOdMyviI4,142
122
+ bash_classify/commands/unexpand.yaml,sha256=12bnas9BKfsmph6OOK-bptFgSfgVSPCXge-felQMvX4,143
123
+ bash_classify/commands/uniq.yaml,sha256=w0HylAk_nYRJXt2Pa_yj4C-KwmYHYGG9hyO7wjUOlr8,146
124
+ bash_classify/commands/unzip.yaml,sha256=_8KkTNwLvzbX-YgevMq154NC1twuv6jEbjlg6hkRjCU,183
125
+ bash_classify/commands/uptime.yaml,sha256=awMq8KjV5ad9UtqJyjWlGo1if08MyjoGjZrJ8BtKNHQ,160
126
+ bash_classify/commands/uv.yaml,sha256=rvfZLZ7IqBqH0heF-qDUC-BJ4LlH7WL673Qv9pr_dX4,2352
127
+ bash_classify/commands/wc.yaml,sha256=i4ui8-ooDNz-oPxUUHPxy13KkJKj8rF-cH51W1JSCyY,161
128
+ bash_classify/commands/wget.yaml,sha256=cDwYwcj1gSj7uvJb-CmIGuQn-7xNyFXU7POlB6A9Nag,153
129
+ bash_classify/commands/whereis.yaml,sha256=0xKBS_F4VRR9wMaRxkgMF8ENzSAnUiI6_40u4tHbnfA,176
130
+ bash_classify/commands/which.yaml,sha256=PH7psTXicFDAa8G_tfyH83RtGSVievFTHxatrA4O8AQ,146
131
+ bash_classify/commands/whoami.yaml,sha256=7jq7Xey2g1SDMIOPtU4JBN3R8DcvM1ZjPttSjCKXs74,144
132
+ bash_classify/commands/xargs.yaml,sha256=OC-OwE6Pl91kKTeH6arWRaSO5dXdGoZuxnN_xIUQbIw,686
133
+ bash_classify/commands/xmllint.yaml,sha256=v5kddm9uPEUKTGbyY047gFF1GnKxhFoc8KreEdO5Y-0,146
134
+ bash_classify/commands/yes.yaml,sha256=Ym1dYDH8tw7vPnJ5dmDapOgO1E9Y1ZT9MAYrZU3_-dI,157
135
+ bash_classify/commands/yq.yaml,sha256=FBbsBH_cGAvLlxXRX-3ew32mgUyUjQ9UaI_GXY4_Wjc,223
136
+ bash_classify/commands/zip.yaml,sha256=gjBMl6-YYztJo36EGRkMF35sSUeA6Cwl1OmTY8vraQM,157
137
+ bash_classify/commands/zsh.yaml,sha256=Pq7YePhL77WkHOTC9E0UT5TKxYki5aKBB8hveteQufg,250
138
+ bash_classify-0.1.0.dist-info/METADATA,sha256=tk_Va6bCSQR0R-nmgXNV4scgVRmJANnQL4ObewE_buA,4891
139
+ bash_classify-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
140
+ bash_classify-0.1.0.dist-info/entry_points.txt,sha256=xwnTNVBmuCxcSb9UVnvOFnBqwnVXe2CEckmTHvMwbMA,57
141
+ bash_classify-0.1.0.dist-info/licenses/LICENSE,sha256=eZtnvSqyJJ3SWkPFtKXbev_9_sAgaazbPcSgLAyW9vo,1072
142
+ bash_classify-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ bash-classify = bash_classify.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Filip Prochazka
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.