dumpling-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.
- dumpling_cli-0.1.0/.github/workflows/ci.yml +32 -0
- dumpling_cli-0.1.0/.github/workflows/docs.yml +58 -0
- dumpling_cli-0.1.0/.github/workflows/platform-compat-latest.yml +34 -0
- dumpling_cli-0.1.0/.github/workflows/platform-compat-matrix.yml +32 -0
- dumpling_cli-0.1.0/.github/workflows/publish.yml +136 -0
- dumpling_cli-0.1.0/.github/workflows/release.yml +51 -0
- dumpling_cli-0.1.0/.github/workflows/tests.yml +27 -0
- dumpling_cli-0.1.0/.gitignore +2 -0
- dumpling_cli-0.1.0/CHANGELOG.md +20 -0
- dumpling_cli-0.1.0/Cargo.lock +711 -0
- dumpling_cli-0.1.0/Cargo.toml +17 -0
- dumpling_cli-0.1.0/PKG-INFO +207 -0
- dumpling_cli-0.1.0/README.md +185 -0
- dumpling_cli-0.1.0/book.toml +10 -0
- dumpling_cli-0.1.0/datetime_out.sql +6 -0
- dumpling_cli-0.1.0/datetime_sample.sql +8 -0
- dumpling_cli-0.1.0/docs/src/SUMMARY.md +6 -0
- dumpling_cli-0.1.0/docs/src/configuration.md +33 -0
- dumpling_cli-0.1.0/docs/src/getting-started.md +29 -0
- dumpling_cli-0.1.0/docs/src/index.md +19 -0
- dumpling_cli-0.1.0/docs/src/releasing.md +54 -0
- dumpling_cli-0.1.0/pyproject.toml +29 -0
- dumpling_cli-0.1.0/src/filter.rs +310 -0
- dumpling_cli-0.1.0/src/main.rs +243 -0
- dumpling_cli-0.1.0/src/report.rs +102 -0
- dumpling_cli-0.1.0/src/settings.rs +266 -0
- dumpling_cli-0.1.0/src/sql.rs +896 -0
- dumpling_cli-0.1.0/src/transform.rs +395 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
lint:
|
|
14
|
+
name: Format and lint
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Install Rust toolchain
|
|
21
|
+
uses: dtolnay/rust-toolchain@stable
|
|
22
|
+
with:
|
|
23
|
+
components: rustfmt, clippy
|
|
24
|
+
|
|
25
|
+
- name: Cache Cargo build artifacts
|
|
26
|
+
uses: Swatinem/rust-cache@v2
|
|
27
|
+
|
|
28
|
+
- name: Check formatting
|
|
29
|
+
run: cargo fmt --all -- --check
|
|
30
|
+
|
|
31
|
+
- name: Run clippy
|
|
32
|
+
run: cargo clippy --all-targets --all-features
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- "README.md"
|
|
7
|
+
- "book.toml"
|
|
8
|
+
- "docs/**"
|
|
9
|
+
- ".github/workflows/docs.yml"
|
|
10
|
+
push:
|
|
11
|
+
branches:
|
|
12
|
+
- main
|
|
13
|
+
paths:
|
|
14
|
+
- "README.md"
|
|
15
|
+
- "book.toml"
|
|
16
|
+
- "docs/**"
|
|
17
|
+
- ".github/workflows/docs.yml"
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
pages: write
|
|
22
|
+
id-token: write
|
|
23
|
+
|
|
24
|
+
concurrency:
|
|
25
|
+
group: docs-${{ github.ref }}
|
|
26
|
+
cancel-in-progress: true
|
|
27
|
+
|
|
28
|
+
jobs:
|
|
29
|
+
build:
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout
|
|
33
|
+
uses: actions/checkout@v4
|
|
34
|
+
|
|
35
|
+
- name: Install mdBook
|
|
36
|
+
uses: peaceiris/actions-mdbook@v2
|
|
37
|
+
with:
|
|
38
|
+
mdbook-version: "0.4.52"
|
|
39
|
+
|
|
40
|
+
- name: Build documentation site
|
|
41
|
+
run: mdbook build
|
|
42
|
+
|
|
43
|
+
- name: Upload docs artifact
|
|
44
|
+
uses: actions/upload-pages-artifact@v3
|
|
45
|
+
with:
|
|
46
|
+
path: docs/book
|
|
47
|
+
|
|
48
|
+
deploy:
|
|
49
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
50
|
+
needs: build
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
environment:
|
|
53
|
+
name: github-pages
|
|
54
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
55
|
+
steps:
|
|
56
|
+
- name: Deploy docs to GitHub Pages
|
|
57
|
+
id: deployment
|
|
58
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Platform compatibility (latest)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
platform-compat-latest:
|
|
14
|
+
name: Cross-platform compatibility build (latest images)
|
|
15
|
+
runs-on: ${{ matrix.os }}
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
os:
|
|
20
|
+
- ubuntu-latest
|
|
21
|
+
- macos-latest
|
|
22
|
+
- windows-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
|
|
27
|
+
- name: Install Rust toolchain
|
|
28
|
+
uses: dtolnay/rust-toolchain@stable
|
|
29
|
+
|
|
30
|
+
- name: Cache Cargo build artifacts
|
|
31
|
+
uses: Swatinem/rust-cache@v2
|
|
32
|
+
|
|
33
|
+
- name: Build release binary
|
|
34
|
+
run: cargo build --release --locked
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Platform compatibility (matrix)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
platform-compat-matrix:
|
|
11
|
+
name: Compatibility build (${{ matrix.os }})
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
# Expand this list as long-term support targets evolve.
|
|
17
|
+
os:
|
|
18
|
+
- ubuntu-22.04
|
|
19
|
+
- macos-13
|
|
20
|
+
- windows-2022
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Install Rust toolchain
|
|
26
|
+
uses: dtolnay/rust-toolchain@stable
|
|
27
|
+
|
|
28
|
+
- name: Cache Cargo build artifacts
|
|
29
|
+
uses: Swatinem/rust-cache@v2
|
|
30
|
+
|
|
31
|
+
- name: Build release binary
|
|
32
|
+
run: cargo build --release --locked
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
target:
|
|
10
|
+
description: "Publish target"
|
|
11
|
+
required: true
|
|
12
|
+
default: pypi
|
|
13
|
+
type: choice
|
|
14
|
+
options:
|
|
15
|
+
- pypi
|
|
16
|
+
- testpypi
|
|
17
|
+
- none
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
build-wheels:
|
|
24
|
+
name: Build wheels (${{ matrix.os }})
|
|
25
|
+
runs-on: ${{ matrix.os }}
|
|
26
|
+
strategy:
|
|
27
|
+
fail-fast: false
|
|
28
|
+
matrix:
|
|
29
|
+
os:
|
|
30
|
+
- ubuntu-latest
|
|
31
|
+
- macos-latest
|
|
32
|
+
- windows-latest
|
|
33
|
+
steps:
|
|
34
|
+
- name: Checkout
|
|
35
|
+
uses: actions/checkout@v4
|
|
36
|
+
|
|
37
|
+
- name: Install Rust toolchain
|
|
38
|
+
uses: dtolnay/rust-toolchain@stable
|
|
39
|
+
|
|
40
|
+
- name: Cache Cargo build artifacts
|
|
41
|
+
uses: Swatinem/rust-cache@v2
|
|
42
|
+
|
|
43
|
+
- name: Set up Python
|
|
44
|
+
uses: actions/setup-python@v5
|
|
45
|
+
with:
|
|
46
|
+
python-version: "3.12"
|
|
47
|
+
|
|
48
|
+
- name: Install maturin
|
|
49
|
+
run: python -m pip install --upgrade maturin
|
|
50
|
+
|
|
51
|
+
- name: Build wheel
|
|
52
|
+
run: python -m maturin build --release --out dist
|
|
53
|
+
|
|
54
|
+
- name: Upload wheel artifacts
|
|
55
|
+
uses: actions/upload-artifact@v4
|
|
56
|
+
with:
|
|
57
|
+
name: wheels-${{ matrix.os }}
|
|
58
|
+
path: dist/*.whl
|
|
59
|
+
if-no-files-found: error
|
|
60
|
+
|
|
61
|
+
build-sdist:
|
|
62
|
+
name: Build sdist
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
steps:
|
|
65
|
+
- name: Checkout
|
|
66
|
+
uses: actions/checkout@v4
|
|
67
|
+
|
|
68
|
+
- name: Set up Python
|
|
69
|
+
uses: actions/setup-python@v5
|
|
70
|
+
with:
|
|
71
|
+
python-version: "3.12"
|
|
72
|
+
|
|
73
|
+
- name: Install maturin
|
|
74
|
+
run: python -m pip install --upgrade maturin
|
|
75
|
+
|
|
76
|
+
- name: Build sdist
|
|
77
|
+
run: python -m maturin sdist --out dist
|
|
78
|
+
|
|
79
|
+
- name: Upload sdist artifact
|
|
80
|
+
uses: actions/upload-artifact@v4
|
|
81
|
+
with:
|
|
82
|
+
name: sdist
|
|
83
|
+
path: dist/*.tar.gz
|
|
84
|
+
if-no-files-found: error
|
|
85
|
+
|
|
86
|
+
publish-pypi:
|
|
87
|
+
name: Publish to PyPI
|
|
88
|
+
needs:
|
|
89
|
+
- build-wheels
|
|
90
|
+
- build-sdist
|
|
91
|
+
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'pypi')
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
environment:
|
|
94
|
+
name: pypi
|
|
95
|
+
permissions:
|
|
96
|
+
id-token: write
|
|
97
|
+
steps:
|
|
98
|
+
- name: Download built distributions
|
|
99
|
+
uses: actions/download-artifact@v4
|
|
100
|
+
with:
|
|
101
|
+
pattern: "*"
|
|
102
|
+
path: dist
|
|
103
|
+
merge-multiple: true
|
|
104
|
+
|
|
105
|
+
- name: Publish packages to PyPI
|
|
106
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
107
|
+
with:
|
|
108
|
+
packages-dir: dist
|
|
109
|
+
user: __token__
|
|
110
|
+
password: ${{ secrets.PYPI_UPLOAD_TOKEN }}
|
|
111
|
+
skip-existing: true
|
|
112
|
+
|
|
113
|
+
publish-testpypi:
|
|
114
|
+
name: Publish to TestPyPI
|
|
115
|
+
needs:
|
|
116
|
+
- build-wheels
|
|
117
|
+
- build-sdist
|
|
118
|
+
if: github.event_name == 'workflow_dispatch' && github.event.inputs.target == 'testpypi'
|
|
119
|
+
runs-on: ubuntu-latest
|
|
120
|
+
environment:
|
|
121
|
+
name: testpypi
|
|
122
|
+
permissions:
|
|
123
|
+
id-token: write
|
|
124
|
+
steps:
|
|
125
|
+
- name: Download built distributions
|
|
126
|
+
uses: actions/download-artifact@v4
|
|
127
|
+
with:
|
|
128
|
+
pattern: "*"
|
|
129
|
+
path: dist
|
|
130
|
+
merge-multiple: true
|
|
131
|
+
|
|
132
|
+
- name: Publish packages to TestPyPI
|
|
133
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
134
|
+
with:
|
|
135
|
+
packages-dir: dist
|
|
136
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
verify-and-package:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Install Rust toolchain
|
|
19
|
+
uses: dtolnay/rust-toolchain@stable
|
|
20
|
+
with:
|
|
21
|
+
components: rustfmt, clippy
|
|
22
|
+
|
|
23
|
+
- name: Cache Cargo build artifacts
|
|
24
|
+
uses: Swatinem/rust-cache@v2
|
|
25
|
+
|
|
26
|
+
- name: Validate formatting
|
|
27
|
+
run: cargo fmt --all -- --check
|
|
28
|
+
|
|
29
|
+
- name: Validate linting
|
|
30
|
+
run: cargo clippy --all-targets --all-features
|
|
31
|
+
|
|
32
|
+
- name: Validate tests
|
|
33
|
+
run: cargo test --all-targets --all-features
|
|
34
|
+
|
|
35
|
+
- name: Build release binary
|
|
36
|
+
run: cargo build --release --locked
|
|
37
|
+
|
|
38
|
+
- name: Assemble release artifacts
|
|
39
|
+
run: |
|
|
40
|
+
mkdir -p dist
|
|
41
|
+
cp target/release/dumpling dist/dumpling-linux-x86_64
|
|
42
|
+
tar -C dist -czf "dist/dumpling-${GITHUB_REF_NAME}-linux-x86_64.tar.gz" dumpling-linux-x86_64
|
|
43
|
+
sha256sum "dist/dumpling-${GITHUB_REF_NAME}-linux-x86_64.tar.gz" > "dist/dumpling-${GITHUB_REF_NAME}-linux-x86_64.tar.gz.sha256"
|
|
44
|
+
|
|
45
|
+
- name: Create GitHub release and upload artifacts
|
|
46
|
+
uses: softprops/action-gh-release@v2
|
|
47
|
+
with:
|
|
48
|
+
generate_release_notes: true
|
|
49
|
+
files: |
|
|
50
|
+
dist/dumpling-*.tar.gz
|
|
51
|
+
dist/dumpling-*.sha256
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
name: Run tests
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Install Rust toolchain
|
|
21
|
+
uses: dtolnay/rust-toolchain@stable
|
|
22
|
+
|
|
23
|
+
- name: Cache Cargo build artifacts
|
|
24
|
+
uses: Swatinem/rust-cache@v2
|
|
25
|
+
|
|
26
|
+
- name: Run cargo tests
|
|
27
|
+
run: cargo test --all-targets --all-features
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project should be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- GitHub Actions lint workflow for formatting and clippy checks.
|
|
13
|
+
- GitHub Actions `Test` workflow for `cargo test --all-targets --all-features`.
|
|
14
|
+
- GitHub Actions `Platform compatibility (latest)` workflow for cross-platform builds on latest runner images.
|
|
15
|
+
- GitHub Actions `Platform compatibility (matrix)` workflow for manual compatibility runs on explicit platform versions.
|
|
16
|
+
- GitHub Actions docs workflow for mdBook build and GitHub Pages deployment.
|
|
17
|
+
- GitHub Actions release workflow for tag-based release artifact publishing.
|
|
18
|
+
- GitHub Actions `Publish` workflow for cross-platform wheel/sdist builds and PyPI/TestPyPI publishing via `maturin`.
|
|
19
|
+
- mdBook documentation structure and release process runbook.
|
|
20
|
+
- Python distribution metadata via `pyproject.toml` using `maturin` (`dumpling-cli`) for pip-compatible binary builds.
|