codestrain 0.1.0__tar.gz → 0.1.2__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.
- codestrain-0.1.2/.github/workflows/release.yml +80 -0
- codestrain-0.1.0/README.md → codestrain-0.1.2/PKG-INFO +68 -8
- codestrain-0.1.0/PKG-INFO → codestrain-0.1.2/README.md +43 -28
- {codestrain-0.1.0 → codestrain-0.1.2}/pyproject.toml +6 -1
- codestrain-0.1.0/.github/workflows/release.yml +0 -49
- {codestrain-0.1.0 → codestrain-0.1.2}/.assets/logo.png +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/.github/workflows/ci.yml +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/.gitignore +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/CONTRIBUTING.md +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/LICENSE +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/TESTING.md +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/codestrain_cli.py +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/__init__.py +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/conftest.py +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/-Users-test-projectA/session-001.jsonl +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/-Users-test-projectA/session-002.jsonl +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/-Users-test-projectB/session-003.jsonl +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/empty-project/empty.jsonl +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/smoke.sh +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/test_jsonl.py +0 -0
- {codestrain-0.1.0 → codestrain-0.1.2}/tests/test_unit.py +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
name: Build distributions
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Set up Python
|
|
17
|
+
uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.12"
|
|
20
|
+
|
|
21
|
+
- name: Install build tooling
|
|
22
|
+
run: python -m pip install --upgrade build
|
|
23
|
+
|
|
24
|
+
- name: Build sdist and wheel
|
|
25
|
+
working-directory: .
|
|
26
|
+
run: python -m build
|
|
27
|
+
|
|
28
|
+
- name: Upload distributions
|
|
29
|
+
uses: actions/upload-artifact@v4
|
|
30
|
+
with:
|
|
31
|
+
name: dist
|
|
32
|
+
path: dist/
|
|
33
|
+
|
|
34
|
+
publish:
|
|
35
|
+
name: Publish to PyPI
|
|
36
|
+
needs: build
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
environment: pypi
|
|
39
|
+
permissions:
|
|
40
|
+
id-token: write
|
|
41
|
+
steps:
|
|
42
|
+
- name: Download distributions
|
|
43
|
+
uses: actions/download-artifact@v4
|
|
44
|
+
with:
|
|
45
|
+
name: dist
|
|
46
|
+
path: dist/
|
|
47
|
+
|
|
48
|
+
- name: Publish to PyPI via Trusted Publisher
|
|
49
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
50
|
+
|
|
51
|
+
bump-homebrew:
|
|
52
|
+
name: Bump Homebrew Formula
|
|
53
|
+
needs: publish
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
if: ${{ !contains(github.ref_name, 'rc') && !contains(github.ref_name, 'a') && !contains(github.ref_name, 'b') }}
|
|
56
|
+
steps:
|
|
57
|
+
# Wait briefly so the new sdist is queryable on PyPI's CDN.
|
|
58
|
+
- name: Wait for PyPI propagation
|
|
59
|
+
run: sleep 30
|
|
60
|
+
|
|
61
|
+
- name: Open PR against codestrain/homebrew-tap
|
|
62
|
+
uses: mislav/bump-homebrew-formula-action@v3
|
|
63
|
+
with:
|
|
64
|
+
formula-name: codestrain
|
|
65
|
+
formula-path: Formula/codestrain.rb
|
|
66
|
+
homebrew-tap: codestrain/homebrew-tap
|
|
67
|
+
base-branch: main
|
|
68
|
+
# Compute download URL from the just-published PyPI sdist.
|
|
69
|
+
# mislav/bump-homebrew-formula-action auto-strips `v` prefix from
|
|
70
|
+
# github.ref_name, so v0.1.2 → 0.1.2 in the URL.
|
|
71
|
+
download-url: https://files.pythonhosted.org/packages/source/c/codestrain/codestrain-${{ github.ref_name }}.tar.gz
|
|
72
|
+
commit-message: |
|
|
73
|
+
codestrain {{version}}
|
|
74
|
+
|
|
75
|
+
Auto-bumped by mislav/bump-homebrew-formula-action.
|
|
76
|
+
Source: https://github.com/codestrain/codestrain-cli/releases/tag/${{ github.ref_name }}
|
|
77
|
+
env:
|
|
78
|
+
# Fine-grained PAT with `Contents: write` on codestrain/homebrew-tap.
|
|
79
|
+
# Stored as a repo secret in codestrain/codestrain-cli.
|
|
80
|
+
COMMITTER_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: codestrain
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Your AI coding recovery score, from the terminal.
|
|
5
|
+
Project-URL: Homepage, https://codestrain.dev
|
|
6
|
+
Project-URL: Repository, https://github.com/codestrain/codestrain-cli
|
|
7
|
+
Author: Ivan Kononov
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: burnout,claude-code,developer-tools,drs,wellness
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Software Development
|
|
22
|
+
Classifier: Topic :: Utilities
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
|
|
1
26
|
<p align="center"><img src="https://raw.githubusercontent.com/codestrain/codestrain-cli/main/.assets/logo.png" alt="CodeStrain" width="200"/></p>
|
|
2
27
|
|
|
3
28
|
# CodeStrain CLI
|
|
@@ -5,10 +30,10 @@
|
|
|
5
30
|
*Your AI coding recovery score, from the terminal.*
|
|
6
31
|
|
|
7
32
|
<p align="center">
|
|
8
|
-
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/v/codestrain.svg" alt="PyPI version"/></a>
|
|
9
|
-
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/pyversions/codestrain.svg" alt="Python versions"/></a>
|
|
10
|
-
<a href="https://github.com/codestrain/codestrain-cli/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/codestrain.svg" alt="License: MIT"/></a>
|
|
11
|
-
<a href="https://github.com/codestrain/codestrain-cli/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/codestrain/codestrain-cli/ci.yml?branch=main" alt="CI status"/></a>
|
|
33
|
+
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/v/codestrain.svg?v=2" alt="PyPI version"/></a>
|
|
34
|
+
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/pyversions/codestrain.svg?v=2" alt="Python versions"/></a>
|
|
35
|
+
<a href="https://github.com/codestrain/codestrain-cli/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/codestrain.svg?v=2" alt="License: MIT"/></a>
|
|
36
|
+
<a href="https://github.com/codestrain/codestrain-cli/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/codestrain/codestrain-cli/ci.yml?branch=main&v=2" alt="CI status"/></a>
|
|
12
37
|
</p>
|
|
13
38
|
|
|
14
39
|
## What is this
|
|
@@ -17,21 +42,56 @@ CodeStrain parses the Claude Code JSONL session logs already on your disk (`~/.c
|
|
|
17
42
|
|
|
18
43
|
## Install
|
|
19
44
|
|
|
45
|
+
The CLI is a single command. Pick the install path your machine prefers — all three put `codestrain` on your `$PATH`:
|
|
46
|
+
|
|
20
47
|
```bash
|
|
21
|
-
#
|
|
22
|
-
|
|
48
|
+
# macOS — recommended (Homebrew)
|
|
49
|
+
brew install codestrain/tap/codestrain
|
|
50
|
+
codestrain --help
|
|
23
51
|
```
|
|
24
52
|
|
|
25
53
|
```bash
|
|
26
|
-
# pipx
|
|
54
|
+
# any OS — pipx, isolated venv + symlink on PATH
|
|
27
55
|
pipx install codestrain
|
|
56
|
+
codestrain --help
|
|
28
57
|
```
|
|
29
58
|
|
|
30
59
|
```bash
|
|
31
|
-
# uv
|
|
60
|
+
# any OS — uv tool, fastest
|
|
32
61
|
uv tool install codestrain
|
|
62
|
+
codestrain --help
|
|
33
63
|
```
|
|
34
64
|
|
|
65
|
+
```bash
|
|
66
|
+
# one-liner installer — detects pipx/uv/pip and adds PATH automatically
|
|
67
|
+
curl -fsSL codestrain.dev/install | sh
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`pip install codestrain` works too, but leaves the binary off your `$PATH` on macOS (PEP 668 / user-install convention). See troubleshooting below.
|
|
71
|
+
|
|
72
|
+
<details>
|
|
73
|
+
<summary>If <code>codestrain: command not found</code> after <code>pip install codestrain</code></summary>
|
|
74
|
+
|
|
75
|
+
That's the macOS / PEP 668 quirk — pip installed the wheel but didn't put the entry-point on PATH. Three fixes, in order of preference:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# (a) run it as a module — works without any PATH change
|
|
79
|
+
python3 -m codestrain_cli --all
|
|
80
|
+
|
|
81
|
+
# (b) switch to pipx (installs in isolated venv, fixes PATH)
|
|
82
|
+
brew install pipx # or: python3 -m pip install --user pipx
|
|
83
|
+
pipx ensurepath # adds ~/.local/bin to PATH
|
|
84
|
+
pipx install codestrain
|
|
85
|
+
|
|
86
|
+
# (c) find where pip put the binary and add that dir to PATH
|
|
87
|
+
pip show -f codestrain | grep -E 'bin/codestrain'
|
|
88
|
+
# typical macOS user-install path:
|
|
89
|
+
echo 'export PATH="$HOME/Library/Python/3.11/bin:$PATH"' >> ~/.zshrc
|
|
90
|
+
source ~/.zshrc
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
</details>
|
|
94
|
+
|
|
35
95
|
## Quick start
|
|
36
96
|
|
|
37
97
|
```bash
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: codestrain
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Your AI coding recovery score, from the terminal.
|
|
5
|
-
Project-URL: Homepage, https://codestrain.dev
|
|
6
|
-
Project-URL: Repository, https://github.com/codestrain/codestrain-cli
|
|
7
|
-
Author: Ivan Kononov
|
|
8
|
-
License-Expression: MIT
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Keywords: burnout,claude-code,developer-tools,drs,wellness
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Environment :: Console
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
-
Classifier: Topic :: Software Development
|
|
17
|
-
Classifier: Topic :: Utilities
|
|
18
|
-
Requires-Python: >=3.9
|
|
19
|
-
Description-Content-Type: text/markdown
|
|
20
|
-
|
|
21
1
|
<p align="center"><img src="https://raw.githubusercontent.com/codestrain/codestrain-cli/main/.assets/logo.png" alt="CodeStrain" width="200"/></p>
|
|
22
2
|
|
|
23
3
|
# CodeStrain CLI
|
|
@@ -25,10 +5,10 @@ Description-Content-Type: text/markdown
|
|
|
25
5
|
*Your AI coding recovery score, from the terminal.*
|
|
26
6
|
|
|
27
7
|
<p align="center">
|
|
28
|
-
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/v/codestrain.svg" alt="PyPI version"/></a>
|
|
29
|
-
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/pyversions/codestrain.svg" alt="Python versions"/></a>
|
|
30
|
-
<a href="https://github.com/codestrain/codestrain-cli/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/codestrain.svg" alt="License: MIT"/></a>
|
|
31
|
-
<a href="https://github.com/codestrain/codestrain-cli/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/codestrain/codestrain-cli/ci.yml?branch=main" alt="CI status"/></a>
|
|
8
|
+
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/v/codestrain.svg?v=2" alt="PyPI version"/></a>
|
|
9
|
+
<a href="https://pypi.org/project/codestrain/"><img src="https://img.shields.io/pypi/pyversions/codestrain.svg?v=2" alt="Python versions"/></a>
|
|
10
|
+
<a href="https://github.com/codestrain/codestrain-cli/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/codestrain.svg?v=2" alt="License: MIT"/></a>
|
|
11
|
+
<a href="https://github.com/codestrain/codestrain-cli/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/codestrain/codestrain-cli/ci.yml?branch=main&v=2" alt="CI status"/></a>
|
|
32
12
|
</p>
|
|
33
13
|
|
|
34
14
|
## What is this
|
|
@@ -37,21 +17,56 @@ CodeStrain parses the Claude Code JSONL session logs already on your disk (`~/.c
|
|
|
37
17
|
|
|
38
18
|
## Install
|
|
39
19
|
|
|
20
|
+
The CLI is a single command. Pick the install path your machine prefers — all three put `codestrain` on your `$PATH`:
|
|
21
|
+
|
|
40
22
|
```bash
|
|
41
|
-
#
|
|
42
|
-
|
|
23
|
+
# macOS — recommended (Homebrew)
|
|
24
|
+
brew install codestrain/tap/codestrain
|
|
25
|
+
codestrain --help
|
|
43
26
|
```
|
|
44
27
|
|
|
45
28
|
```bash
|
|
46
|
-
# pipx
|
|
29
|
+
# any OS — pipx, isolated venv + symlink on PATH
|
|
47
30
|
pipx install codestrain
|
|
31
|
+
codestrain --help
|
|
48
32
|
```
|
|
49
33
|
|
|
50
34
|
```bash
|
|
51
|
-
# uv
|
|
35
|
+
# any OS — uv tool, fastest
|
|
52
36
|
uv tool install codestrain
|
|
37
|
+
codestrain --help
|
|
53
38
|
```
|
|
54
39
|
|
|
40
|
+
```bash
|
|
41
|
+
# one-liner installer — detects pipx/uv/pip and adds PATH automatically
|
|
42
|
+
curl -fsSL codestrain.dev/install | sh
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`pip install codestrain` works too, but leaves the binary off your `$PATH` on macOS (PEP 668 / user-install convention). See troubleshooting below.
|
|
46
|
+
|
|
47
|
+
<details>
|
|
48
|
+
<summary>If <code>codestrain: command not found</code> after <code>pip install codestrain</code></summary>
|
|
49
|
+
|
|
50
|
+
That's the macOS / PEP 668 quirk — pip installed the wheel but didn't put the entry-point on PATH. Three fixes, in order of preference:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# (a) run it as a module — works without any PATH change
|
|
54
|
+
python3 -m codestrain_cli --all
|
|
55
|
+
|
|
56
|
+
# (b) switch to pipx (installs in isolated venv, fixes PATH)
|
|
57
|
+
brew install pipx # or: python3 -m pip install --user pipx
|
|
58
|
+
pipx ensurepath # adds ~/.local/bin to PATH
|
|
59
|
+
pipx install codestrain
|
|
60
|
+
|
|
61
|
+
# (c) find where pip put the binary and add that dir to PATH
|
|
62
|
+
pip show -f codestrain | grep -E 'bin/codestrain'
|
|
63
|
+
# typical macOS user-install path:
|
|
64
|
+
echo 'export PATH="$HOME/Library/Python/3.11/bin:$PATH"' >> ~/.zshrc
|
|
65
|
+
source ~/.zshrc
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
</details>
|
|
69
|
+
|
|
55
70
|
## Quick start
|
|
56
71
|
|
|
57
72
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codestrain"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.2"
|
|
4
4
|
description = "Your AI coding recovery score, from the terminal."
|
|
5
5
|
requires-python = ">=3.9"
|
|
6
6
|
readme = "README.md"
|
|
@@ -13,6 +13,11 @@ classifiers = [
|
|
|
13
13
|
"Intended Audience :: Developers",
|
|
14
14
|
"Programming Language :: Python :: 3",
|
|
15
15
|
"Programming Language :: Python :: 3 :: Only",
|
|
16
|
+
"Programming Language :: Python :: 3.9",
|
|
17
|
+
"Programming Language :: Python :: 3.10",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
"Programming Language :: Python :: 3.13",
|
|
16
21
|
"Topic :: Software Development",
|
|
17
22
|
"Topic :: Utilities",
|
|
18
23
|
]
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- "v*"
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
build:
|
|
10
|
-
name: Build distributions
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
steps:
|
|
13
|
-
- name: Checkout
|
|
14
|
-
uses: actions/checkout@v4
|
|
15
|
-
|
|
16
|
-
- name: Set up Python
|
|
17
|
-
uses: actions/setup-python@v5
|
|
18
|
-
with:
|
|
19
|
-
python-version: "3.12"
|
|
20
|
-
|
|
21
|
-
- name: Install build tooling
|
|
22
|
-
run: python -m pip install --upgrade build
|
|
23
|
-
|
|
24
|
-
- name: Build sdist and wheel
|
|
25
|
-
working-directory: .
|
|
26
|
-
run: python -m build
|
|
27
|
-
|
|
28
|
-
- name: Upload distributions
|
|
29
|
-
uses: actions/upload-artifact@v4
|
|
30
|
-
with:
|
|
31
|
-
name: dist
|
|
32
|
-
path: dist/
|
|
33
|
-
|
|
34
|
-
publish:
|
|
35
|
-
name: Publish to PyPI
|
|
36
|
-
needs: build
|
|
37
|
-
runs-on: ubuntu-latest
|
|
38
|
-
environment: pypi
|
|
39
|
-
permissions:
|
|
40
|
-
id-token: write
|
|
41
|
-
steps:
|
|
42
|
-
- name: Download distributions
|
|
43
|
-
uses: actions/download-artifact@v4
|
|
44
|
-
with:
|
|
45
|
-
name: dist
|
|
46
|
-
path: dist/
|
|
47
|
-
|
|
48
|
-
- name: Publish to PyPI via Trusted Publisher
|
|
49
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/-Users-test-projectA/session-001.jsonl
RENAMED
|
File without changes
|
{codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/-Users-test-projectA/session-002.jsonl
RENAMED
|
File without changes
|
{codestrain-0.1.0 → codestrain-0.1.2}/tests/fixtures/projects/-Users-test-projectB/session-003.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|