dynp 0.1.12

Dynamic property system that emphasizes the use of the Newtype pattern.
Documentation
name: Cargo Build & Test

on:
  push:
    branches: ["main", "feature/*", "fix/*", "bugfix/*"]
  pull_request:
    branches: ["main"]

env: 
  CARGO_TERM_COLOR: always

jobs:
  build_and_test:
    name: Build & Test
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain:
          - stable
          - beta
          - nightly
    steps:
      - uses: actions/checkout@v3
      - run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }}
      - run: cargo build --verbose
      - run: cargo test --verbose

  publish:
    name: Publish to 'crates.io'
    runs-on: ubuntu-latest
    needs: build_and_test
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v3
      - name: Fetch unshallow
        run: git fetch --prune --tags --unshallow
      - name: Install GitVersion
        uses: gittools/actions/gitversion/setup@v0.9.7
        with:
          versionSpec: '5.x'

      - name: Semantic Versioning
        id: gitversion
        uses: gittools/actions/gitversion/execute@v0.9.7

      - name: Install Cargo Bump
        run: cargo install cargo-bump

      - name: Bump Package Version
        run: cargo bump ${{ steps.gitversion.outputs.SemVer }}

      - run: cargo build --release
      - run: cargo package --allow-dirty

      - name: Publish dry-run
        run: cargo publish --allow-dirty --dry-run

      - name: Publish
        run: cargo publish --allow-dirty
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}