docker-orb 1.0.0__tar.gz → 1.0.1__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.
- docker_orb-1.0.1/.github/workflows/publish.yml +78 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/CLAUDE.md +24 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/PKG-INFO +5 -8
- {docker_orb-1.0.0 → docker_orb-1.0.1}/README.md +4 -7
- {docker_orb-1.0.0 → docker_orb-1.0.1}/pyproject.toml +1 -1
- {docker_orb-1.0.0 → docker_orb-1.0.1}/.gitignore +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/LICENSE +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/docs/USER_GUIDE.md +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/docs/demo.tape +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/docs/screenshot-viewer.png +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/Makefile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/README.md +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/docker-compose.yml +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/api-gateway/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/api-gateway/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/auth-service/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/auth-service/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/cache/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/cache/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/database/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/database/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/notification-service/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/notification-service/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/scheduler/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/scheduler/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/user-service/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/user-service/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/worker/Dockerfile +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/infra/services/worker/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/scripts/run-safe.sh +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/__init__.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/__main__.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/_scrollbar.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/cli.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/colors.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/compose.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/config.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/inject.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/jsonlog.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/models.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/__init__.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/panels/__init__.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/panels/health.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/panels/main_stream.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/panels/monitor.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/panels/search.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/viewer.tcss +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/viewer/widgets.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/wizard/__init__.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/wizard/app.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/wizard/screens.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/src/docker_orb/wizard/wizard.tcss +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/__init__.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/features/wizard.feature +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_colors.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_compose.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_config.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_health_panel.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_jsonlog.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_scrollbar.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_backfill.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_collapse_repeats.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_color_mode.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_edit_behaviors.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_json_format.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_keybindings.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_monitor_context.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_monitor_double_click.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_pane_size_modal.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_pause_resume.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_resize.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_viewer_string_edit_modal.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_wizard_bdd_scenarios.py +0 -0
- {docker_orb-1.0.0 → docker_orb-1.0.1}/tests/test_wizard_screens.py +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# Runs the test suite on every push/PR to main; only builds and publishes
|
|
4
|
+
# to PyPI when a GitHub Release is published (or manually via
|
|
5
|
+
# workflow_dispatch, for re-running a failed publish without cutting a new
|
|
6
|
+
# release). Publishing uses PyPI's Trusted Publishing (OIDC) — no API token
|
|
7
|
+
# stored anywhere here.
|
|
8
|
+
#
|
|
9
|
+
# ⚠ ONE-TIME SETUP STILL NEEDED (see CLAUDE.md "Release process"): register
|
|
10
|
+
# this workflow as a trusted publisher on the PyPI project page
|
|
11
|
+
# (pypi.org/manage/project/docker-orb/settings/publishing/) with owner
|
|
12
|
+
# "adlidev", repo "docker-orb", workflow filename "publish.yml", and
|
|
13
|
+
# Environment name left BLANK (no GitHub environment gate is configured
|
|
14
|
+
# here). Publishing will fail with an auth error until that's done.
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
branches: [main]
|
|
19
|
+
pull_request:
|
|
20
|
+
branches: [main]
|
|
21
|
+
release:
|
|
22
|
+
types: [published]
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
test:
|
|
27
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
strategy:
|
|
30
|
+
matrix:
|
|
31
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
|
|
35
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
36
|
+
uses: actions/setup-python@v5
|
|
37
|
+
with:
|
|
38
|
+
python-version: ${{ matrix.python-version }}
|
|
39
|
+
|
|
40
|
+
- name: Install
|
|
41
|
+
run: python -m pip install -e . --group dev
|
|
42
|
+
|
|
43
|
+
- name: Run tests
|
|
44
|
+
run: pytest -q
|
|
45
|
+
|
|
46
|
+
publish:
|
|
47
|
+
name: Build and publish to PyPI
|
|
48
|
+
needs: test
|
|
49
|
+
if: github.event_name == 'release' || github.event_name == 'workflow_dispatch'
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
permissions:
|
|
52
|
+
id-token: write # required for PyPI Trusted Publishing (OIDC)
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/checkout@v4
|
|
55
|
+
|
|
56
|
+
- name: Set up Python
|
|
57
|
+
uses: actions/setup-python@v5
|
|
58
|
+
with:
|
|
59
|
+
python-version: "3.12"
|
|
60
|
+
|
|
61
|
+
- name: Build sdist and wheel
|
|
62
|
+
run: |
|
|
63
|
+
python -m pip install --upgrade build
|
|
64
|
+
python -m build
|
|
65
|
+
|
|
66
|
+
- name: Check package metadata
|
|
67
|
+
run: |
|
|
68
|
+
python -m pip install --upgrade twine
|
|
69
|
+
python -m twine check dist/*
|
|
70
|
+
|
|
71
|
+
- name: Publish to PyPI
|
|
72
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
73
|
+
with:
|
|
74
|
+
# Safety net for re-running this job (workflow_dispatch, or a
|
|
75
|
+
# retried run) after a version already made it to PyPI — skips
|
|
76
|
+
# re-upload instead of failing, rather than actually enabling
|
|
77
|
+
# re-publishing the same version's files.
|
|
78
|
+
skip-existing: true
|
|
@@ -74,6 +74,30 @@ them depended on anything Kubernetes-specific), just wired up with
|
|
|
74
74
|
works fine, of course, to point docker-orb at any other real
|
|
75
75
|
`docker-compose.yml` project you have running.
|
|
76
76
|
|
|
77
|
+
## Release process
|
|
78
|
+
|
|
79
|
+
`.github/workflows/publish.yml` tests on 3.10/3.11/3.12 on every push/PR to
|
|
80
|
+
`main`, and builds + publishes to PyPI whenever a GitHub Release is
|
|
81
|
+
published, via PyPI Trusted Publishing (OIDC) — no stored token.
|
|
82
|
+
|
|
83
|
+
**⚠ TODO, still pending:** register this workflow as a trusted publisher on
|
|
84
|
+
PyPI before the first automated publish will work — pypi.org → docker-orb
|
|
85
|
+
project → Manage → Publishing → "Add a new publisher":
|
|
86
|
+
- Owner: `adlidev`
|
|
87
|
+
- Repository name: `docker-orb`
|
|
88
|
+
- Workflow filename: `publish.yml`
|
|
89
|
+
- Environment name: leave **blank** (no GitHub environment gate is
|
|
90
|
+
configured in the workflow — that step was intentionally skipped for
|
|
91
|
+
now; add `environment: pypi` back in publish.yml plus a matching
|
|
92
|
+
environment under repo Settings → Environments if a manual-approval gate
|
|
93
|
+
is wanted later).
|
|
94
|
+
|
|
95
|
+
Until that's done, a release will run the build/check steps fine but fail
|
|
96
|
+
on the actual `pypi-publish` upload step with an auth error.
|
|
97
|
+
|
|
98
|
+
Going forward, a release is: bump `version` in `pyproject.toml` → commit →
|
|
99
|
+
tag and publish a GitHub Release → the workflow does the rest.
|
|
100
|
+
|
|
77
101
|
## Architecture
|
|
78
102
|
|
|
79
103
|
docker-orb is a **Textual TUI** app with two entry points:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docker-orb
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: Interactive terminal UI for streaming and filtering Docker Compose container logs across multiple services
|
|
5
5
|
Project-URL: Homepage, https://github.com/adlidev/docker-orb
|
|
6
6
|
Project-URL: Repository, https://github.com/adlidev/docker-orb
|
|
@@ -105,14 +105,11 @@ Requires Python 3.10+, and `docker` with the Compose v2 plugin on your
|
|
|
105
105
|
Docker SDK involved.
|
|
106
106
|
|
|
107
107
|
```bash
|
|
108
|
-
# Recommended — pipx keeps CLI tools in isolated environments
|
|
109
|
-
|
|
110
|
-
pipx install git+https://github.com/adlidev/docker-orb
|
|
108
|
+
# Recommended — pipx keeps CLI tools in isolated environments
|
|
109
|
+
pipx install docker-orb
|
|
111
110
|
|
|
112
|
-
# Or with plain pip
|
|
113
|
-
|
|
114
|
-
cd docker-orb
|
|
115
|
-
pip install -e .
|
|
111
|
+
# Or with plain pip
|
|
112
|
+
pip install docker-orb
|
|
116
113
|
```
|
|
117
114
|
|
|
118
115
|
This installs two commands: `docker-orb` and `docker-orb-inject` (a small
|
|
@@ -52,14 +52,11 @@ Requires Python 3.10+, and `docker` with the Compose v2 plugin on your
|
|
|
52
52
|
Docker SDK involved.
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
# Recommended — pipx keeps CLI tools in isolated environments
|
|
56
|
-
|
|
57
|
-
pipx install git+https://github.com/adlidev/docker-orb
|
|
55
|
+
# Recommended — pipx keeps CLI tools in isolated environments
|
|
56
|
+
pipx install docker-orb
|
|
58
57
|
|
|
59
|
-
# Or with plain pip
|
|
60
|
-
|
|
61
|
-
cd docker-orb
|
|
62
|
-
pip install -e .
|
|
58
|
+
# Or with plain pip
|
|
59
|
+
pip install docker-orb
|
|
63
60
|
```
|
|
64
61
|
|
|
65
62
|
This installs two commands: `docker-orb` and `docker-orb-inject` (a small
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "docker-orb"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.1"
|
|
8
8
|
description = "Interactive terminal UI for streaming and filtering Docker Compose container logs across multiple services"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|