Simplify CI (#1573)

This commit is contained in:
Rafał Mikrut
2025-07-27 18:47:22 +02:00
committed by GitHub
parent 1a90bf841e
commit 30323be76a
10 changed files with 251 additions and 451 deletions

View File

@@ -9,62 +9,99 @@ env:
CARGO_TERM_COLOR: always
jobs:
linux-cli-krokiet-release:
if: ${{ github.ref == 'refs/heads/master' }}
runs-on: ubuntu-22.04
linux-all:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-22.04-arm]
steps:
- uses: actions/checkout@v4
- name: Setup env
run: |
ARCHNAME=$([ "${{ runner.arch }}" = "ARM64" ] && echo arm64 || echo x86_64)
echo "ARCHNAME=$ARCHNAME" >> $GITHUB_ENV
- name: Install basic libraries
run: sudo apt update || true; sudo apt install libheif-dev libraw-dev ffmpeg -y
run: sudo apt update || true; sudo apt install libheif-dev libraw-dev ffmpeg libgtk-4-dev -y
- name: Setup rust version
run: rustup default 1.85.0
- name: Build Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
cargo build --release --bin czkawka_cli --bin krokiet
echo "VERS=release" >> $GITHUB_ENV
cargo build --release
mv target/release/czkawka_cli linux_czkawka_cli_${{ env.ARCHNAME }}
mv target/release/czkawka_gui linux_czkawka_gui_${{ env.ARCHNAME }}
mv target/release/krokiet linux_krokiet_${{ env.ARCHNAME }}
cargo build --release --features "heif,libraw"
mv target/release/czkawka_cli linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }}
mv target/release/czkawka_gui linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }}
mv target/release/krokiet linux_krokiet_heif_raw_${{ env.ARCHNAME }}
- name: Store Linux CLI
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-release
path: target/release/czkawka_cli
- name: Store Linux Krokiet
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-release
path: target/release/krokiet
- name: Prepare files to release
- name: Build Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
mv target/release/czkawka_cli linux_czkawka_cli
mv target/release/krokiet linux_krokiet
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
echo "VERS=debug" >> $GITHUB_ENV
cargo build
mv target/debug/czkawka_cli linux_czkawka_cli_${{ env.ARCHNAME }}
mv target/debug/czkawka_gui linux_czkawka_gui_${{ env.ARCHNAME }}
mv target/debug/krokiet linux_krokiet_${{ env.ARCHNAME }}
cargo build --features "heif,libraw"
mv target/debug/czkawka_cli linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }}
mv target/debug/czkawka_gui linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }}
mv target/debug/krokiet linux_krokiet_heif_raw_${{ env.ARCHNAME }}
- name: Store
uses: actions/upload-artifact@v4
with:
name: all-${{ runner.os }}-${{ runner.arch }}-${{ env.VERS }}
path: |
linux_czkawka_cli_${{ env.ARCHNAME }}
linux_czkawka_gui_${{ env.ARCHNAME }}
linux_krokiet_${{ env.ARCHNAME }}
linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }}
linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }}
linux_krokiet_heif_raw_${{ env.ARCHNAME }}
- name: Release
if: ${{ github.ref == 'refs/heads/master' }}
uses: softprops/action-gh-release@v2
with:
tag_name: "Nightly"
files: |
linux_czkawka_cli
linux_krokiet
linux_czkawka_cli_${{ env.ARCHNAME }}
linux_czkawka_gui_${{ env.ARCHNAME }}
linux_krokiet_${{ env.ARCHNAME }}
linux_czkawka_cli_heif_raw_${{ env.ARCHNAME }}
linux_czkawka_gui_heif_raw_${{ env.ARCHNAME }}
linux_krokiet_heif_raw_${{ env.ARCHNAME }}
token: ${{ secrets.PAT_REPOSITORY }}
# GUI not works :(
### MUSL CLI and Krokiet Release and Debug
# GUI not works with MUSL :(
# https://github.com/slint-ui/slint/issues/7586
# https://github.com/rust-windowing/winit/issues/1818
linux-cli-release-musl:
if: ${{ github.ref == 'refs/heads/master' }}
linux-cli-musl:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install basic libraries
run: |
sudo apt update || true; sudo apt install libheif-dev libraw-dev ffmpeg -y
sudo apt install musl-tools -y
sudo apt update || true; sudo apt install musl-tools -y
- name: Setup rust version
run: |
@@ -72,19 +109,28 @@ jobs:
rustup target add x86_64-unknown-linux-musl
- name: Build Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
cargo build --release --bin czkawka_cli --target x86_64-unknown-linux-musl
mv target/x86_64-unknown-linux-musl/release/czkawka_cli linux_czkawka_cli_musl
- name: Build Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build --bin czkawka_cli --target x86_64-unknown-linux-musl
mv target/x86_64-unknown-linux-musl/debug/czkawka_cli linux_czkawka_cli_musl
- name: Store Linux CLI
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-release-musl
path: target/x86_64-unknown-linux-musl/release/czkawka_cli
- name: Prepare files to release
run: |
mv target/x86_64-unknown-linux-musl/release/czkawka_cli linux_czkawka_cli_musl
name: czkawka_cli-${{ runner.os }}-musl
path: |
linux_czkawka_cli_musl
- name: Release
uses: softprops/action-gh-release@v2
@@ -94,7 +140,9 @@ jobs:
linux_czkawka_cli_musl
token: ${{ secrets.PAT_REPOSITORY }}
# TODO - also test czkawka_gui - this requires now gtk4:i386
### Below, builds that do not produce artifacts
### 32 bit CLI and Krokiet Release and Debug - TODO test also gtk gui but it requires gtk4:i386 and also would be good to test libraw and heif
linux-all-debug-32bit:
if: ${{ github.ref != 'refs/heads/master' }}
runs-on: ubuntu-22.04
@@ -104,7 +152,7 @@ jobs:
- name: Install basic libraries
run: |
sudo apt update || true
sudo apt install libheif-dev libraw-dev ffmpeg libgtk-4-dev gcc-multilib -y
sudo apt install gcc-multilib -y
- name: Setup rust version and target
run: |
@@ -117,120 +165,8 @@ jobs:
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build --target i686-unknown-linux-gnu --bin czkawka_cli --bin krokiet
linux-cli-krokiet-debug:
if: ${{ github.ref != 'refs/heads/master' }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install basic libraries
run: sudo apt update || true; sudo apt install libheif-dev libraw-dev ffmpeg -y
- name: Setup rust version
run: rustup default 1.85.0
- name: Build Debug
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build --bin czkawka_cli --bin krokiet
- name: Store Linux CLI Debug
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-debug
path: target/debug/czkawka_cli
- name: Store Linux Krokiet Debug
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-debug
path: target/debug/krokiet
linux-krokiet-gui-heif:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install basic libraries
run: sudo apt update || true; sudo apt install libheif-dev libraw-dev -y
- name: Setup rust version
run: rustup default 1.85.0
- name: Enable LTO
if: ${{ github.ref == 'refs/heads/master' }}
run: sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
- name: Build Release Krokiet heif
run: cargo build --release --bin krokiet --features "heif,libraw"
- name: Store Linux GUI Krokiet heif libraw
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-heif-libraw
path: target/release/krokiet
- name: Prepare files to release
run: |
mv target/release/krokiet linux_krokiet_heif_raw_gui
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
linux_krokiet_heif_raw_gui
token: ${{ secrets.PAT_REPOSITORY }}
linux-gui:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install basic libraries
run: sudo apt update || true; sudo apt install libgtk-4-dev libheif-dev libraw-dev -y
- name: Setup rust version
run: rustup default 1.85.0
- name: Enable LTO
if: ${{ github.ref == 'refs/heads/master' }}
run: sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
- name: Build Release Heif Libraw
run: cargo build --release --bin czkawka_gui --features "heif,libraw"
- name: Store Linux GUI Heif Libraw
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-heif-libraw
path: target/release/czkawka_gui
- name: Build Release
run: cargo build --release --bin czkawka_gui
- name: Store Linux GUI
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}
path: target/release/czkawka_gui
- name: Prepare files to release
run: |
mv target/release/czkawka_gui linux_czkawka_gui
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
linux_czkawka_gui
token: ${{ secrets.PAT_REPOSITORY }}
linux-stability:
if: ${{ github.ref == 'refs/heads/master' }} # Runs only in master, because it is time consuming
if: ${{ github.ref == 'refs/heads/master' }} # Runs only in master, because it is really time consumig
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
@@ -244,25 +180,25 @@ jobs:
- name: Build packages
run: |
rm -rf target || true
cargo build
cargo build --features "heif,libraw"
mv target/debug/czkawka_cli czkawka_cli_debug_1
mv target/debug/czkawka_gui czkawka_gui_debug_1
mv target/debug/krokiet krokiet_debug_1
rm -rf target || true
cargo build --release
cargo build --release --features "heif,libraw"
mv target/release/czkawka_cli czkawka_cli_release_1
mv target/release/czkawka_gui czkawka_gui_release_1
mv target/release/krokiet krokiet_release_1
rm -rf target || true
cargo build
cargo build --features "heif,libraw"
mv target/debug/czkawka_cli czkawka_cli_debug_2
mv target/debug/czkawka_gui czkawka_gui_debug_2
mv target/debug/krokiet krokiet_debug_2
rm -rf target || true
cargo build --release
cargo build --release --features "heif,libraw"
mv target/release/czkawka_cli czkawka_cli_release_2
mv target/release/czkawka_gui czkawka_gui_release_2
mv target/release/krokiet krokiet_release_2
@@ -282,6 +218,8 @@ jobs:
- name: Test
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
xvfb-run cargo test
linux-regression-tests-on-minimal-rust-version:
@@ -295,13 +233,11 @@ jobs:
- name: Setup rust version
run: rustup default 1.85.0
- name: Build
run: |
cargo check
cargo check --features "heif,libraw"
- name: Build test version
run: cargo build --profile test --bin czkawka_cli
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build --profile test --bin czkawka_cli
- name: Linux Regression Test
run: |
@@ -312,95 +248,3 @@ jobs:
ci_tester/target/release/ci_tester target/debug/czkawka_cli
linux-arm-release:
if: ${{ github.ref == 'refs/heads/master' }}
runs-on: ubuntu-22.04-arm
steps:
- uses: actions/checkout@v4
- name: Install basic libraries
run: sudo apt update || true; sudo apt install libgtk-4-dev libheif-dev libraw-dev -y
- name: Setup rust version
run: rustup default 1.85.0
- name: Build Release
run: |
sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
cargo build --release
- name: Store cli
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-arm-release
path: |
target/release/czkawka_cli
- name: Store gui
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-arm-release
path: |
target/release/czkawka_gui
- name: Store krokiet
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-arm-release
path: |
target/release/krokiet
- name: Prepare files to release
run: |
mv target/release/czkawka_cli linux_czkawka_cli_arm
mv target/release/czkawka_gui linux_czkawka_gui_arm
mv target/release/krokiet linux_krokiet_arm
- name: Release
uses: softprops/action-gh-release@v2
with:
tag_name: "Nightly"
files: |
linux_czkawka_cli_arm
linux_czkawka_gui_arm
linux_krokiet_arm
token: ${{ secrets.PAT_REPOSITORY }}
linux-arm-debug:
if: ${{ github.ref != 'refs/heads/master' }}
runs-on: ubuntu-22.04-arm
steps:
- uses: actions/checkout@v4
- name: Install basic libraries
run: sudo apt update || true; sudo apt install libgtk-4-dev libheif-dev libraw-dev -y
- name: Setup rust version
run: rustup default 1.85.0
- name: Build Debug
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build
- name: Store cli
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-arm-debug
path: |
target/debug/czkawka_cli
- name: Store gui
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-arm-debug
path: |
target/debug/czkawka_gui
- name: Store krokiet
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-arm-debug
path: |
target/debug/krokiet

View File

@@ -9,198 +9,95 @@ env:
CARGO_TERM_COLOR: always
jobs:
macos_x86_64:
runs-on: macos-13
macos:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, macos-13]
steps:
- uses: actions/checkout@v4
- name: Setup env
run: |
ARCHNAME=$([ "${{ runner.arch }}" = "ARM64" ] && echo arm64 || echo x86_64)
echo "ARCHNAME=$ARCHNAME" >> $GITHUB_ENV
- name: Setup rust version
run: rustup default 1.85.0
- name: Install Homebrew
run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: Install GTK4
run: |
brew link --overwrite python@3.13
brew install rust gtk4 libheif || true
brew link --overwrite python@3.13
- name: Setup rust version
run: rustup default 1.85.0
- name: Enable LTO
if: ${{ github.ref == 'refs/heads/master' }}
run: sed -i '' 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
brew install gtk4 libheif libavif dav1d || true
# brew link --overwrite python@3.13
- name: Build Release
run: cargo build --release
- name: Store MacOS CLI
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-x86_64
path: target/release/czkawka_cli
- name: Store MacOS GUI
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-x86_64
path: target/release/czkawka_gui
- name: Store MacOS Krokiet
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-x86_64
path: target/release/krokiet
- name: Prepare files to release
run: |
mv target/release/czkawka_cli macos_czkawka_cli_x86_64
mv target/release/czkawka_gui macos_czkawka_gui_x86_64
mv target/release/krokiet macos_krokiet_x86_64
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
macos_czkawka_cli_x86_64
macos_czkawka_gui_x86_64
macos_krokiet_x86_64
token: ${{ secrets.PAT_REPOSITORY }}
- name: Build Release Heif
run: cargo build --release --features heif
- name: Store MacOS CLI Heif
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-heif-x86_64
path: target/release/czkawka_cli
- name: Store MacOS GUI Heif
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-heif-x86_64
path: target/release/czkawka_gui
- name: Store MacOS Krokiet Heif
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-heif-x86_64
path: target/release/krokiet
- name: Prepare files to release 2
run: |
mv target/release/czkawka_cli macos_czkawka_cli_heif_x86_64
mv target/release/czkawka_gui macos_czkawka_gui_heif_x86_64
mv target/release/krokiet macos_krokiet_heif_x86_64
- name: Release 2
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
macos_czkawka_cli_heif_x86_64
macos_czkawka_gui_heif_x86_64
macos_krokiet_heif_x86_64
token: ${{ secrets.PAT_REPOSITORY }}
macos_arm:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install Homebrew
run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: Install GTK4
run: |
brew link --overwrite python@3.13
brew install rust gtk4 libheif || true
brew link --overwrite python@3.13
- name: Setup rust version
run: rustup default 1.85.0
- name: Enable LTO
if: ${{ github.ref == 'refs/heads/master' }}
run: sed -i '' 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
- name: Build Release
run: cargo build --release
- name: Store MacOS CLI
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-arm
path: target/release/czkawka_cli
- name: Store MacOS GUI
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-arm
path: target/release/czkawka_gui
- name: Store MacOS Krokiet
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-arm
path: target/release/krokiet
- name: Prepare files to release
run: |
mv target/release/czkawka_cli macos_czkawka_cli_arm
mv target/release/czkawka_gui macos_czkawka_gui_arm
mv target/release/krokiet macos_krokiet_arm
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
with:
tag_name: "Nightly"
files: |
macos_czkawka_cli_arm
macos_czkawka_gui_arm
macos_krokiet_arm
token: ${{ secrets.PAT_REPOSITORY }}
- name: Build Release Heif
run: |
set -e
sed -i '' 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
echo "VERS=release" >> $GITHUB_ENV
export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix)/lib
cargo build --release --features heif
cargo build --release
mv target/release/czkawka_cli macos_czkawka_cli_${{ env.ARCHNAME }}
mv target/release/czkawka_gui macos_czkawka_gui_${{ env.ARCHNAME }}
mv target/release/krokiet macos_krokiet_${{ env.ARCHNAME }}
cargo build --release --features "heif,libavif"
mv target/release/czkawka_cli macos_czkawka_cli_heif_avif_${{ env.ARCHNAME }}
mv target/release/czkawka_gui macos_czkawka_gui_heif_avif_${{ env.ARCHNAME }}
mv target/release/krokiet macos_krokiet_heif_avif_${{ env.ARCHNAME }}
- name: Store MacOS CLI Heif
uses: actions/upload-artifact@v4
with:
name: czkawka_cli-${{ runner.os }}-heif-arm
path: target/release/czkawka_cli
- name: Store MacOS GUI Heif
uses: actions/upload-artifact@v4
with:
name: czkawka_gui-${{ runner.os }}-heif-arm
path: target/release/czkawka_gui
- name: Store MacOS Krokiet Heif
uses: actions/upload-artifact@v4
with:
name: krokiet-${{ runner.os }}-heif-arm
path: target/release/krokiet
- name: Prepare files to release 2
- name: Build Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
mv target/release/czkawka_cli macos_czkawka_cli_heif_arm
mv target/release/czkawka_gui macos_czkawka_gui_heif_arm
mv target/release/krokiet macos_krokiet_heif_arm
set -e
sed -i '' 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i '' 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
echo "VERS=debug" >> $GITHUB_ENV
export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix)/lib
cargo build
mv target/debug/czkawka_cli macos_czkawka_cli_${{ env.ARCHNAME }}
mv target/debug/czkawka_gui macos_czkawka_gui_${{ env.ARCHNAME }}
mv target/debug/krokiet macos_krokiet_${{ env.ARCHNAME }}
cargo build --features "heif,libavif"
mv target/debug/czkawka_cli macos_czkawka_cli_heif_avif_${{ env.ARCHNAME }}
mv target/debug/czkawka_gui macos_czkawka_gui_heif_avif_${{ env.ARCHNAME }}
mv target/debug/krokiet macos_krokiet_heif_avif_${{ env.ARCHNAME }}
- name: Release 2
uses: softprops/action-gh-release@v2
- name: Store MacOS
uses: actions/upload-artifact@v4
with:
name: all-${{ runner.os }}-${{ runner.arch }}-${{ env.VERS }}
path: |
macos_czkawka_cli_heif_avif_${{ env.ARCHNAME }}
macos_czkawka_gui_heif_avif_${{ env.ARCHNAME }}
macos_krokiet_heif_avif_${{ env.ARCHNAME }}
macos_czkawka_cli_${{ env.ARCHNAME }}
macos_czkawka_gui_${{ env.ARCHNAME }}
macos_krokiet_${{ env.ARCHNAME }}
- name: Release
if: ${{ github.ref == 'refs/heads/master' }}
uses: softprops/action-gh-release@v2
with:
tag_name: "Nightly"
files: |
macos_czkawka_cli_heif_arm
macos_czkawka_gui_heif_arm
macos_krokiet_heif_arm
macos_czkawka_cli_heif_avif_${{ env.ARCHNAME }}
macos_czkawka_gui_heif_avif_${{ env.ARCHNAME }}
macos_krokiet_heif_avif_${{ env.ARCHNAME }}
macos_czkawka_cli_${{ env.ARCHNAME }}
macos_czkawka_gui_${{ env.ARCHNAME }}
macos_krokiet_${{ env.ARCHNAME }}
token: ${{ secrets.PAT_REPOSITORY }}

View File

@@ -10,7 +10,7 @@ env:
jobs:
quality:
runs-on: ubuntu-24.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -32,10 +32,9 @@ jobs:
run: cargo fmt --all -- --check
- name: Run clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Run clippy
run: cargo clippy -- -D warnings
run: |
cargo clippy --all-targets --all-features -- -D warnings
cargo clippy --all-targets -- -D warnings
- name: Check tools
run: |

View File

@@ -27,25 +27,29 @@ jobs:
rustup default 1.85.0
rustup target add x86_64-pc-windows-gnu
- name: Enable LTO
- name: Compile Krokiet Release
if: ${{ github.ref == 'refs/heads/master' }}
run: sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
run: |
sed -i 's/#lto = "thin"/lto = "thin"/g' Cargo.toml
cargo build --release --target x86_64-pc-windows-gnu --bin krokiet
mv target/x86_64-pc-windows-gnu/release/krokiet.exe windows_krokiet_on_linux.exe
- name: Compile Krokiet
run: cargo build --release --target x86_64-pc-windows-gnu --bin krokiet
- name: Compile Krokiet Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
sed -i 's/^\(\[profile\.dev\.package.*\)/#\1/' Cargo.toml
sed -i 's|^opt-level = 3 # OPT PACKAGES|#opt-level = 3 # OPT PACKAGES|' Cargo.toml
cargo build --target x86_64-pc-windows-gnu --bin krokiet
mv target/x86_64-pc-windows-gnu/debug/krokiet.exe windows_krokiet_on_linux.exe
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: krokiet-windows-c-on-linux-${{ github.sha }}
path: |
target/x86_64-pc-windows-gnu/release/krokiet.exe
./windows_krokiet_on_linux.exe
if-no-files-found: error
- name: Prepare files to release
run: |
mv target/x86_64-pc-windows-gnu/release/krokiet.exe windows_krokiet_on_linux.exe
- name: Release
uses: softprops/action-gh-release@v2
if: ${{ github.ref == 'refs/heads/master' }}
@@ -70,7 +74,8 @@ jobs:
rustup default 1.85.0
rustup target add x86_64-pc-windows-gnu
- name: Cross compile for Windows
- name: Cross compile for Windows - Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
@@ -81,6 +86,18 @@ jobs:
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/release/czkawka_cli.exe package/
- name: Cross compile for Windows - Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --locked
mkdir -p package
cp target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/debug/czkawka_cli.exe package/
- name: Package
run: |
#!/bin/bash
@@ -141,7 +158,8 @@ jobs:
rustup default 1.85.0
rustup target add x86_64-pc-windows-gnu
- name: Cross compile for Windows
- name: Cross compile for Windows - Release
if: ${{ github.ref == 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
@@ -152,6 +170,18 @@ jobs:
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/release/czkawka_cli.exe package/
- name: Cross compile for Windows - Debug
if: ${{ github.ref != 'refs/heads/master' }}
run: |
source "$HOME/.cargo/env"
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --locked
mkdir -p package
cp target/x86_64-pc-windows-gnu/debug/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/debug/czkawka_cli.exe package/
- name: Package
run: |
#!/bin/bash

View File

@@ -437,7 +437,7 @@ fn remove_test_dir() {
fn run_with_good_status(str_command: &[&str], print_messages: bool) {
let mut command = Command::new(str_command[0]);
let mut com = command.args(&str_command[1..]);
com.env("RUST_LOG", "error");
com.env("ENABLE_TERMINAL_LOGS_IN_CLI", "1");
com.env("RUST_BACKTRACE", "1");
if !print_messages {

View File

@@ -7,7 +7,7 @@ use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize};
use std::sync::{Arc, atomic};
use std::thread::{JoinHandle, sleep};
use std::time::{Duration, Instant};
use std::{fs, io, thread};
use std::{env, fs, io, thread};
use crossbeam_channel::Sender;
use directories_next::ProjectDirs;
@@ -175,7 +175,11 @@ fn filtering_messages(record: &Record) -> bool {
pub fn setup_logger(disabled_terminal_printing: bool, app_name: &str) {
log_panics::init();
let terminal_log_level = if disabled_terminal_printing { LevelFilter::Off } else { LevelFilter::Info };
let terminal_log_level = if disabled_terminal_printing && ![Ok("1"), Ok("true")].contains(&env::var("ENABLE_TERMINAL_LOGS_IN_CLI").as_deref()) {
LevelFilter::Off
} else {
LevelFilter::Info
};
let file_log_level = LevelFilter::Debug;
let term_config = ConfigBuilder::default()
@@ -192,7 +196,7 @@ pub fn setup_logger(disabled_terminal_printing: bool, app_name: &str) {
let combined_logger = (|| {
let Some(config_cache_path) = get_config_cache_path() else {
println!("No config cache path configured, using default config folder");
// println!("No config cache path configured, using default config folder");
return None;
};
@@ -206,7 +210,7 @@ pub fn setup_logger(disabled_terminal_printing: bool, app_name: &str) {
None,
);
let combined_logs: Vec<Box<dyn SharedLogger>> = if [Ok("1".to_string()), Ok("true".to_string())].contains(&std::env::var("DISABLE_FILE_LOGGING")) {
let combined_logs: Vec<Box<dyn SharedLogger>> = if [Ok("1"), Ok("true")].contains(&env::var("DISABLE_FILE_LOGGING").as_deref()) {
vec![TermLogger::new_from_config(term_config.clone())]
} else {
vec![TermLogger::new_from_config(term_config.clone()), WriteLogger::new(file_config, write_rotater)]
@@ -219,6 +223,7 @@ pub fn setup_logger(disabled_terminal_printing: bool, app_name: &str) {
if combined_logger.is_none() {
TermLogger::init(term_config, TerminalMode::Mixed, ColorChoice::Always).expect("Cannot initialize logger");
info!("Logging to terminal only, file logging is disabled");
}
}
@@ -334,7 +339,7 @@ pub fn set_number_of_threads(thread_number: usize) {
}
pub const RAW_IMAGE_EXTENSIONS: &[&str] = &[
"mrw", "arw", "srf", "sr2", "mef", "orf", "srw", "erf", "kdc", "kdc", "dcs", "rw2", "raf", "dcr", "dng", "pef", "crw", "iiq", "3fr", "nrw", "nef", "mos", "cr2", "ari", "cr3",
"ari", "cr3", "cr2", "crw", "erf", "raf", "3fr", "kdc", "dcs", "dcr", "iiq", "mos", "mef", "mrw", "nef", "nrw", "orf", "rw2", "pef", "srw", "arw", "srf", "sr2",
];
pub const JXL_IMAGE_EXTENSIONS: &[&str] = &["jxl"];

View File

@@ -5,6 +5,8 @@ use std::sync::atomic::AtomicBool;
use std::time::Duration;
use crossbeam_channel::Sender;
use humansize::{BINARY, format_size};
use log::info;
use rayon::prelude::*;
use crate::common::{WorkContinueStatus, remove_folder_if_contains_only_empty_folders};
@@ -259,6 +261,7 @@ pub trait CommonData {
progress_sender: Option<&Sender<ProgressData>>,
delete_item_type: DeleteItemType<T>,
) -> WorkContinueStatus {
info!("Simple");
let delete_results = self.delete_elements(stop_flag, progress_sender, delete_item_type);
if stop_flag.load(std::sync::atomic::Ordering::Relaxed) {
@@ -284,6 +287,7 @@ pub trait CommonData {
input.sort_unstable_by_key(if sorting_by_size { ResultEntry::get_size } else { ResultEntry::get_modified_date });
input
};
info!("Advanced");
let delete_results = if delete_method == DeleteMethod::HardLink {
let res = files_to_process
@@ -335,6 +339,19 @@ pub trait CommonData {
progress.bytes_to_check = delete_item_type.calculate_size_to_delete();
progress.entries_to_check = delete_item_type.calculate_entries_to_delete();
let is_hardlinking = matches!(delete_item_type, DeleteItemType::HardlinkingFiles(_));
let msg_common = format!(
"{} items, total size: {} bytes, dry_run: {dry_run}",
progress.entries_to_check,
format_size(progress.bytes_to_check, BINARY)
);
if is_hardlinking {
info!("Hardlinking {msg_common}");
} else {
info!("Deleting {msg_common}");
}
let delayed_sender = progress_sender.map(|e| DelayedSender::new(e.clone(), Duration::from_millis(200)));
let bytes_processed = Arc::new(std::sync::atomic::AtomicU64::new(0));
@@ -417,8 +434,6 @@ pub trait CommonData {
let mut delete_result = DeleteResult::default();
let is_hardlinking = matches!(delete_item_type, DeleteItemType::HardlinkingFiles(_));
for (file_entry, delete_err) in res {
if let Some(err) = delete_err {
delete_result.errors.push(err);
@@ -440,6 +455,15 @@ pub trait CommonData {
}
}
if !dry_run {
info!(
"{} items deleted, {} bytes gained, {} failed to delete",
delete_result.deleted_files,
format_size(delete_result.gained_bytes, BINARY),
delete_result.failed_to_delete_files
);
}
delete_result
}

View File

@@ -858,7 +858,7 @@ fn read_single_file_tags(path: &str, mut music_entry: MusicEntry) -> Option<Musi
};
let Ok(possible_tagged_file) = panic::catch_unwind(move || read_from(&mut file).ok()) else {
let message = create_crash_message("Lofty", path, "https://github.com/image-rs/image/issues");
let message = create_crash_message("Lofty", path, "https://github.com/Serial-ATA/lofty-rs");
error!("{message}");
return None;
};

View File

@@ -98,7 +98,7 @@ cargo run --release --bin czkawka_gui --features "heif,libraw,libavif"
```shell
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rustup gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw pkg-config
brew install rustup gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw dav1d pkg-config
rustup-init
cargo run --release --bin czkawka_gui
# Or with support for heif, libraw, libavif

View File

@@ -201,9 +201,10 @@ fn add_manually_directories(window_main: &Window, tree_view: &TreeView, excluded
dialog.connect_response(move |dialog, response_type| {
if response_type == ResponseType::Ok {
for text in entry.text().split(';') {
let mut text = text.trim().to_string();
let text = text.trim().to_string();
#[cfg(target_family = "windows")]
let mut text = normalize_windows_path(text).to_string_lossy().to_string();
let text = normalize_windows_path(text).to_string_lossy().to_string();
let mut text = text;
remove_ending_slashes(&mut text);