dktcli 1.0.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.
- devkittools/__init__.py +3 -0
- devkittools/__main__.py +6 -0
- devkittools/cli.py +179 -0
- devkittools/tools/__init__.py +1 -0
- devkittools/tools/bench.py +73 -0
- devkittools/tools/changeloggen.py +181 -0
- devkittools/tools/clean.py +110 -0
- devkittools/tools/colortool.py +126 -0
- devkittools/tools/commitwriter.py +199 -0
- devkittools/tools/contextpacker.py +226 -0
- devkittools/tools/cron.py +152 -0
- devkittools/tools/doctor.py +74 -0
- devkittools/tools/du.py +72 -0
- devkittools/tools/enc.py +131 -0
- devkittools/tools/envtool.py +141 -0
- devkittools/tools/findtool.py +119 -0
- devkittools/tools/gen.py +182 -0
- devkittools/tools/gx.py +184 -0
- devkittools/tools/hashtool.py +93 -0
- devkittools/tools/httptool.py +131 -0
- devkittools/tools/ignore.py +213 -0
- devkittools/tools/initproj.py +166 -0
- devkittools/tools/jsontool.py +200 -0
- devkittools/tools/net.py +114 -0
- devkittools/tools/portkiller.py +246 -0
- devkittools/tools/regextool.py +84 -0
- devkittools/tools/repostats.py +197 -0
- devkittools/tools/secrets_scan.py +108 -0
- devkittools/tools/serve.py +118 -0
- devkittools/tools/snip.py +94 -0
- devkittools/tools/system.py +157 -0
- devkittools/tools/timetool.py +130 -0
- devkittools/tools/todo.py +69 -0
- devkittools/tools/tree.py +86 -0
- devkittools/tools/watch.py +82 -0
- devkittools/utils.py +561 -0
- dktcli-1.0.0.dist-info/METADATA +148 -0
- dktcli-1.0.0.dist-info/RECORD +42 -0
- dktcli-1.0.0.dist-info/WHEEL +5 -0
- dktcli-1.0.0.dist-info/entry_points.txt +3 -0
- dktcli-1.0.0.dist-info/licenses/LICENSE +21 -0
- dktcli-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dktcli
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: devkittools: the developer's swiss army knife - 35+ zero-dependency CLI tools (ports, serve, json, git helpers, secrets scan, cron, and more) under one command: dkt
|
|
5
|
+
License: MIT
|
|
6
|
+
Keywords: cli,developer-tools,devtools,git,changelog,ollama,productivity,utilities,toolbox
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
14
|
+
Classifier: Topic :: Utilities
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Dynamic: license-file
|
|
19
|
+
|
|
20
|
+
# dkt - the developer's swiss army knife
|
|
21
|
+
|
|
22
|
+
**35+ small, sharp CLI tools under one command: `dkt`.**
|
|
23
|
+
Pure Python, **zero dependencies**, Windows / macOS / Linux. Colored output, spinners, aligned tables,
|
|
24
|
+
typo suggestions ("did you mean..."), tab-completion, and an interactive menu.
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
____ _ _______
|
|
28
|
+
| _ \| |/ /_ _| devkittools
|
|
29
|
+
| | | | ' / | | the developer's swiss army knife
|
|
30
|
+
| |_| | . \ | |
|
|
31
|
+
|____/|_|\_\ |_|
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install dktcli
|
|
38
|
+
dkt # see every tool
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
No PyPI? From this folder: `pip install .` - or on Windows just double-click **`install.bat`**
|
|
42
|
+
(it also fixes your PATH). If `dkt` isn't found, `python -m devkittools` always works.
|
|
43
|
+
|
|
44
|
+
**Update:** `dkt update` (PyPI installs) or double-click **`update.bat`** (does `git pull` if this is a clone).
|
|
45
|
+
**Uninstall:** `uninstall.bat` or `pip uninstall dktcli`.
|
|
46
|
+
|
|
47
|
+
## The tools
|
|
48
|
+
|
|
49
|
+
Run `dkt` for the list, `dkt <tool> -h` for examples of any tool, or `dkt menu` for an interactive launcher.
|
|
50
|
+
|
|
51
|
+
### Servers & Network
|
|
52
|
+
| Command | Alias | What it does |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `dkt portkiller` | `pk` | what's using port 3000? kill it |
|
|
55
|
+
| `dkt serve` | `sv` | static server with CORS, SPA mode, LAN URL, `--open` |
|
|
56
|
+
| `dkt http` | `req` | HTTP requests with pretty JSON, timing, headers, downloads |
|
|
57
|
+
| `dkt net` | | `ip` (local/public), `dns`, `check host:port` |
|
|
58
|
+
|
|
59
|
+
### Project & Code
|
|
60
|
+
| Command | Alias | What it does |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| `dkt repostats` | `rs` | lines per language, biggest files, git activity, health check |
|
|
63
|
+
| `dkt tree` | `tr` | pretty tree, respects .gitignore, `--sizes`, `--copy` |
|
|
64
|
+
| `dkt find` | `fd` | project-wide search (regex, context lines) + find files + safe find & replace |
|
|
65
|
+
| `dkt todo` | `td` | every TODO / FIXME / HACK with file:line |
|
|
66
|
+
| `dkt secrets` | `sec` | scan for leaked API keys / tokens / private keys (CI-friendly exit code) |
|
|
67
|
+
| `dkt clean` | `cl` | delete node_modules, `__pycache__`, caches with sizes + confirmation |
|
|
68
|
+
| `dkt du` | | what's eating my disk, with bars |
|
|
69
|
+
| `dkt watch` | `w` | re-run any command when files change |
|
|
70
|
+
| `dkt bench` | `bn` | benchmark / compare commands |
|
|
71
|
+
| `dkt env` | | env vars (secrets masked), PATH doctor, `.env` vs `.env.example` |
|
|
72
|
+
| `dkt ignore` | `gi` | .gitignore generator (python, node, unity, minecraft, godot...) |
|
|
73
|
+
| `dkt license` | `lic` | LICENSE file (MIT, ISC, BSD, Unlicense) |
|
|
74
|
+
| `dkt init` | `new` | scaffold python / node / web projects with git + license |
|
|
75
|
+
|
|
76
|
+
### Git
|
|
77
|
+
| Command | What it does |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `dkt gx log` | compact colored graph |
|
|
80
|
+
| `dkt gx branches [--prune]` | branch overview, delete merged branches |
|
|
81
|
+
| `dkt gx undo` / `wip` / `amend` / `sync` / `who` | everyday shortcuts |
|
|
82
|
+
| `dkt changeloggen` (`clg`) | CHANGELOG.md from conventional commits |
|
|
83
|
+
|
|
84
|
+
### AI helpers
|
|
85
|
+
| Command | What it does |
|
|
86
|
+
|---|---|
|
|
87
|
+
| `dkt projectcontextpacker` (`pcp`) | pack a project into one AI-prompt file, with token counts |
|
|
88
|
+
| `dkt commitwriter` (`cw`) | commit messages from your diff using local Ollama |
|
|
89
|
+
|
|
90
|
+
### Generate & Convert
|
|
91
|
+
| Command | Alias | What it does |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| `dkt gen` | `g` | `uuid` (v4/v7), `ulid`, `password`, `token`, `id`, `lorem`, `slug` |
|
|
94
|
+
| `dkt enc` | `e` | base64 / url / hex / html encode & decode |
|
|
95
|
+
| `dkt jwt` | | decode a JWT, shows expiry |
|
|
96
|
+
| `dkt hash` | `h` | md5/sha*/blake2, files, `--verify`, `--hmac` |
|
|
97
|
+
| `dkt time` | `tm` | epoch <-> date, date math, differences |
|
|
98
|
+
| `dkt color` | `col` | hex/rgb/hsl, live swatches, contrast ratio, palettes |
|
|
99
|
+
|
|
100
|
+
### Data & Text
|
|
101
|
+
| Command | Alias | What it does |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| `dkt json` | `js` | `fmt`, `min`, `get a.b[0]`, `keys`, `flat`, `csv`, `validate` (forgives comments / trailing commas) |
|
|
104
|
+
| `dkt regex` | `rx` | highlighted matches, named groups, `--replace` |
|
|
105
|
+
| `dkt cron` | | explain a cron expression + next runs |
|
|
106
|
+
| `dkt snip` | | personal snippet notebook (`add` / `get --copy` / `ls` / `rm`) |
|
|
107
|
+
|
|
108
|
+
### System & dkt itself
|
|
109
|
+
`dkt doctor` (system info + which dev tools you have), `dkt update`, `dkt config`, `dkt completion`, `dkt menu`, `dkt about`.
|
|
110
|
+
|
|
111
|
+
## Handy patterns
|
|
112
|
+
```bash
|
|
113
|
+
dkt js fmt --paste --copy # clean up JSON from your clipboard
|
|
114
|
+
cat resp.json | dkt js get data.items[0].id
|
|
115
|
+
dkt sv --open --spa # serve the folder, SPA fallback, open browser
|
|
116
|
+
dkt w -c "pytest -q" --clear # tests on every save
|
|
117
|
+
dkt sec --json || echo "secrets found" # CI gate
|
|
118
|
+
dkt tr --copy # paste a project tree into docs / AI chats
|
|
119
|
+
dkt new python mytool # new project, ready to go
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Tab completion
|
|
123
|
+
```powershell
|
|
124
|
+
dkt completion powershell | Out-String | Add-Content $PROFILE # PowerShell
|
|
125
|
+
```
|
|
126
|
+
```bash
|
|
127
|
+
eval "$(dkt completion bash)" # add to ~/.bashrc (zsh: dkt completion zsh)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Settings
|
|
131
|
+
`dkt config set author "Your Name"` (used by `license` / `init`), `dkt config set model qwen2.5-coder:7b` (commit writer).
|
|
132
|
+
Env vars `DKT_<KEY>` override the file. `NO_COLOR=1` disables colors, `DKT_ASCII=1` disables unicode symbols.
|
|
133
|
+
|
|
134
|
+
## Publishing to PyPI (maintainers)
|
|
135
|
+
1. The PyPI package is called **`dktcli`** (set in `pyproject.toml`); the command you type is still `dkt`.
|
|
136
|
+
2. Run **`publish.bat`** (builds, checks, uploads with your API token) - or use the included GitHub Action
|
|
137
|
+
(`.github/workflows/publish.yml`, trusted publishing) and just create a Release.
|
|
138
|
+
3. Bump `__version__` in `src/devkittools/__init__.py` for every release.
|
|
139
|
+
|
|
140
|
+
## Development
|
|
141
|
+
```bash
|
|
142
|
+
pip install -e .
|
|
143
|
+
python -m unittest discover -s tests
|
|
144
|
+
```
|
|
145
|
+
Adding a tool = one file in `src/devkittools/tools/` with a `META` tuple and a `register()` function, then add it to `MODULES` in `cli.py`.
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
MIT
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
devkittools/__init__.py,sha256=SMm6hPwcKS8fTkJ8z1-qReFqAbu0afEzktbYCV3Scqk,96
|
|
2
|
+
devkittools/__main__.py,sha256=4JMK66Wj4uLZTKbF-sT3LAxOsr6buig77PmOkJCRRxw,83
|
|
3
|
+
devkittools/cli.py,sha256=NGYC8Qw98PqfgqjfSg4fEzmbM7PL22axE5BlKFQMcDo,6534
|
|
4
|
+
devkittools/utils.py,sha256=eGUF21Z5v5YQR-O0vSbyghgFADdvlDHZSxNT7yeALBc,19205
|
|
5
|
+
devkittools/tools/__init__.py,sha256=qkuUFe0Ox2oSpPbHPp1eA-mNh9cOC6msSt50PlIIAio,92
|
|
6
|
+
devkittools/tools/bench.py,sha256=kSaN6hVU70kBzO8ouGUo67fj2_6_6hPAmSdflzH8YG8,2683
|
|
7
|
+
devkittools/tools/changeloggen.py,sha256=DC6Nh6uDrHrrdCQT9p-4FbO1ISHRAp5jRNxoD3sfKrU,7443
|
|
8
|
+
devkittools/tools/clean.py,sha256=6pSwdNxkUboZYz6eBEisy7UesJxypaHtLNQUN9YTbyQ,4063
|
|
9
|
+
devkittools/tools/colortool.py,sha256=kaUmqXVY4rztmOVajFP3m207kbclAMm38yv1Y5C0Vhc,4939
|
|
10
|
+
devkittools/tools/commitwriter.py,sha256=6r102ANyogIQyS1FsFSgKTe0dMMXmraUZ_bhkb9MsCk,8674
|
|
11
|
+
devkittools/tools/contextpacker.py,sha256=XYhW6jLRHVRE8Y6AAu1ejSFQCCCuLPNQ8MqJPJ2PibI,9528
|
|
12
|
+
devkittools/tools/cron.py,sha256=WsGrfmgJBKnHgAhRqrkkD8JeuoIfjwc8OcD2JNd346E,5483
|
|
13
|
+
devkittools/tools/doctor.py,sha256=aIpoSkqEE-_71oI2XlxwomgzcwNOwRZQJ5HwpZ-dsv4,3307
|
|
14
|
+
devkittools/tools/du.py,sha256=qBJ5kzbicoKZk9S1LoB6HoMEaFo94pz5EqzQB05DpE8,2887
|
|
15
|
+
devkittools/tools/enc.py,sha256=LNuroGKUsBl1e1Vb0_cNA3chxLICMGwxbjPFMvx6rTI,4951
|
|
16
|
+
devkittools/tools/envtool.py,sha256=VMNOK6In3oAIBzWoPRA0QU0ZRNCXJ2cBt2eBLKD5ZPQ,5344
|
|
17
|
+
devkittools/tools/findtool.py,sha256=OMbnKTW8E4igRa5YMDlnkB9q4TuWfLLd27fT0KG_hIU,5233
|
|
18
|
+
devkittools/tools/gen.py,sha256=gHN3HY1pNew7oqDMjpO7pjfX4YnJXnKve34gaP06PZ8,7517
|
|
19
|
+
devkittools/tools/gx.py,sha256=mG4ec6Hn0uyI3wVLfxsCFcLJEVj0KJN3KBP_s0AD0No,8089
|
|
20
|
+
devkittools/tools/hashtool.py,sha256=sBZ0gNsYiqEANEM4mjzKcNNMFpVKu4P9dBcvVDqb7BE,3758
|
|
21
|
+
devkittools/tools/httptool.py,sha256=fNpx9jDI2G0P3u8Baydrwf1ky11i5soug6wTLJS7gOk,5617
|
|
22
|
+
devkittools/tools/ignore.py,sha256=XadK9T_htGJKHH5Tv5nqNmyEtMgvvKleKiSdxsJ5ZxI,10746
|
|
23
|
+
devkittools/tools/initproj.py,sha256=jMZLlu30v4ggQbWVTCLI9Tyd_ID4MaiLOAVlmjiYb_8,5544
|
|
24
|
+
devkittools/tools/jsontool.py,sha256=Kub0lx60cY6aeIV_8xYTPhJGlK_2_mQ4hGjeTttnehc,7554
|
|
25
|
+
devkittools/tools/net.py,sha256=ng4F-YZSgTNybfVx3jzsH2aQQQKlvojzvrDigM3c0NQ,4197
|
|
26
|
+
devkittools/tools/portkiller.py,sha256=Tp-cBj4WzmB4KeWspQuS42AjGYp4_EhaT5AMhTYU4F0,9116
|
|
27
|
+
devkittools/tools/regextool.py,sha256=FfjUC2_G5kYcFG_zdiO57ab3a_f4XTxWbUsS4PDXqVw,3154
|
|
28
|
+
devkittools/tools/repostats.py,sha256=b6rW5SIjSyzfwIr7AfGudMwskFYv0fDxnX_Z22usP8A,8295
|
|
29
|
+
devkittools/tools/secrets_scan.py,sha256=Nq_sVDBv1z-_rPbuM8okwo8eaP919_aQaSza_65PP4U,5006
|
|
30
|
+
devkittools/tools/serve.py,sha256=_nunKlBZ5wXcp1d-9SVy2i1HSUJVhsNeMfcFa-erjeU,4679
|
|
31
|
+
devkittools/tools/snip.py,sha256=zVT4Xa2OaBNxbjhtiXeSvreXekFSFP5aWGMHnPmbEZk,3344
|
|
32
|
+
devkittools/tools/system.py,sha256=t3saDFdom9DfKUbh1JTujYfliyG_xvj7d72oqwTC0OE,6404
|
|
33
|
+
devkittools/tools/timetool.py,sha256=txx8_vjnp5hb7HXBXMUxb6Z37KuQw5gmMYrgna2u-iI,5302
|
|
34
|
+
devkittools/tools/todo.py,sha256=0NIs4LVsvfBYmmkTwvgNnks3VEcCQo57S80Sm9SVtg8,2799
|
|
35
|
+
devkittools/tools/tree.py,sha256=tzXLD1kPB5ph8ESEn5VJt2yXIjXC3i_3CeLO6ORqG1U,3753
|
|
36
|
+
devkittools/tools/watch.py,sha256=q0pTfLV-9Yctx8pcsd4VgE7dr22uu1rNqk2t1gX6XnQ,3266
|
|
37
|
+
dktcli-1.0.0.dist-info/licenses/LICENSE,sha256=PcfpIWJKkYNU40jiDHJmfHRR_KtpeicukpDkFlMsZSI,1068
|
|
38
|
+
dktcli-1.0.0.dist-info/METADATA,sha256=MutljrVeUsOWfjNwdbtWdwUZzeMjh8AGkHz1Rc-AtZ4,6534
|
|
39
|
+
dktcli-1.0.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
40
|
+
dktcli-1.0.0.dist-info/entry_points.txt,sha256=zsv1AVWDgPGxDrHqOwXPScSJfP2JXOw8brdi0Pwzh7g,80
|
|
41
|
+
dktcli-1.0.0.dist-info/top_level.txt,sha256=m7ZWEl8W0-XhjlxCW7iyLAMQ9E6yVfjB0kffQX9_BHw,12
|
|
42
|
+
dktcli-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 <your name>
|
|
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.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
devkittools
|