Hovsep Papoyan пре 1 година
родитељ
комит
0d7cab8948
2 измењених фајлова са 70 додато и 0 уклоњено
  1. 23 0
      .github/change_version.sh
  2. 47 0
      .github/workflows/publish.yml

+ 23 - 0
.github/change_version.sh

@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+original_version_str="$(cat ${GITHUB_WORKSPACE}/Cargo.toml | grep "version = ")"
+version_number="$(echo ${original_version_str} | cut -d "\"" -f2)"
+
+major="${version_number%%.*}"
+version_number="${version_number#*.}"
+minor="${version_number%%.*}"
+patch="${version_number#*.}"
+
+if [ ${CHANGE_TYPE} == major ]
+then
+  major=$((major+1))
+elif [ ${CHANGE_TYPE} == minor ]
+then
+  minor=$((minor+1))
+else
+  patch=$((patch+1))          
+fi
+
+new_version_str='version = "'${major}.${minor}.${patch}'"'
+sed -i "s|${original_version_str}|${new_version_str}|g" ${GITHUB_WORKSPACE}/Cargo.toml
+

+ 47 - 0
.github/workflows/publish.yml

@@ -0,0 +1,47 @@
+name: publish
+
+on:
+  workflow_dispatch:
+    inputs:
+      change_type:
+        description: Change type
+        type: choice
+        options:
+        - major
+        - minor
+        - patch
+        default: patch
+
+jobs:
+  publish:
+    name: publish
+    runs-on: ubuntu-latest
+    steps:
+      - run: |
+          echo "Change type: $CHANGE_TYPE"
+        env:
+          CHANGE_TYPE: ${{ inputs.change_type }} 
+
+      - name: Checkout sources
+        uses: actions/checkout@v4
+
+      - name: Install Rust toolchain
+        uses: dtolnay/rust-toolchain@stable
+        with:
+          toolchain: stable-gnu
+
+      - name: Changing version in Cargo.toml
+        run: |
+          chmod +x ${GITHUB_WORKSPACE}/.github/change_version.sh
+          bash ${GITHUB_WORKSPACE}/.github/change_version.sh
+
+      - name: Pushing Cargo.toml changes to master
+        run: |
+          git config --local user.name 'Hovsep Papoyan'
+          git config --local user.email 'papoyanhovsep93@gmail.com'
+          git commit -am "Automated version change in Cargo.toml"
+          git push origin master
+
+      - run: cargo publish --no-verify --dry-run --token ${CRATES_TOKEN}
+        env:
+          CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }}