vantage-cli 0.1.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.
- vantage_cli-0.1.1/.commitlintrc.yml +2 -0
- vantage_cli-0.1.1/.github/workflows/ci.yml +49 -0
- vantage_cli-0.1.1/.github/workflows/pages.yml +51 -0
- vantage_cli-0.1.1/.github/workflows/publish.yml +205 -0
- vantage_cli-0.1.1/.gitignore +30 -0
- vantage_cli-0.1.1/PKG-INFO +30 -0
- vantage_cli-0.1.1/README.md +86 -0
- vantage_cli-0.1.1/docs/Gemfile +24 -0
- vantage_cli-0.1.1/docs/_config.yml +68 -0
- vantage_cli-0.1.1/docs/_data/project.yml +38 -0
- vantage_cli-0.1.1/docs/_layouts/default.html +2167 -0
- vantage_cli-0.1.1/docs/_layouts/home.html +5 -0
- vantage_cli-0.1.1/docs/_layouts/page.html +5 -0
- vantage_cli-0.1.1/docs/architecture.md +198 -0
- vantage_cli-0.1.1/docs/commands.md +91 -0
- vantage_cli-0.1.1/docs/contact.md +195 -0
- vantage_cli-0.1.1/docs/contributing.md +114 -0
- vantage_cli-0.1.1/docs/index.md +70 -0
- vantage_cli-0.1.1/docs/installation.md +29 -0
- vantage_cli-0.1.1/docs/overview.md +91 -0
- vantage_cli-0.1.1/docs/templates/new_content_placeholder.md +3 -0
- vantage_cli-0.1.1/docs/troubleshooting.md +69 -0
- vantage_cli-0.1.1/docs/usage.md +107 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/CHANGELOG.md +1698 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/LICENSE-APACHE +176 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/LICENSE-MIT +22 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/README.md +100 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/completions/_git-cliff +88 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/completions/_git-cliff.ps1 +86 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/completions/git-cliff.bash +198 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/completions/git-cliff.elv +80 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/completions/git-cliff.fish +44 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/git-cliff-completions +0 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/git-cliff-mangen +0 -0
- vantage_cli-0.1.1/git-cliff-2.10.0/man/git-cliff.1 +225 -0
- vantage_cli-0.1.1/justfile +81 -0
- vantage_cli-0.1.1/pyproject.toml +109 -0
- vantage_cli-0.1.1/tests/conftest.py +242 -0
- vantage_cli-0.1.1/tests/integration/test_gql_client_integration.py +247 -0
- vantage_cli-0.1.1/tests/unit/test_apps_common.py +43 -0
- vantage_cli-0.1.1/tests/unit/test_auth.py +728 -0
- vantage_cli-0.1.1/tests/unit/test_cache.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_cache_and_exceptions_tails.py +160 -0
- vantage_cli-0.1.1/tests/unit/test_cache_extra.py +58 -0
- vantage_cli-0.1.1/tests/unit/test_cache_with_cache_decorator.py +104 -0
- vantage_cli-0.1.1/tests/unit/test_client.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_client_extra.py +56 -0
- vantage_cli-0.1.1/tests/unit/test_cloud_commands.py +171 -0
- vantage_cli-0.1.1/tests/unit/test_cluster_commands.py +517 -0
- vantage_cli-0.1.1/tests/unit/test_cluster_create_extra.py +156 -0
- vantage_cli-0.1.1/tests/unit/test_cluster_schema.py +50 -0
- vantage_cli-0.1.1/tests/unit/test_cluster_utils_extra.py +143 -0
- vantage_cli-0.1.1/tests/unit/test_command_base.py +202 -0
- vantage_cli-0.1.1/tests/unit/test_config.py +523 -0
- vantage_cli-0.1.1/tests/unit/test_deployment_apps.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_exceptions.py +53 -0
- vantage_cli-0.1.1/tests/unit/test_exceptions_extra.py +23 -0
- vantage_cli-0.1.1/tests/unit/test_format.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_format_extra.py +16 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client.py +110 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client_comprehensive.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client_coverage.py +267 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client_coverage_extra.py +280 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client_extra.py +218 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client_integration.py +247 -0
- vantage_cli-0.1.1/tests/unit/test_gql_client_tails.py +159 -0
- vantage_cli-0.1.1/tests/unit/test_juju_localhost_app.py +316 -0
- vantage_cli-0.1.1/tests/unit/test_main.py +507 -0
- vantage_cli-0.1.1/tests/unit/test_main_branch_closure.py +66 -0
- vantage_cli-0.1.1/tests/unit/test_main_error_paths.py +80 -0
- vantage_cli-0.1.1/tests/unit/test_microk8s_app.py +147 -0
- vantage_cli-0.1.1/tests/unit/test_multipass_app.py +122 -0
- vantage_cli-0.1.1/tests/unit/test_profile.py +870 -0
- vantage_cli-0.1.1/tests/unit/test_profile_commands.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_profile_crud.py +339 -0
- vantage_cli-0.1.1/tests/unit/test_profile_crud_extra.py +322 -0
- vantage_cli-0.1.1/tests/unit/test_profile_render.py +40 -0
- vantage_cli-0.1.1/tests/unit/test_render.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_schemas.py +0 -0
- vantage_cli-0.1.1/tests/unit/test_templates_app.py +40 -0
- vantage_cli-0.1.1/tests/unit/test_time_loop.py +288 -0
- vantage_cli-0.1.1/uv.lock +1663 -0
- vantage_cli-0.1.1/vantage_cli/__init__.py +131 -0
- vantage_cli-0.1.1/vantage_cli/apps/__init__.py +22 -0
- vantage_cli-0.1.1/vantage_cli/apps/common.py +78 -0
- vantage_cli-0.1.1/vantage_cli/apps/juju_localhost/__init__.py +17 -0
- vantage_cli-0.1.1/vantage_cli/apps/juju_localhost/app.py +255 -0
- vantage_cli-0.1.1/vantage_cli/apps/juju_localhost/bundle_yaml.py +143 -0
- vantage_cli-0.1.1/vantage_cli/apps/microk8s/README.md +47 -0
- vantage_cli-0.1.1/vantage_cli/apps/microk8s/__init__.py +3 -0
- vantage_cli-0.1.1/vantage_cli/apps/microk8s/app.py +301 -0
- vantage_cli-0.1.1/vantage_cli/apps/multipass_singlenode/__init__.py +12 -0
- vantage_cli-0.1.1/vantage_cli/apps/multipass_singlenode/app.py +173 -0
- vantage_cli-0.1.1/vantage_cli/apps/templates.py +178 -0
- vantage_cli-0.1.1/vantage_cli/auth.py +429 -0
- vantage_cli-0.1.1/vantage_cli/cache.py +143 -0
- vantage_cli-0.1.1/vantage_cli/client.py +84 -0
- vantage_cli-0.1.1/vantage_cli/command_base.py +63 -0
- vantage_cli-0.1.1/vantage_cli/commands/__init__.py +1 -0
- vantage_cli-0.1.1/vantage_cli/commands/clouds/__init__.py +20 -0
- vantage_cli-0.1.1/vantage_cli/commands/clouds/add.py +81 -0
- vantage_cli-0.1.1/vantage_cli/commands/clouds/delete.py +61 -0
- vantage_cli-0.1.1/vantage_cli/commands/clouds/render.py +146 -0
- vantage_cli-0.1.1/vantage_cli/commands/clouds/update.py +97 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/__init__.py +27 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/create.py +270 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/delete.py +101 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/get.py +30 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/list.py +84 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/render.py +233 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/schema.py +31 -0
- vantage_cli-0.1.1/vantage_cli/commands/clusters/utils.py +248 -0
- vantage_cli-0.1.1/vantage_cli/commands/profile/__init__.py +30 -0
- vantage_cli-0.1.1/vantage_cli/commands/profile/crud.py +529 -0
- vantage_cli-0.1.1/vantage_cli/commands/profile/render.py +55 -0
- vantage_cli-0.1.1/vantage_cli/config.py +161 -0
- vantage_cli-0.1.1/vantage_cli/constants.py +40 -0
- vantage_cli-0.1.1/vantage_cli/exceptions.py +127 -0
- vantage_cli-0.1.1/vantage_cli/format.py +39 -0
- vantage_cli-0.1.1/vantage_cli/gql_client.py +655 -0
- vantage_cli-0.1.1/vantage_cli/main.py +303 -0
- vantage_cli-0.1.1/vantage_cli/render.py +56 -0
- vantage_cli-0.1.1/vantage_cli/schemas.py +48 -0
- vantage_cli-0.1.1/vantage_cli/time_loop.py +124 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: Vantage CLI Code Quality Checks
|
|
2
|
+
on:
|
|
3
|
+
workflow_call:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
commitlint:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
if: github.event_name == 'pull_request'
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
- name: Setup node
|
|
24
|
+
uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: lts/*
|
|
27
|
+
- name: Install commitlint
|
|
28
|
+
run: npm install -D @commitlint/cli @commitlint/config-conventional
|
|
29
|
+
- name: Validate PR commits with commitlint
|
|
30
|
+
run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
|
|
31
|
+
|
|
32
|
+
ci-tests:
|
|
33
|
+
name: CI-Tests
|
|
34
|
+
runs-on: ubuntu-24.04
|
|
35
|
+
steps:
|
|
36
|
+
- name: Checkout
|
|
37
|
+
uses: actions/checkout@v4
|
|
38
|
+
- name: Install `just`
|
|
39
|
+
run: sudo snap install just --classic
|
|
40
|
+
- name: Install `uv`
|
|
41
|
+
run: sudo snap install astral-uv --classic
|
|
42
|
+
- name: Run lint checks
|
|
43
|
+
run: just lint
|
|
44
|
+
- name: Run type checks
|
|
45
|
+
run: just typecheck
|
|
46
|
+
- name: Run unit tests
|
|
47
|
+
run: just unit
|
|
48
|
+
- name: Run integration tests
|
|
49
|
+
run: just integration
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Sample workflow for building and deploying a Jekyll site to GitHub Pages
|
|
2
|
+
name: Deploy Jekyll with GitHub Pages dependencies preinstalled
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
# Runs on pushes targeting the default branch
|
|
6
|
+
push:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
|
|
9
|
+
# Allows you to run this workflow manually from the Actions tab
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
pages: write
|
|
16
|
+
id-token: write
|
|
17
|
+
|
|
18
|
+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
19
|
+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
20
|
+
concurrency:
|
|
21
|
+
group: "pages"
|
|
22
|
+
cancel-in-progress: false
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
# Build job
|
|
26
|
+
build:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
- name: Setup Pages
|
|
32
|
+
uses: actions/configure-pages@v5
|
|
33
|
+
- name: Build with Jekyll
|
|
34
|
+
uses: actions/jekyll-build-pages@v1
|
|
35
|
+
with:
|
|
36
|
+
source: ./docs
|
|
37
|
+
destination: ./_site
|
|
38
|
+
- name: Upload artifact
|
|
39
|
+
uses: actions/upload-pages-artifact@v3
|
|
40
|
+
|
|
41
|
+
# Deployment job
|
|
42
|
+
deploy:
|
|
43
|
+
environment:
|
|
44
|
+
name: github-pages
|
|
45
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
needs: build
|
|
48
|
+
steps:
|
|
49
|
+
- name: Deploy to GitHub Pages
|
|
50
|
+
id: deployment
|
|
51
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Copyright (c) 2025 Vantage Compute Corporation.
|
|
2
|
+
name: Build and Release
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
tags:
|
|
7
|
+
- "[0-9]+.[0-9]+.[0-9]+"
|
|
8
|
+
- "[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+"
|
|
9
|
+
- "[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+"
|
|
10
|
+
- "[0-9]+.[0-9]+.[0-9]+a[0-9]+"
|
|
11
|
+
- "[0-9]+.[0-9]+.[0-9]+b[0-9]+"
|
|
12
|
+
- "[0-9]+.[0-9]+.[0-9]+rc[0-9]+"
|
|
13
|
+
workflow_dispatch: # Allow manual triggering
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: write # Required for creating releases
|
|
17
|
+
id-token: write # Required for PyPI trusted publishing
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
build:
|
|
21
|
+
name: Build Distribution
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Checkout code
|
|
26
|
+
uses: actions/checkout@v4
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0 # Fetch full history for proper version detection
|
|
29
|
+
|
|
30
|
+
- name: Set up Python
|
|
31
|
+
uses: actions/setup-python@v5
|
|
32
|
+
with:
|
|
33
|
+
python-version: '3.12'
|
|
34
|
+
|
|
35
|
+
- name: Install system dependencies
|
|
36
|
+
run: |
|
|
37
|
+
sudo apt-get update
|
|
38
|
+
sudo apt-get install -y build-essential
|
|
39
|
+
sudo snap install astral-uv --classic
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
- name: Install git-cliff
|
|
43
|
+
run: |
|
|
44
|
+
curl -L https://github.com/orhun/git-cliff/releases/download/v2.10.0/git-cliff-2.10.0-x86_64-unknown-linux-gnu.tar.gz | tar xz
|
|
45
|
+
sudo mv git-cliff-*/git-cliff /usr/local/bin/
|
|
46
|
+
git-cliff --version
|
|
47
|
+
|
|
48
|
+
- name: Build Python package
|
|
49
|
+
run: |
|
|
50
|
+
uv build
|
|
51
|
+
|
|
52
|
+
- name: Check build artifacts
|
|
53
|
+
run: |
|
|
54
|
+
ls -la dist/
|
|
55
|
+
# Basic validation - ensure files exist
|
|
56
|
+
test -n "$(find dist -name '*.whl')" || (echo "No wheel files found" && exit 1)
|
|
57
|
+
test -n "$(find dist -name '*.tar.gz')" || (echo "No source distribution found" && exit 1)
|
|
58
|
+
|
|
59
|
+
- name: Upload build artifacts
|
|
60
|
+
uses: actions/upload-artifact@v4
|
|
61
|
+
with:
|
|
62
|
+
name: distribution-files
|
|
63
|
+
path: dist/
|
|
64
|
+
retention-days: 7
|
|
65
|
+
|
|
66
|
+
test-install:
|
|
67
|
+
name: Test Installation
|
|
68
|
+
needs: build
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
strategy:
|
|
71
|
+
matrix:
|
|
72
|
+
python-version: ['3.12', '3.13']
|
|
73
|
+
|
|
74
|
+
steps:
|
|
75
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
76
|
+
uses: actions/setup-python@v5
|
|
77
|
+
with:
|
|
78
|
+
python-version: ${{ matrix.python-version }}
|
|
79
|
+
|
|
80
|
+
- name: Download build artifacts
|
|
81
|
+
uses: actions/download-artifact@v4
|
|
82
|
+
with:
|
|
83
|
+
name: distribution-files
|
|
84
|
+
path: dist/
|
|
85
|
+
|
|
86
|
+
- name: Test wheel installation
|
|
87
|
+
run: |
|
|
88
|
+
sudo snap install astral-uv --classic
|
|
89
|
+
uv venv
|
|
90
|
+
uv pip install dist/*.whl
|
|
91
|
+
uv run python3 -c "import vantage_cli; print('Package imported successfully')"
|
|
92
|
+
|
|
93
|
+
publish-pypi:
|
|
94
|
+
name: Publish to PyPI
|
|
95
|
+
needs: [build, test-install]
|
|
96
|
+
runs-on: ubuntu-latest
|
|
97
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
98
|
+
environment:
|
|
99
|
+
name: pypi
|
|
100
|
+
url: https://pypi.org/p/vantage-cli
|
|
101
|
+
|
|
102
|
+
steps:
|
|
103
|
+
- name: Download build artifacts
|
|
104
|
+
uses: actions/download-artifact@v4
|
|
105
|
+
with:
|
|
106
|
+
name: distribution-files
|
|
107
|
+
path: dist/
|
|
108
|
+
|
|
109
|
+
- name: Publish to PyPI
|
|
110
|
+
run: |
|
|
111
|
+
sudo snap install astral-uv --classic
|
|
112
|
+
uv publish
|
|
113
|
+
|
|
114
|
+
create-release:
|
|
115
|
+
name: Create GitHub Release
|
|
116
|
+
needs: [build, test-install]
|
|
117
|
+
runs-on: ubuntu-latest
|
|
118
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
119
|
+
|
|
120
|
+
steps:
|
|
121
|
+
- name: Checkout code
|
|
122
|
+
uses: actions/checkout@v4
|
|
123
|
+
with:
|
|
124
|
+
fetch-depth: 0
|
|
125
|
+
|
|
126
|
+
- name: Download build artifacts
|
|
127
|
+
uses: actions/download-artifact@v4
|
|
128
|
+
with:
|
|
129
|
+
name: distribution-files
|
|
130
|
+
path: dist/
|
|
131
|
+
|
|
132
|
+
- name: Extract version from tag
|
|
133
|
+
id: get_version
|
|
134
|
+
run: |
|
|
135
|
+
VERSION=${GITHUB_REF#refs/tags/}
|
|
136
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
137
|
+
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
138
|
+
|
|
139
|
+
- name: Generate release notes
|
|
140
|
+
id: release_notes
|
|
141
|
+
run: |
|
|
142
|
+
# Extract release notes from CHANGELOG.md if it exists
|
|
143
|
+
if [ -f "CHANGELOG.md" ]; then
|
|
144
|
+
# Try to extract notes for this version using git-cliff for consistency
|
|
145
|
+
VERSION="${{ steps.get_version.outputs.version }}"
|
|
146
|
+
|
|
147
|
+
# Use git-cliff to generate notes for this specific version
|
|
148
|
+
git-cliff --latest --strip header --strip footer > release_notes.txt || true
|
|
149
|
+
|
|
150
|
+
# If that fails, fall back to grep method
|
|
151
|
+
if [ ! -s release_notes.txt ]; then
|
|
152
|
+
grep -A 1000 "^## .*${VERSION}" CHANGELOG.md | grep -B 1000 -m 2 "^## " | head -n -1 | tail -n +2 > release_notes.txt || true
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
# If no specific version notes found, create generic notes
|
|
156
|
+
if [ ! -s release_notes.txt ]; then
|
|
157
|
+
echo "Release ${{ steps.get_version.outputs.tag }}" > release_notes.txt
|
|
158
|
+
echo "" >> release_notes.txt
|
|
159
|
+
echo "### Changes" >> release_notes.txt
|
|
160
|
+
echo "- See CHANGELOG.md for detailed changes" >> release_notes.txt
|
|
161
|
+
fi
|
|
162
|
+
else
|
|
163
|
+
echo "Release ${{ steps.get_version.outputs.tag }}" > release_notes.txt
|
|
164
|
+
echo "" >> release_notes.txt
|
|
165
|
+
echo "### Files" >> release_notes.txt
|
|
166
|
+
echo "- Source distribution (tar.gz)" >> release_notes.txt
|
|
167
|
+
echo "- Wheel distribution (.whl)" >> release_notes.txt
|
|
168
|
+
fi
|
|
169
|
+
|
|
170
|
+
echo "Release notes:"
|
|
171
|
+
cat release_notes.txt
|
|
172
|
+
|
|
173
|
+
- name: Create Release
|
|
174
|
+
uses: softprops/action-gh-release@v1
|
|
175
|
+
with:
|
|
176
|
+
name: Release ${{ steps.get_version.outputs.tag }}
|
|
177
|
+
body_path: release_notes.txt
|
|
178
|
+
files: |
|
|
179
|
+
dist/*.tar.gz
|
|
180
|
+
dist/*.whl
|
|
181
|
+
draft: false
|
|
182
|
+
prerelease: ${{ contains(steps.get_version.outputs.version, 'rc') || contains(steps.get_version.outputs.version, 'beta') || contains(steps.get_version.outputs.version, 'alpha') }}
|
|
183
|
+
generate_release_notes: true
|
|
184
|
+
env:
|
|
185
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
186
|
+
|
|
187
|
+
notify-success:
|
|
188
|
+
name: Notify Success
|
|
189
|
+
needs: [publish-pypi, create-release]
|
|
190
|
+
runs-on: ubuntu-latest
|
|
191
|
+
if: success() && startsWith(github.ref, 'refs/tags/')
|
|
192
|
+
|
|
193
|
+
steps:
|
|
194
|
+
- name: Extract version from tag
|
|
195
|
+
id: get_version
|
|
196
|
+
run: |
|
|
197
|
+
VERSION=${GITHUB_REF#refs/tags/}
|
|
198
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
199
|
+
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
200
|
+
|
|
201
|
+
- name: Success notification
|
|
202
|
+
run: |
|
|
203
|
+
echo "🎉 Successfully released vantage-cli ${{ steps.get_version.outputs.tag }}"
|
|
204
|
+
echo "📦 Published to PyPI: https://pypi.org/project/vantage-cli/${{ steps.get_version.outputs.version }}/"
|
|
205
|
+
echo "🚀 GitHub Release: ${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ steps.get_version.outputs.tag }}"
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
**/__pycache__/
|
|
3
|
+
**/**/__pycache__/
|
|
4
|
+
.venv
|
|
5
|
+
venv/
|
|
6
|
+
env/
|
|
7
|
+
.env
|
|
8
|
+
**/.env
|
|
9
|
+
.coverage
|
|
10
|
+
cover_unit
|
|
11
|
+
cover_integration
|
|
12
|
+
cover_combined
|
|
13
|
+
.coverage.*
|
|
14
|
+
coverage
|
|
15
|
+
cover/
|
|
16
|
+
htmlcov/
|
|
17
|
+
.tox/
|
|
18
|
+
.nox/
|
|
19
|
+
.pytest_cache/
|
|
20
|
+
.pytest_cache/**
|
|
21
|
+
.pytest_cache/**/*
|
|
22
|
+
.pytest_cache/**/*
|
|
23
|
+
.ruff_cache/
|
|
24
|
+
.mypy_cache/
|
|
25
|
+
.dmypy.json
|
|
26
|
+
.dmypy.json/**
|
|
27
|
+
.pyre/
|
|
28
|
+
.pyre/**
|
|
29
|
+
.pyre/**/*
|
|
30
|
+
.ipynb_checkpoints
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vantage-cli
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: The Vantage Compute CLI.
|
|
5
|
+
Author-email: jamesbeedy <james@vantagecompute.ai>
|
|
6
|
+
License: MIT
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
9
|
+
Requires-Dist: anyio>=3.6.0
|
|
10
|
+
Requires-Dist: gql>=4.0.0
|
|
11
|
+
Requires-Dist: httpx>=0.28.1
|
|
12
|
+
Requires-Dist: juju~=3.6
|
|
13
|
+
Requires-Dist: loguru>=0.7.3
|
|
14
|
+
Requires-Dist: pendulum>=3.1.0
|
|
15
|
+
Requires-Dist: py-buzz>=7.3
|
|
16
|
+
Requires-Dist: pydantic>=2.11
|
|
17
|
+
Requires-Dist: python-jose[cryptography]>=3.5.0
|
|
18
|
+
Requires-Dist: requests-toolbelt>=0.10.0
|
|
19
|
+
Requires-Dist: rich>=14.1.0
|
|
20
|
+
Requires-Dist: ruamel-yaml
|
|
21
|
+
Requires-Dist: snick>=2.1
|
|
22
|
+
Requires-Dist: typer>=0.17.4
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: black; extra == 'dev'
|
|
25
|
+
Requires-Dist: codespell; extra == 'dev'
|
|
26
|
+
Requires-Dist: coverage[toml]~=7.8; extra == 'dev'
|
|
27
|
+
Requires-Dist: pyright; extra == 'dev'
|
|
28
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
29
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://www.vantagecompute.ai/">
|
|
3
|
+
<img src="https://vantage-compute-public-assets.s3.us-east-1.amazonaws.com/branding/vantage-logo-text-black-horz.png" alt="Vantage Compute Logo" width="100" style="margin-bottom: 0.5em;"/>
|
|
4
|
+
</a>
|
|
5
|
+
</div>
|
|
6
|
+
<div align="center">
|
|
7
|
+
|
|
8
|
+
# Vantage CLI
|
|
9
|
+
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://python.org)
|
|
12
|
+
[](https://pypi.org/project/vantage-cli/)
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+

|
|
16
|
+

|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
A modern Python CLI tool to interface to Vantage Compute.
|
|
22
|
+
|
|
23
|
+
## 🚀 Quick Start
|
|
24
|
+
|
|
25
|
+
### Option 1: Install from PyPI (Recommended)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Install LXD
|
|
29
|
+
pip install vantage-cli
|
|
30
|
+
|
|
31
|
+
# Login to Vantage
|
|
32
|
+
vantage login
|
|
33
|
+
|
|
34
|
+
# Check your logged in user
|
|
35
|
+
vantage whoami
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Option 2: Install from Source
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Clone and setup
|
|
42
|
+
git clone https://github.com/vantagecompute/vantage-cli.git
|
|
43
|
+
cd vantage-cli && uv sync
|
|
44
|
+
|
|
45
|
+
# Login to Vantage
|
|
46
|
+
uv run vantage login
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 📚 Documentation
|
|
50
|
+
|
|
51
|
+
Visit our comprehensive documentation site:
|
|
52
|
+
**[vantagecompute.github.io/vantage-cli](https://vantagecompute.github.io/vantage-cli)**
|
|
53
|
+
|
|
54
|
+
- **[Installation Guide](https://vantagecompute.github.io/vantage-cli/installation/)**: Detailed setup instructions
|
|
55
|
+
- **[Architecture Overview](https://vantagecompute.github.io/vantage-cli/architecture/)**: How vantage-cli works
|
|
56
|
+
- **[Command Reference](https://vantagecompute.github.io/vantage-cli/commands/)**: Complete command documentation
|
|
57
|
+
- **[Troubleshooting](https://vantagecompute.github.io/vantage-cli/troubleshooting/)**: Common issues and solutions
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## 📄 License
|
|
61
|
+
|
|
62
|
+
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
|
|
63
|
+
|
|
64
|
+
Copyright 2025 Vantage Compute Corporation
|
|
65
|
+
|
|
66
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
67
|
+
you may not use this file except in compliance with the License.
|
|
68
|
+
You may obtain a copy of the License at
|
|
69
|
+
|
|
70
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
71
|
+
|
|
72
|
+
Unless required by applicable law or agreed to in writing, software
|
|
73
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
74
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
75
|
+
See the License for the specific language governing permissions and
|
|
76
|
+
limitations under the License.
|
|
77
|
+
|
|
78
|
+
## 🆘 Support
|
|
79
|
+
|
|
80
|
+
- **Issues**: [GitHub Issues](https://github.com/vantagecompute/vantage-cli/issues)
|
|
81
|
+
- **Discussions**: [GitHub Discussions](https://github.com/vantagecompute/vantage-cli/discussions)
|
|
82
|
+
- **Email**: [james@vantagecompute.ai](mailto:james@vantagecompute.ai)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
**Made with ❤️ by [Vantage Compute](https://vantagecompute.ai)**
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
|
|
3
|
+
gem "github-pages", group: :jekyll_plugins
|
|
4
|
+
gem "webrick", "~> 1.7"
|
|
5
|
+
|
|
6
|
+
group :jekyll_plugins do
|
|
7
|
+
gem "jekyll-feed", "~> 0.12"
|
|
8
|
+
gem "jekyll-sitemap"
|
|
9
|
+
gem "jekyll-seo-tag"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
|
13
|
+
# and associated library.
|
|
14
|
+
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
|
15
|
+
gem "tzinfo", ">= 1", "< 3"
|
|
16
|
+
gem "tzinfo-data"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Performance-booster for watching directories on Windows
|
|
20
|
+
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
|
21
|
+
|
|
22
|
+
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
|
23
|
+
# do not have a Java counterpart.
|
|
24
|
+
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Copyright (c) 2025 James Beedy.
|
|
2
|
+
# GitHub Pages configuration for Vantage CLI
|
|
3
|
+
title: Vantage CLI
|
|
4
|
+
description: A powerful Python CLI for interacting with the Vantage platform.
|
|
5
|
+
|
|
6
|
+
# Site settings
|
|
7
|
+
url: "https://vantagecompute.github.io"
|
|
8
|
+
baseurl: "/vantage-cli"
|
|
9
|
+
repository: "vantagecompute/vantage-cli"
|
|
10
|
+
|
|
11
|
+
# Logo and branding
|
|
12
|
+
show_downloads: true
|
|
13
|
+
|
|
14
|
+
# Author information
|
|
15
|
+
author:
|
|
16
|
+
name: "James Beedy"
|
|
17
|
+
email: "james@vantagecompute.ai"
|
|
18
|
+
|
|
19
|
+
# Social links
|
|
20
|
+
github_username: vantagecompute
|
|
21
|
+
|
|
22
|
+
# Build settings
|
|
23
|
+
markdown: kramdown
|
|
24
|
+
highlighter: rouge
|
|
25
|
+
kramdown:
|
|
26
|
+
syntax_highlighter: rouge
|
|
27
|
+
syntax_highlighter_opts:
|
|
28
|
+
line_numbers: false
|
|
29
|
+
block:
|
|
30
|
+
line_numbers: false
|
|
31
|
+
span:
|
|
32
|
+
line_numbers: false
|
|
33
|
+
input: GFM
|
|
34
|
+
|
|
35
|
+
plugins:
|
|
36
|
+
- jekyll-feed
|
|
37
|
+
- jekyll-sitemap
|
|
38
|
+
- jekyll-seo-tag
|
|
39
|
+
|
|
40
|
+
# Exclude files from processing
|
|
41
|
+
exclude:
|
|
42
|
+
- Gemfile
|
|
43
|
+
- Gemfile.lock
|
|
44
|
+
- node_modules
|
|
45
|
+
- vendor/bundle/
|
|
46
|
+
- vendor/cache/
|
|
47
|
+
- vendor/gems/
|
|
48
|
+
- vendor/ruby/
|
|
49
|
+
- README.md
|
|
50
|
+
|
|
51
|
+
# Collections
|
|
52
|
+
collections:
|
|
53
|
+
docs:
|
|
54
|
+
output: true
|
|
55
|
+
permalink: /:collection/:name/
|
|
56
|
+
|
|
57
|
+
# Defaults
|
|
58
|
+
defaults:
|
|
59
|
+
- scope:
|
|
60
|
+
path: ""
|
|
61
|
+
type: "pages"
|
|
62
|
+
values:
|
|
63
|
+
layout: "page"
|
|
64
|
+
- scope:
|
|
65
|
+
path: ""
|
|
66
|
+
type: "docs"
|
|
67
|
+
values:
|
|
68
|
+
layout: "page"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Project metadata for Vantage CLI
|
|
2
|
+
name: "vantage-cli"
|
|
3
|
+
version: "0.1.0"
|
|
4
|
+
description: "CLI for authentication, profiles, clusters, apps & GraphQL against the Vantage Compute platform"
|
|
5
|
+
repository: "https://github.com/vantagecompute/vantage-cli"
|
|
6
|
+
documentation: "https://vantagecompute.github.io/vantage-cli"
|
|
7
|
+
license: "Apache 2.0"
|
|
8
|
+
python_version: ">=3.12"
|
|
9
|
+
updated: "2025-09-09"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# Key technologies
|
|
14
|
+
technologies:
|
|
15
|
+
- "Python 3.12+"
|
|
16
|
+
- "Typer CLI Framework"
|
|
17
|
+
- "Rich Terminal UI"
|
|
18
|
+
- "HTTPX Async Client"
|
|
19
|
+
- "GraphQL"
|
|
20
|
+
- "OIDC / OAuth2"
|
|
21
|
+
- "Pytest"
|
|
22
|
+
- "uv Package Manager"
|
|
23
|
+
- "Pydantic-style Schemas"
|
|
24
|
+
- "GitHub Actions CI"
|
|
25
|
+
- "MicroK8s (app helper)"
|
|
26
|
+
- "Multipass (app helper)"
|
|
27
|
+
- "Juju (app helper)"
|
|
28
|
+
|
|
29
|
+
# Package features
|
|
30
|
+
features:
|
|
31
|
+
- "Profile & token management"
|
|
32
|
+
- "Cluster create/list/get/delete"
|
|
33
|
+
- "Client secret retrieval"
|
|
34
|
+
- "App deployment helpers"
|
|
35
|
+
- "GraphQL query execution"
|
|
36
|
+
- "Retry & metrics logging"
|
|
37
|
+
- "JSON or Rich output"
|
|
38
|
+
- "High test coverage"
|