git-hook-max 0.1.0__tar.gz
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.
- git_hook_max-0.1.0/BRIEF.md +66 -0
- git_hook_max-0.1.0/LICENSE +9 -0
- git_hook_max-0.1.0/PKG-INFO +45 -0
- git_hook_max-0.1.0/PRIVACY.md +34 -0
- git_hook_max-0.1.0/README.md +24 -0
- git_hook_max-0.1.0/assets/icon-128.png +0 -0
- git_hook_max-0.1.0/assets/icon-16.png +0 -0
- git_hook_max-0.1.0/assets/icon-48.png +0 -0
- git_hook_max-0.1.0/ghm.py +786 -0
- git_hook_max-0.1.0/icon.svg +11 -0
- git_hook_max-0.1.0/icons/icon128.png +0 -0
- git_hook_max-0.1.0/icons/icon16.png +0 -0
- git_hook_max-0.1.0/icons/icon48.png +0 -0
- git_hook_max-0.1.0/landing/index.html +76 -0
- git_hook_max-0.1.0/pyproject.toml +36 -0
- git_hook_max-0.1.0/screenshots/screenshot1.txt +17 -0
- git_hook_max-0.1.0/screenshots/screenshot2.txt +13 -0
- git_hook_max-0.1.0/screenshots/screenshot3.txt +39 -0
- git_hook_max-0.1.0/screenshots/terminal-demo.txt +20 -0
- git_hook_max-0.1.0/screenshots.md +155 -0
- git_hook_max-0.1.0/store-listing.md +64 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# portman — localhost port management CLI
|
|
2
|
+
|
|
3
|
+
## One-liner
|
|
4
|
+
A zero-dependency CLI that finds and kills processes on localhost ports — no more `lsof -i :3000` → `kill -9` → repeat.
|
|
5
|
+
|
|
6
|
+
## Target user
|
|
7
|
+
Full-stack developers, DevOps engineers, and anyone who runs local servers (React, Node, Python, Docker, etc.) and constantly hits "EADDRINUSE" / "port already in use" errors.
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
Every developer wastes minutes per day dealing with stale processes holding ports:
|
|
11
|
+
- "Port 3000 is already in use" — what's using it?
|
|
12
|
+
- Forgot to Ctrl+C a dev server yesterday
|
|
13
|
+
- Docker containers left running
|
|
14
|
+
- Zombie Node/Python processes
|
|
15
|
+
|
|
16
|
+
Current workflow: `lsof -i :3000` → copy PID → `kill -9 12345` → hope you killed the right thing.
|
|
17
|
+
On Windows: `netstat -ano | findstr :3000` → `taskkill /PID 12345 /F` — even worse.
|
|
18
|
+
|
|
19
|
+
No dedicated, polished CLI tool exists. Developers cobble together shell aliases.
|
|
20
|
+
|
|
21
|
+
## Why now
|
|
22
|
+
- AI coding agents (Claude Code, Codex, Cursor) spin up servers automatically and leave them running
|
|
23
|
+
- Microservice development means more concurrent local servers than ever
|
|
24
|
+
- The rise of `pnpm dev`, `next dev`, `vite`, `turbo dev` — more dev servers, more conflicts
|
|
25
|
+
|
|
26
|
+
## MVP scope (buildable in <1 hour, zero paid deps)
|
|
27
|
+
|
|
28
|
+
1. `portman list` — show all listening ports with process names and PIDs (cross-platform)
|
|
29
|
+
2. `portman kill <port>` — find and kill the process on a given port, with confirmation
|
|
30
|
+
3. `portman kill --all` — kill all known dev server ports (3000, 3001, 5000, 8000, 8080, etc.)
|
|
31
|
+
4. `portman find <port>` — show what's using a port without killing it
|
|
32
|
+
5. `portman free <port>` — check if a port is available
|
|
33
|
+
6. `portman config` — manage a `~/.portmanrc` with custom port presets and ignore lists
|
|
34
|
+
|
|
35
|
+
## Tech approach
|
|
36
|
+
- **Language**: Python 3.11+ (stdlib only for core; `psutil` as optional pip dep for better cross-platform support)
|
|
37
|
+
- **Cross-platform**: macOS, Linux, Windows (WSL native)
|
|
38
|
+
- **No API keys, no cloud, no accounts** — runs entirely locally
|
|
39
|
+
- **Install**: `pip install portman-cli` or `brew install portman`
|
|
40
|
+
- **Entry point**: `portman` CLI via `pyproject.toml` scripts
|
|
41
|
+
|
|
42
|
+
## Monetization
|
|
43
|
+
- **Free tier**: All core commands (list, kill, find, free, config)
|
|
44
|
+
- **Pro tier** ($5/mo or $48/yr):
|
|
45
|
+
- `portman team` — shared port registry so teammates don't collide on the same ports
|
|
46
|
+
- `portman ci` — GitHub Actions integration that detects port conflicts in PRs
|
|
47
|
+
- `portman watch` — background daemon that auto-kills stale processes after N minutes of inactivity
|
|
48
|
+
- `portman history` — track which projects use which ports over time
|
|
49
|
+
- **Distribution**: npm (`npx portman`), pip, brew, standalone binary (PyInstaller)
|
|
50
|
+
|
|
51
|
+
## Risks
|
|
52
|
+
1. **Too simple** — might be seen as "just a shell alias." Mitigation: polish the UX (colors, tables, confirmation prompts, `--json` output) so it feels like a real tool.
|
|
53
|
+
2. **Platform differences** — `lsof` vs `netstat` vs `Get-NetTCPConnection`. Mitigation: use `psutil` as the abstraction layer.
|
|
54
|
+
3. **Existing alternatives** — `fkill`, `kill-port` (npm), shell aliases. Mitigation: portman is purpose-built for localhost dev ports with a better UX and team features.
|
|
55
|
+
4. **Low willingness to pay** — developers expect CLI tools to be free. Mitigation: the free tier is fully functional; team/CI features are the paid upsell.
|
|
56
|
+
|
|
57
|
+
## Definition of done for the MVP
|
|
58
|
+
- [ ] `portman list` works on macOS, Linux, and Windows
|
|
59
|
+
- [ ] `portman kill <port>` finds and kills the process with a confirmation prompt
|
|
60
|
+
- [ ] `portman find <port>` shows process info without killing
|
|
61
|
+
- [ ] `portman free <port>` returns exit code 0 (free) or 1 (in use)
|
|
62
|
+
- [ ] `~/.portmanrc` config file with custom presets
|
|
63
|
+
- [ ] `--json` flag on all commands for scripting
|
|
64
|
+
- [ ] `pyproject.toml` with proper entry point
|
|
65
|
+
- [ ] `pip install -e .` works locally
|
|
66
|
+
- [ ] README with install instructions and examples
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Eric Joye
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: git-hook-max
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Manage Git hooks across projects with a visual dashboard
|
|
5
|
+
Project-URL: Homepage, https://github.com/ericjoye/git-hook-manager-max
|
|
6
|
+
Project-URL: Issues, https://github.com/ericjoye/git-hook-manager-max/issues
|
|
7
|
+
Author-email: Eric JOYE <eric@ericjoye.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: cli,developer-tools,git,hooks,pre-commit,pre-push
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
18
|
+
Classifier: Topic :: Utilities
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# git-hook-manager-max
|
|
23
|
+
|
|
24
|
+
A visual Git hook manager CLI. Create, edit, and manage git hooks without manual shell scripting.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install git-hook-manager-max
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
ghm list # List all hooks
|
|
36
|
+
ghm create pre-commit # Create a hook from template
|
|
37
|
+
ghm edit pre-commit # Edit a hook
|
|
38
|
+
ghm toggle pre-commit # Enable/disable a hook
|
|
39
|
+
ghm templates # List available templates
|
|
40
|
+
ghm init # Initialize hooks directory
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
Python 3.11+, stdlib only.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Privacy Policy — git-hook-manager-max
|
|
2
|
+
|
|
3
|
+
**Last updated:** June 20, 2026
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
git-hook-manager-max ("we", "our", "the tool") is a command-line utility that helps developers manage Git hooks across projects. It installs, configures, and shares Git hook scripts.
|
|
8
|
+
|
|
9
|
+
## Data Collection
|
|
10
|
+
|
|
11
|
+
**git-hook-manager-max does NOT collect, store, or transmit any data.**
|
|
12
|
+
|
|
13
|
+
When you use git-hook-manager-max:
|
|
14
|
+
|
|
15
|
+
- **No data is logged or transmitted.** All operations happen locally on your machine. The tool does not send data to any external server.
|
|
16
|
+
- **No network calls.** git-hook-manager-max does not make any network requests. It operates entirely offline.
|
|
17
|
+
- **No telemetry.** There is no usage tracking, analytics, or telemetry of any kind.
|
|
18
|
+
- **No accounts.** There is no signup, login, or user account system.
|
|
19
|
+
|
|
20
|
+
## How It Works
|
|
21
|
+
|
|
22
|
+
git-hook-manager-max reads and writes Git hook scripts in your project's `.git/hooks` directory (or a shared hooks directory you configure). It may also read from a configuration file (e.g., `.githookrc`) in your project or home directory. All file operations are local — your hook scripts and repository data never leave your machine.
|
|
23
|
+
|
|
24
|
+
## Open Source
|
|
25
|
+
|
|
26
|
+
git-hook-manager-max is open source under the MIT license. It has zero runtime dependencies — it uses only Python 3.11+ standard library modules.
|
|
27
|
+
|
|
28
|
+
## Changes to This Policy
|
|
29
|
+
|
|
30
|
+
We may update this privacy policy from time to time. Any changes will be reflected in the project's source code repository.
|
|
31
|
+
|
|
32
|
+
## Contact
|
|
33
|
+
|
|
34
|
+
If you have questions about this privacy policy, contact us at: [YOUR EMAIL ADDRESS]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# git-hook-manager-max
|
|
2
|
+
|
|
3
|
+
A visual Git hook manager CLI. Create, edit, and manage git hooks without manual shell scripting.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install git-hook-manager-max
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
ghm list # List all hooks
|
|
15
|
+
ghm create pre-commit # Create a hook from template
|
|
16
|
+
ghm edit pre-commit # Edit a hook
|
|
17
|
+
ghm toggle pre-commit # Enable/disable a hook
|
|
18
|
+
ghm templates # List available templates
|
|
19
|
+
ghm init # Initialize hooks directory
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Requirements
|
|
23
|
+
|
|
24
|
+
Python 3.11+, stdlib only.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|