pascal-cli 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.
Files changed (55) hide show
  1. pascal_cli-0.1.0/.github/workflows/ci.yml +38 -0
  2. pascal_cli-0.1.0/.github/workflows/docs.yml +51 -0
  3. pascal_cli-0.1.0/.github/workflows/release.yml +162 -0
  4. pascal_cli-0.1.0/.gitignore +207 -0
  5. pascal_cli-0.1.0/.pre-commit-config.yaml +16 -0
  6. pascal_cli-0.1.0/CHANGELOG.md +10 -0
  7. pascal_cli-0.1.0/Cargo.lock +969 -0
  8. pascal_cli-0.1.0/Cargo.toml +26 -0
  9. pascal_cli-0.1.0/LICENSE +21 -0
  10. pascal_cli-0.1.0/PKG-INFO +213 -0
  11. pascal_cli-0.1.0/README.md +194 -0
  12. pascal_cli-0.1.0/cliff.toml +54 -0
  13. pascal_cli-0.1.0/docs/ci-cd.md +105 -0
  14. pascal_cli-0.1.0/docs/commands/add.md +63 -0
  15. pascal_cli-0.1.0/docs/commands/build.md +44 -0
  16. pascal_cli-0.1.0/docs/commands/check.md +40 -0
  17. pascal_cli-0.1.0/docs/commands/create.md +74 -0
  18. pascal_cli-0.1.0/docs/commands/deps.md +43 -0
  19. pascal_cli-0.1.0/docs/commands/diff.md +63 -0
  20. pascal_cli-0.1.0/docs/commands/index.md +28 -0
  21. pascal_cli-0.1.0/docs/commands/info.md +30 -0
  22. pascal_cli-0.1.0/docs/commands/init.md +42 -0
  23. pascal_cli-0.1.0/docs/commands/run.md +46 -0
  24. pascal_cli-0.1.0/docs/commands/sync.md +41 -0
  25. pascal_cli-0.1.0/docs/commands/test.md +55 -0
  26. pascal_cli-0.1.0/docs/contributing.md +212 -0
  27. pascal_cli-0.1.0/docs/index.md +77 -0
  28. pascal_cli-0.1.0/docs/installation.md +73 -0
  29. pascal_cli-0.1.0/docs/quickstart.md +162 -0
  30. pascal_cli-0.1.0/docs/uv-integration.md +87 -0
  31. pascal_cli-0.1.0/docs/workspace.md +162 -0
  32. pascal_cli-0.1.0/mkdocs.yml +91 -0
  33. pascal_cli-0.1.0/pyproject.toml +28 -0
  34. pascal_cli-0.1.0/src/cli.rs +104 -0
  35. pascal_cli-0.1.0/src/commands/add.rs +83 -0
  36. pascal_cli-0.1.0/src/commands/build.rs +38 -0
  37. pascal_cli-0.1.0/src/commands/check.rs +143 -0
  38. pascal_cli-0.1.0/src/commands/create.rs +147 -0
  39. pascal_cli-0.1.0/src/commands/deps.rs +144 -0
  40. pascal_cli-0.1.0/src/commands/diff.rs +153 -0
  41. pascal_cli-0.1.0/src/commands/info.rs +86 -0
  42. pascal_cli-0.1.0/src/commands/init.rs +67 -0
  43. pascal_cli-0.1.0/src/commands/mod.rs +11 -0
  44. pascal_cli-0.1.0/src/commands/run.rs +45 -0
  45. pascal_cli-0.1.0/src/commands/sync.rs +24 -0
  46. pascal_cli-0.1.0/src/commands/test.rs +104 -0
  47. pascal_cli-0.1.0/src/config.rs +184 -0
  48. pascal_cli-0.1.0/src/display.rs +67 -0
  49. pascal_cli-0.1.0/src/error.rs +38 -0
  50. pascal_cli-0.1.0/src/git.rs +89 -0
  51. pascal_cli-0.1.0/src/main.rs +75 -0
  52. pascal_cli-0.1.0/src/template.rs +228 -0
  53. pascal_cli-0.1.0/src/uv.rs +76 -0
  54. pascal_cli-0.1.0/src/workspace.rs +334 -0
  55. pascal_cli-0.1.0/tests/integration.rs +280 -0
@@ -0,0 +1,38 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ name: Test (${{ matrix.os }})
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest, macos-latest, windows-latest]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Install cmake (Windows — required by openssl-sys)
21
+ if: matrix.os == 'windows-latest'
22
+ uses: ilammy/msvc-dev-cmd@v1
23
+
24
+ - name: Install cmake (Windows)
25
+ if: matrix.os == 'windows-latest'
26
+ run: choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' -y
27
+
28
+ - name: Cache Rust build artifacts
29
+ uses: Swatinem/rust-cache@v2
30
+
31
+ - name: Check formatting
32
+ run: cargo fmt --check
33
+
34
+ - name: Clippy
35
+ run: cargo clippy -- -D warnings
36
+
37
+ - name: Run tests
38
+ run: cargo test
@@ -0,0 +1,51 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ permissions:
8
+ contents: read
9
+ pages: write
10
+ id-token: write
11
+
12
+ # Only one deployment runs at a time; in-progress runs are not cancelled
13
+ # so a deploy already underway can finish cleanly.
14
+ concurrency:
15
+ group: pages
16
+ cancel-in-progress: false
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0 # needed for git-revision-date if added later
25
+
26
+ - uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.12"
29
+
30
+ - name: Install Zensical
31
+ run: pip install zensical
32
+
33
+ - uses: actions/configure-pages@v4
34
+
35
+ - name: Build docs
36
+ run: zensical build --strict
37
+
38
+ - uses: actions/upload-pages-artifact@v3
39
+ with:
40
+ path: site/
41
+
42
+ deploy:
43
+ needs: build
44
+ runs-on: ubuntu-latest
45
+ environment:
46
+ name: github-pages
47
+ url: ${{ steps.deployment.outputs.page_url }}
48
+ steps:
49
+ - name: Deploy to GitHub Pages
50
+ id: deployment
51
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,162 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write # required for OIDC trusted publishing
11
+
12
+ jobs:
13
+ # ── Linux wheels (manylinux) ───────────────────────────────────────────────
14
+ linux:
15
+ name: Build Linux (${{ matrix.target }})
16
+ runs-on: ubuntu-latest
17
+ strategy:
18
+ matrix:
19
+ target: [x86_64, aarch64]
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - name: Build wheels
24
+ uses: PyO3/maturin-action@v1
25
+ with:
26
+ target: ${{ matrix.target }}
27
+ args: --release --out dist
28
+ manylinux: auto
29
+ before-script-linux: |
30
+ # cmake + perl-IPC-Cmd are required by openssl-sys (vendored build)
31
+ if command -v yum &>/dev/null; then
32
+ yum install -y cmake perl-IPC-Cmd perl-Time-Piece
33
+ fi
34
+
35
+ - uses: actions/upload-artifact@v4
36
+ with:
37
+ name: wheels-linux-${{ matrix.target }}
38
+ path: dist/*.whl
39
+
40
+ # ── macOS x86_64 (cross-compiled from arm64 runner) ──────────────────────
41
+ macos-x86_64:
42
+ name: Build macOS x86_64
43
+ runs-on: macos-latest
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+
47
+ - name: Build wheels
48
+ uses: PyO3/maturin-action@v1
49
+ with:
50
+ target: x86_64
51
+ args: --release --out dist
52
+
53
+ - uses: actions/upload-artifact@v4
54
+ with:
55
+ name: wheels-macos-x86_64
56
+ path: dist/*.whl
57
+
58
+ # ── macOS arm64 ───────────────────────────────────────────────────────────
59
+ macos-arm64:
60
+ name: Build macOS arm64
61
+ runs-on: macos-latest
62
+ steps:
63
+ - uses: actions/checkout@v4
64
+
65
+ - name: Build wheels
66
+ uses: PyO3/maturin-action@v1
67
+ with:
68
+ target: aarch64
69
+ args: --release --out dist
70
+
71
+ - uses: actions/upload-artifact@v4
72
+ with:
73
+ name: wheels-macos-arm64
74
+ path: dist/*.whl
75
+
76
+ # ── Windows x86_64 ────────────────────────────────────────────────────────
77
+ windows:
78
+ name: Build Windows x86_64
79
+ runs-on: windows-latest
80
+ steps:
81
+ - uses: actions/checkout@v4
82
+
83
+ - name: Install cmake (required by openssl-sys)
84
+ run: choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' -y
85
+
86
+ - name: Build wheels
87
+ uses: PyO3/maturin-action@v1
88
+ with:
89
+ target: x86_64
90
+ args: --release --out dist
91
+
92
+ - uses: actions/upload-artifact@v4
93
+ with:
94
+ name: wheels-windows-x86_64
95
+ path: dist/*.whl
96
+
97
+ # ── Source distribution ───────────────────────────────────────────────────
98
+ sdist:
99
+ name: Build sdist
100
+ runs-on: ubuntu-latest
101
+ steps:
102
+ - uses: actions/checkout@v4
103
+
104
+ - name: Build sdist
105
+ uses: PyO3/maturin-action@v1
106
+ with:
107
+ command: sdist
108
+ args: --out dist
109
+
110
+ - uses: actions/upload-artifact@v4
111
+ with:
112
+ name: wheels-sdist
113
+ path: dist/*.tar.gz
114
+
115
+ # ── Publish ───────────────────────────────────────────────────────────────
116
+ publish:
117
+ name: Publish to PyPI + GitHub Release
118
+ runs-on: ubuntu-latest
119
+ needs: [linux, macos-x86_64, macos-arm64, windows, sdist]
120
+ environment: pypi # configure trusted publishing in this environment on PyPI
121
+ steps:
122
+ - uses: actions/checkout@v4
123
+ with:
124
+ fetch-depth: 0 # git-cliff needs full history to build the changelog
125
+ token: ${{ secrets.GITHUB_TOKEN }}
126
+
127
+ - name: Install git-cliff
128
+ uses: taiki-e/install-action@v2
129
+ with:
130
+ tool: git-cliff
131
+
132
+ - name: Generate changelog for this release (release body)
133
+ run: git cliff --config cliff.toml --current --strip all > body.md
134
+
135
+ - name: Regenerate full CHANGELOG.md
136
+ run: git cliff --config cliff.toml --output CHANGELOG.md
137
+
138
+ - name: Commit updated CHANGELOG.md
139
+ run: |
140
+ git config user.name "github-actions[bot]"
141
+ git config user.email "github-actions[bot]@users.noreply.github.com"
142
+ git add CHANGELOG.md
143
+ git diff --staged --quiet \
144
+ || git commit -m "chore: update CHANGELOG for ${{ github.ref_name }}"
145
+ git push origin HEAD:master
146
+
147
+ - uses: actions/download-artifact@v4
148
+ with:
149
+ pattern: wheels-*
150
+ merge-multiple: true
151
+ path: dist
152
+
153
+ - name: Publish to PyPI (OIDC trusted publishing)
154
+ uses: pypa/gh-action-pypi-publish@release/v1
155
+ with:
156
+ packages-dir: dist/
157
+
158
+ - name: Create GitHub Release
159
+ uses: softprops/action-gh-release@v2
160
+ with:
161
+ files: dist/*
162
+ body_path: body.md
@@ -0,0 +1,207 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+ #poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ #pdm.lock
116
+ #pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ #pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .envrc
140
+ .venv
141
+ env/
142
+ venv/
143
+ ENV/
144
+ env.bak/
145
+ venv.bak/
146
+
147
+ # Spyder project settings
148
+ .spyderproject
149
+ .spyproject
150
+
151
+ # Rope project settings
152
+ .ropeproject
153
+
154
+ # mkdocs documentation
155
+ /site
156
+
157
+ # mypy
158
+ .mypy_cache/
159
+ .dmypy.json
160
+ dmypy.json
161
+
162
+ # Pyre type checker
163
+ .pyre/
164
+
165
+ # pytype static type analyzer
166
+ .pytype/
167
+
168
+ # Cython debug symbols
169
+ cython_debug/
170
+
171
+ # PyCharm
172
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
173
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
174
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
175
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
176
+ #.idea/
177
+
178
+ # Abstra
179
+ # Abstra is an AI-powered process automation framework.
180
+ # Ignore directories containing user credentials, local state, and settings.
181
+ # Learn more at https://abstra.io/docs
182
+ .abstra/
183
+
184
+ # Visual Studio Code
185
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
186
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
187
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
188
+ # you could uncomment the following to ignore the entire vscode folder
189
+ # .vscode/
190
+
191
+ # Ruff stuff:
192
+ .ruff_cache/
193
+
194
+ # PyPI configuration file
195
+ .pypirc
196
+
197
+ # Cursor
198
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
199
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
200
+ # refer to https://docs.cursor.com/context/ignore-files
201
+ .cursorignore
202
+ .cursorindexingignore
203
+
204
+ # Marimo
205
+ marimo/_static/
206
+ marimo/_lsp/
207
+ __marimo__/
@@ -0,0 +1,16 @@
1
+ repos:
2
+ - repo: local
3
+ hooks:
4
+ - id: cargo-fmt
5
+ name: cargo fmt
6
+ entry: cargo fmt --
7
+ language: system
8
+ types: [rust]
9
+ pass_filenames: true
10
+
11
+ - id: cargo-clippy
12
+ name: cargo clippy
13
+ entry: cargo clippy -- -D warnings
14
+ language: system
15
+ types: [rust]
16
+ pass_filenames: false
@@ -0,0 +1,10 @@
1
+ # Changelog
2
+
3
+ All notable changes to pascal are documented here.
4
+
5
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
+ Commits follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec.
7
+
8
+ ## [Unreleased]
9
+
10
+ _No unreleased changes yet._