|
|
|
@@ -0,0 +1,100 @@ |
|
|
|
name: node-hub |
|
|
|
|
|
|
|
on: |
|
|
|
push: |
|
|
|
branches: |
|
|
|
- main |
|
|
|
pull_request: |
|
|
|
branches: |
|
|
|
- main |
|
|
|
release: |
|
|
|
types: [published] |
|
|
|
|
|
|
|
jobs: |
|
|
|
ci: |
|
|
|
runs-on: ubuntu-latest |
|
|
|
|
|
|
|
steps: |
|
|
|
- name: Checkout repository |
|
|
|
uses: actions/checkout@v2 |
|
|
|
|
|
|
|
- name: Set up Python |
|
|
|
uses: actions/setup-python@v2 |
|
|
|
with: |
|
|
|
python-version: "3.10" |
|
|
|
|
|
|
|
- name: Set up Poetry |
|
|
|
run: | |
|
|
|
curl -sSL https://install.python-poetry.org | python3 - |
|
|
|
echo "$HOME/.local/bin" >> $GITHUB_PATH |
|
|
|
pip install black pylint pytest |
|
|
|
|
|
|
|
- name: Set up Rust |
|
|
|
uses: actions-rs/toolchain@v1 |
|
|
|
with: |
|
|
|
toolchain: stable |
|
|
|
override: true |
|
|
|
|
|
|
|
- name: Run Linting and Tests |
|
|
|
run: | |
|
|
|
for dir in node-hub/*/ ; do |
|
|
|
if [ -d "$dir" ]; then |
|
|
|
if [ -f "$dir/pyproject.toml" ]; then |
|
|
|
echo "Running linting and tests for Python project in $dir..." |
|
|
|
(cd "$dir" && pip install .) |
|
|
|
(cd "$dir" && poetry run black --check .) |
|
|
|
(cd "$dir" && poetry run pylint --disable=C,R --ignored-modules=cv2 **/*.py) |
|
|
|
(cd "$dir" && poetry run pytest) |
|
|
|
fi |
|
|
|
|
|
|
|
if [ -f "$dir/Cargo.toml" ]; then |
|
|
|
echo "Running build and tests for Rust project in $dir..." |
|
|
|
(cd "$dir" && cargo build) |
|
|
|
(cd "$dir" && cargo test) |
|
|
|
fi |
|
|
|
fi |
|
|
|
done |
|
|
|
|
|
|
|
publish: |
|
|
|
needs: [ci] |
|
|
|
runs-on: ubuntu-latest |
|
|
|
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/') |
|
|
|
|
|
|
|
steps: |
|
|
|
- name: Checkout repository |
|
|
|
uses: actions/checkout@v2 |
|
|
|
|
|
|
|
- name: Set up Python |
|
|
|
uses: actions/setup-python@v2 |
|
|
|
with: |
|
|
|
python-version: "3.10" |
|
|
|
|
|
|
|
- name: Set up Poetry |
|
|
|
run: | |
|
|
|
curl -sSL https://install.python-poetry.org | python3 - |
|
|
|
echo "$HOME/.local/bin" >> $GITHUB_PATH |
|
|
|
|
|
|
|
- name: Set up Rust |
|
|
|
uses: actions-rs/toolchain@v1 |
|
|
|
with: |
|
|
|
toolchain: stable |
|
|
|
|
|
|
|
- name: Publish Projects |
|
|
|
env: |
|
|
|
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_PASS }} |
|
|
|
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_PASS }} |
|
|
|
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} |
|
|
|
run: | |
|
|
|
for dir in node-hub/*/ ; do |
|
|
|
if [ -d "$dir" ]; then |
|
|
|
if [ -f "$dir/pyproject.toml" ]; then |
|
|
|
echo "Publishing $dir using Poetry..." |
|
|
|
(cd "$dir" && poetry publish) |
|
|
|
fi |
|
|
|
|
|
|
|
if [ -f "$dir/Cargo.toml" ]; then |
|
|
|
echo "Publishing $dir using Cargo..." |
|
|
|
(cd "$dir" && cargo publish) |
|
|
|
fi |
|
|
|
fi |
|
|
|
done |