tesla-cli 4.8.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.
- tesla_cli-4.8.0/.dockerignore +9 -0
- tesla_cli-4.8.0/.env.example +17 -0
- tesla_cli-4.8.0/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
- tesla_cli-4.8.0/.github/ISSUE_TEMPLATE/feature_request.md +18 -0
- tesla_cli-4.8.0/.github/workflows/ci.yml +36 -0
- tesla_cli-4.8.0/.github/workflows/publish.yml +31 -0
- tesla_cli-4.8.0/.gitignore +71 -0
- tesla_cli-4.8.0/.python-version +1 -0
- tesla_cli-4.8.0/CHANGELOG.md +1170 -0
- tesla_cli-4.8.0/CLAUDE.md +90 -0
- tesla_cli-4.8.0/CONTRIBUTING.md +140 -0
- tesla_cli-4.8.0/Dockerfile +34 -0
- tesla_cli-4.8.0/Formula/tesla-cli.rb +58 -0
- tesla_cli-4.8.0/LICENSE +21 -0
- tesla_cli-4.8.0/Makefile +78 -0
- tesla_cli-4.8.0/PKG-INFO +208 -0
- tesla_cli-4.8.0/README.md +156 -0
- tesla_cli-4.8.0/SECURITY.md +29 -0
- tesla_cli-4.8.0/docker-compose.full.yml +67 -0
- tesla_cli-4.8.0/docker-compose.yml +22 -0
- tesla_cli-4.8.0/docs/api-reference.md +281 -0
- tesla_cli-4.8.0/docs/architecture.md +198 -0
- tesla_cli-4.8.0/docs/configuration.md +152 -0
- tesla_cli-4.8.0/docs/data-sources.md +256 -0
- tesla_cli-4.8.0/docs/research/competitive-analysis.md +1462 -0
- tesla_cli-4.8.0/docs/roadmap.md +130 -0
- tesla_cli-4.8.0/docs/user-guide.md +525 -0
- tesla_cli-4.8.0/docs/why-tesla-cli.md +115 -0
- tesla_cli-4.8.0/plugins/claude-code/.claude-plugin/marketplace.json +31 -0
- tesla_cli-4.8.0/plugins/claude-code/.claude-plugin/plugin.json +14 -0
- tesla_cli-4.8.0/plugins/claude-code/.gitignore +5 -0
- tesla_cli-4.8.0/plugins/claude-code/CHANGELOG.md +50 -0
- tesla_cli-4.8.0/plugins/claude-code/CLAUDE.md +44 -0
- tesla_cli-4.8.0/plugins/claude-code/LICENSE +21 -0
- tesla_cli-4.8.0/plugins/claude-code/README.md +142 -0
- tesla_cli-4.8.0/plugins/claude-code/bin/tesla-check +63 -0
- tesla_cli-4.8.0/plugins/claude-code/docs/design.md +87 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/analytics/SKILL.md +100 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/automations/SKILL.md +98 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/charge/SKILL.md +88 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/control/SKILL.md +101 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/dossier/SKILL.md +80 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/order/SKILL.md +86 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/serve/SKILL.md +58 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/setup/SKILL.md +90 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/status/SKILL.md +100 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/telemetry/SKILL.md +68 -0
- tesla_cli-4.8.0/plugins/claude-code/skills/tesla-context/SKILL.md +60 -0
- tesla_cli-4.8.0/pyproject.toml +82 -0
- tesla_cli-4.8.0/src/tesla_cli/__init__.py +3 -0
- tesla_cli-4.8.0/src/tesla_cli/__main__.py +5 -0
- tesla_cli-4.8.0/src/tesla_cli/api/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/api/app.py +594 -0
- tesla_cli-4.8.0/src/tesla_cli/api/auth.py +50 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/__init__.py +1 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/auth.py +389 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/charge.py +178 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/climate.py +69 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/colombia.py +138 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/dossier.py +140 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/geofence.py +135 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/notify.py +86 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/order.py +25 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/security.py +119 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/sources.py +107 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/teslaMate.py +344 -0
- tesla_cli-4.8.0/src/tesla_cli/api/routes/vehicle.py +322 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/app.py +255 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/abrp.py +278 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/automations.py +772 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/ble.py +235 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/charge.py +1213 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/climate.py +316 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/config_cmd.py +1158 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/data_cmd.py +584 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/dossier.py +2208 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/energy.py +298 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/geofence.py +252 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/ha.py +316 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/media.py +161 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/mqtt_cmd.py +413 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/notify.py +249 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/order.py +1352 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/providers_cmd.py +194 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/scenes.py +299 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/security.py +158 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/serve.py +475 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/setup.py +886 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/telemetry.py +323 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/teslaMate.py +2411 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/commands/vehicle.py +3000 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/i18n.py +604 -0
- tesla_cli-4.8.0/src/tesla_cli/cli/output.py +156 -0
- tesla_cli-4.8.0/src/tesla_cli/core/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/browser_login.py +233 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/encryption.py +70 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/oauth.py +275 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/portal_scrape.py +113 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/tessie.py +12 -0
- tesla_cli-4.8.0/src/tesla_cli/core/auth/tokens.py +41 -0
- tesla_cli-4.8.0/src/tesla_cli/core/automation.py +370 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/__init__.py +54 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/base.py +116 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/dossier.py +1073 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/energy.py +111 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/fleet.py +343 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/fleet_signed.py +445 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/fleet_telemetry.py +150 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/http.py +82 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/order.py +487 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/owner.py +213 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/runt.py +73 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/simit.py +65 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/teslaMate.py +557 -0
- tesla_cli-4.8.0/src/tesla_cli/core/backends/tessie.py +141 -0
- tesla_cli-4.8.0/src/tesla_cli/core/config.py +185 -0
- tesla_cli-4.8.0/src/tesla_cli/core/exceptions.py +104 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/automation.py +39 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/charge.py +152 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/climate.py +23 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/dossier.py +450 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/drive.py +33 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/energy.py +35 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/order.py +88 -0
- tesla_cli-4.8.0/src/tesla_cli/core/models/vehicle.py +26 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/__init__.py +52 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/base.py +180 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/__init__.py +1 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/abrp.py +93 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/apprise_notify.py +93 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/ble.py +113 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/ha.py +137 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/mqtt.py +162 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/teslaMate.py +133 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/impl/vehicle_api.py +126 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/loader.py +64 -0
- tesla_cli-4.8.0/src/tesla_cli/core/providers/registry.py +228 -0
- tesla_cli-4.8.0/src/tesla_cli/core/sources.py +740 -0
- tesla_cli-4.8.0/src/tesla_cli/endpoints.json +3121 -0
- tesla_cli-4.8.0/src/tesla_cli/infra/__init__.py +0 -0
- tesla_cli-4.8.0/src/tesla_cli/infra/fleet_telemetry_stack.py +490 -0
- tesla_cli-4.8.0/src/tesla_cli/infra/teslamate_stack.py +494 -0
- tesla_cli-4.8.0/src/tesla_cli/py.typed +0 -0
- tesla_cli-4.8.0/tesla-config-backup.json +70 -0
- tesla_cli-4.8.0/tests/__init__.py +1 -0
- tesla_cli-4.8.0/tests/conftest.py +139 -0
- tesla_cli-4.8.0/tests/test_api_routes.py +1088 -0
- tesla_cli-4.8.0/tests/test_api_routes_new.py +465 -0
- tesla_cli-4.8.0/tests/test_auth.py +436 -0
- tesla_cli-4.8.0/tests/test_browser_login.py +129 -0
- tesla_cli-4.8.0/tests/test_commands.py +800 -0
- tesla_cli-4.8.0/tests/test_models.py +274 -0
- tesla_cli-4.8.0/tests/test_new_commands.py +9429 -0
- tesla_cli-4.8.0/tests/test_order_backend.py +530 -0
- tesla_cli-4.8.0/tests/test_pipeline.py +174 -0
- tesla_cli-4.8.0/tests/test_providers.py +693 -0
- tesla_cli-4.8.0/tests/test_providers_new.py +918 -0
- tesla_cli-4.8.0/tests/test_runt.py +198 -0
- tesla_cli-4.8.0/tests/test_runt_integration.py +68 -0
- tesla_cli-4.8.0/tests/test_server.py +633 -0
- tesla_cli-4.8.0/tests/test_simit.py +212 -0
- tesla_cli-4.8.0/tests/test_simit_integration.py +73 -0
- tesla_cli-4.8.0/tests/test_sources.py +896 -0
- tesla_cli-4.8.0/tests/test_teslamate_stack.py +367 -0
- tesla_cli-4.8.0/tests/test_v260.py +529 -0
- tesla_cli-4.8.0/tests/test_v270.py +259 -0
- tesla_cli-4.8.0/tests/test_v280.py +475 -0
- tesla_cli-4.8.0/tests/test_v290.py +541 -0
- tesla_cli-4.8.0/tests/test_v300.py +495 -0
- tesla_cli-4.8.0/tests/test_v310.py +398 -0
- tesla_cli-4.8.0/tests/test_v320.py +476 -0
- tesla_cli-4.8.0/tests/test_v330.py +417 -0
- tesla_cli-4.8.0/tests/test_v340.py +452 -0
- tesla_cli-4.8.0/ui/.browserslistrc +6 -0
- tesla_cli-4.8.0/ui/.gitignore +31 -0
- tesla_cli-4.8.0/ui/cypress/e2e/test.cy.ts +6 -0
- tesla_cli-4.8.0/ui/cypress/fixtures/example.json +5 -0
- tesla_cli-4.8.0/ui/cypress/support/commands.ts +37 -0
- tesla_cli-4.8.0/ui/cypress/support/e2e.ts +20 -0
- tesla_cli-4.8.0/ui/cypress.config.ts +10 -0
- tesla_cli-4.8.0/ui/eslint.config.js +30 -0
- tesla_cli-4.8.0/ui/index.html +31 -0
- tesla_cli-4.8.0/ui/ionic.config.json +5 -0
- tesla_cli-4.8.0/ui/ionic.starter.json +12 -0
- tesla_cli-4.8.0/ui/package-lock.json +11123 -0
- tesla_cli-4.8.0/ui/package.json +54 -0
- tesla_cli-4.8.0/ui/public/favicon.png +0 -0
- tesla_cli-4.8.0/ui/public/manifest.json +24 -0
- tesla_cli-4.8.0/ui/src/App.test.tsx +8 -0
- tesla_cli-4.8.0/ui/src/App.tsx +119 -0
- tesla_cli-4.8.0/ui/src/api/client.ts +673 -0
- tesla_cli-4.8.0/ui/src/components/BatteryGauge.tsx +136 -0
- tesla_cli-4.8.0/ui/src/components/CommandButton.tsx +84 -0
- tesla_cli-4.8.0/ui/src/components/ExploreContainer.css +24 -0
- tesla_cli-4.8.0/ui/src/components/ExploreContainer.tsx +14 -0
- tesla_cli-4.8.0/ui/src/components/ModelYSilhouette.tsx +328 -0
- tesla_cli-4.8.0/ui/src/components/RecentCharges.tsx +64 -0
- tesla_cli-4.8.0/ui/src/components/SeatHeaterGrid.tsx +152 -0
- tesla_cli-4.8.0/ui/src/components/StatusBadge.tsx +50 -0
- tesla_cli-4.8.0/ui/src/components/VehicleMap.tsx +72 -0
- tesla_cli-4.8.0/ui/src/components/dossier/CollapsibleSection.tsx +43 -0
- tesla_cli-4.8.0/ui/src/components/dossier/LogisticsCard.tsx +127 -0
- tesla_cli-4.8.0/ui/src/components/dossier/OptionCodesPills.tsx +64 -0
- tesla_cli-4.8.0/ui/src/components/dossier/RuntCard.tsx +114 -0
- tesla_cli-4.8.0/ui/src/components/dossier/SimitCard.tsx +90 -0
- tesla_cli-4.8.0/ui/src/components/dossier/SpecsGrid.tsx +65 -0
- tesla_cli-4.8.0/ui/src/components/dossier/StatusPipeline.tsx +71 -0
- tesla_cli-4.8.0/ui/src/components/icons/Icons.tsx +273 -0
- tesla_cli-4.8.0/ui/src/components/icons/Spinner.tsx +25 -0
- tesla_cli-4.8.0/ui/src/hooks/useDossierData.ts +105 -0
- tesla_cli-4.8.0/ui/src/hooks/useVehicleData.ts +110 -0
- tesla_cli-4.8.0/ui/src/main.tsx +11 -0
- tesla_cli-4.8.0/ui/src/pages/Action.tsx +301 -0
- tesla_cli-4.8.0/ui/src/pages/Analytics.tsx +652 -0
- tesla_cli-4.8.0/ui/src/pages/Dashboard.tsx +692 -0
- tesla_cli-4.8.0/ui/src/pages/Dossier.tsx +350 -0
- tesla_cli-4.8.0/ui/src/pages/Home.css +0 -0
- tesla_cli-4.8.0/ui/src/pages/Navigation.tsx +367 -0
- tesla_cli-4.8.0/ui/src/pages/Settings.tsx +756 -0
- tesla_cli-4.8.0/ui/src/pages/Vehicle.tsx +95 -0
- tesla_cli-4.8.0/ui/src/pages/vehicle/ChargeContent.tsx +271 -0
- tesla_cli-4.8.0/ui/src/pages/vehicle/ClimateContent.tsx +314 -0
- tesla_cli-4.8.0/ui/src/pages/vehicle/ControlsContent.tsx +118 -0
- tesla_cli-4.8.0/ui/src/pages/vehicle/ScheduleContent.tsx +264 -0
- tesla_cli-4.8.0/ui/src/setupTests.ts +14 -0
- tesla_cli-4.8.0/ui/src/theme/variables.css +805 -0
- tesla_cli-4.8.0/ui/src/vite-env.d.ts +1 -0
- tesla_cli-4.8.0/ui/tsconfig.json +21 -0
- tesla_cli-4.8.0/ui/tsconfig.node.json +9 -0
- tesla_cli-4.8.0/ui/vite.config.ts +31 -0
- tesla_cli-4.8.0/uv.lock +3874 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Tesla CLI — Docker Configuration
|
|
2
|
+
# Copy to .env and fill in your values: cp .env.example .env
|
|
3
|
+
|
|
4
|
+
# ── Required ──────────────────────────────────────────────────
|
|
5
|
+
TESLA_VIN= # Your Tesla VIN (17 characters)
|
|
6
|
+
TESLA_RN= # Order reservation number (e.g. RNXXXXXXXXX)
|
|
7
|
+
|
|
8
|
+
# ── API Server ────────────────────────────────────────────────
|
|
9
|
+
TESLA_PORT=8080 # Dashboard + API port
|
|
10
|
+
|
|
11
|
+
# ── Full Stack (docker-compose.full.yml) ──────────────────────
|
|
12
|
+
DB_PASSWORD=teslamate # PostgreSQL password
|
|
13
|
+
ENCRYPTION_KEY=changeme # TeslaMate encryption key (generate a random string)
|
|
14
|
+
TM_PORT=4000 # TeslaMate web UI port
|
|
15
|
+
GRAFANA_PORT=3000 # Grafana dashboard port
|
|
16
|
+
GRAFANA_PASSWORD=admin # Grafana admin password
|
|
17
|
+
MQTT_PORT=1883 # Mosquitto MQTT port
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Report a bug in tesla-cli
|
|
4
|
+
title: "[Bug] "
|
|
5
|
+
labels: bug
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Describe the bug
|
|
9
|
+
A clear description of what the bug is.
|
|
10
|
+
|
|
11
|
+
## To Reproduce
|
|
12
|
+
Steps to reproduce:
|
|
13
|
+
1. Run `tesla ...`
|
|
14
|
+
2. See error
|
|
15
|
+
|
|
16
|
+
## Expected behavior
|
|
17
|
+
What you expected to happen.
|
|
18
|
+
|
|
19
|
+
## Environment
|
|
20
|
+
- OS: [e.g. macOS 15, Ubuntu 24.04]
|
|
21
|
+
- Python: [e.g. 3.12]
|
|
22
|
+
- tesla-cli version: [e.g. 4.8.0]
|
|
23
|
+
- Backend: [owner / fleet / fleet-signed / tessie]
|
|
24
|
+
|
|
25
|
+
## Logs
|
|
26
|
+
```
|
|
27
|
+
Paste relevant output here
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Additional context
|
|
31
|
+
Any other context (screenshots, config, etc.)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request
|
|
3
|
+
about: Suggest a new feature
|
|
4
|
+
title: "[Feature] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Problem
|
|
9
|
+
What problem does this solve?
|
|
10
|
+
|
|
11
|
+
## Proposed Solution
|
|
12
|
+
Describe the feature you'd like.
|
|
13
|
+
|
|
14
|
+
## Alternatives Considered
|
|
15
|
+
Any alternatives you've thought about.
|
|
16
|
+
|
|
17
|
+
## Additional context
|
|
18
|
+
Any other context (screenshots, links, etc.)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
name: Lint
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- uses: astral-sh/setup-uv@v4
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.12"
|
|
18
|
+
- run: uv sync --extra dev
|
|
19
|
+
- run: uv run ruff check src/ tests/
|
|
20
|
+
- run: uv run ruff format --check src/ tests/
|
|
21
|
+
|
|
22
|
+
test:
|
|
23
|
+
name: Test (Python ${{ matrix.python-version }})
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
strategy:
|
|
26
|
+
matrix:
|
|
27
|
+
python-version: ["3.12", "3.13"]
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
- uses: astral-sh/setup-uv@v4
|
|
31
|
+
with:
|
|
32
|
+
python-version: ${{ matrix.python-version }}
|
|
33
|
+
- run: uv sync --extra dev --extra serve --extra fleet --extra teslaMate --extra pdf --extra query
|
|
34
|
+
- run: uv run pytest -m "not integration" -v --cov=tesla_cli --cov-report=xml
|
|
35
|
+
env:
|
|
36
|
+
NO_COLOR: "1"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-and-publish:
|
|
10
|
+
name: Build and publish to PyPI
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
environment:
|
|
13
|
+
name: pypi
|
|
14
|
+
url: https://pypi.org/p/tesla-cli
|
|
15
|
+
permissions:
|
|
16
|
+
id-token: write # Trusted Publishing (no API token needed)
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
run: uv python install 3.12
|
|
26
|
+
|
|
27
|
+
- name: Build package
|
|
28
|
+
run: uv build
|
|
29
|
+
|
|
30
|
+
- name: Publish to PyPI
|
|
31
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.pyc
|
|
4
|
+
*.pyo
|
|
5
|
+
*.egg-info/
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
.venv/
|
|
9
|
+
|
|
10
|
+
# IDE
|
|
11
|
+
.idea/
|
|
12
|
+
.vscode/
|
|
13
|
+
*.swp
|
|
14
|
+
*.swo
|
|
15
|
+
|
|
16
|
+
# OS
|
|
17
|
+
.DS_Store
|
|
18
|
+
Thumbs.db
|
|
19
|
+
|
|
20
|
+
# Secrets & tokens (NEVER commit)
|
|
21
|
+
.tesla-cli/
|
|
22
|
+
mitm-captures/
|
|
23
|
+
*.flow
|
|
24
|
+
|
|
25
|
+
# Large data files (generated, not source)
|
|
26
|
+
references/
|
|
27
|
+
nhtsa-complaints.json
|
|
28
|
+
nhtsa-investigations.json
|
|
29
|
+
public-api-data.json
|
|
30
|
+
activity-log.json
|
|
31
|
+
mission-control-data.json
|
|
32
|
+
history/
|
|
33
|
+
*.pdf
|
|
34
|
+
|
|
35
|
+
# Personal automation scripts
|
|
36
|
+
refresh-mission-control.py
|
|
37
|
+
change-detector.py
|
|
38
|
+
build-activity-log.sh
|
|
39
|
+
mitm-tesla-capture.py
|
|
40
|
+
|
|
41
|
+
# Generated reports and data exports
|
|
42
|
+
dossier-report.html
|
|
43
|
+
design-studio-co.json
|
|
44
|
+
specs-sources.json
|
|
45
|
+
tesla-ssr-data.json
|
|
46
|
+
IMPLEMENTATION-PLAN.md
|
|
47
|
+
|
|
48
|
+
# Claude Code local settings
|
|
49
|
+
.claude/settings.local.json
|
|
50
|
+
.claude/
|
|
51
|
+
|
|
52
|
+
# UI (React frontend)
|
|
53
|
+
ui/node_modules/
|
|
54
|
+
ui/dist/
|
|
55
|
+
ui/.vscode/
|
|
56
|
+
src/tesla_cli/api/ui_dist/
|
|
57
|
+
|
|
58
|
+
# Test artifacts
|
|
59
|
+
.coverage
|
|
60
|
+
|
|
61
|
+
# OMC
|
|
62
|
+
missions/
|
|
63
|
+
.omx/
|
|
64
|
+
|
|
65
|
+
# Temp
|
|
66
|
+
fix-live-sources.py
|
|
67
|
+
superchargers-co.json
|
|
68
|
+
.env.local
|
|
69
|
+
.codex/
|
|
70
|
+
AGENTS.md
|
|
71
|
+
audit/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|