From 2911ee91a51d45c4fb95d49ec038ec5a253bc355 Mon Sep 17 00:00:00 2001 From: axiangcoding Date: Thu, 13 Jun 2024 12:56:07 +0800 Subject: [PATCH] Add github actions to auto build project (#6) - add dependabot.yml - add actions `release` fixed WTDH-2 --- .github/dependabot.yml | 21 ++++++++++++ .github/workflows/lint.yml | 27 +++++++++++++++ .github/workflows/release.yml | 63 +++++++++++++++++++++++++++++++++++ src-tauri/Cargo.toml | 2 ++ src-tauri/src/commands/os.rs | 28 +--------------- 5 files changed, 114 insertions(+), 27 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..e3f6578 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,21 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + + - package-ecosystem: "cargo" + directory: "/src-tauri" + schedule: + interval: "weekly" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..34aedb3 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,27 @@ +name: Lint +on: + pull_request: + branches: + - main + push: + branches: + - main +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Rust setup + uses: dtolnay/rust-toolchain@stable + - name: Sync node version and setup cache + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + cache: "yarn" + - name: Install dependencies + run: yarn install + - name: Lint + run: make lint \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2f05de5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,63 @@ +name: Release +on: + push: + tags: + - "v*" + branches: + - main + workflow_dispatch: + +jobs: + release: + name: Release on ${{ matrix.platform }} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + platform: + # TODO 其他平台均支持打包,但未经过测试,故暂时屏蔽掉 + # - "macos-latest" + # - "ubuntu-latest" + - "windows-latest" + runs-on: ${{ matrix.platform }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-latest' + # You can remove libayatana-appindicator3-dev if you don't use the system tray feature. + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev + + - name: Rust setup + uses: dtolnay/rust-toolchain@stable + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: "./src-tauri -> target" + + - name: Sync node version and setup cache + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + cache: "yarn" + + - name: Install frontend dependencies + # If you don't have `beforeBuildCommand` configured you may want to build your frontend here too. + run: yarn install + - name: Build the app + uses: tauri-apps/tauri-action@v0 + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags. + releaseName: "wt-helper-app v__VERSION__" # tauri-action replaces \_\_VERSION\_\_ with the app version. + releaseBody: "See the assets to download and install this version." + releaseDraft: false + prerelease: ${{ github.event_name == 'push' && contains(github.ref, 'refs/heads/main') && !startsWith(github.ref, 'refs/tags/v') }} diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index f6b0c4a..64e5a68 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -23,6 +23,8 @@ sevenz-rust = "0.6.0" zip = "2.1.3" tempfile = "3" walkdir = "2.5.0" + +[target.'cfg(target_os = "windows")'.dependencies] winreg = "0.52.0" [features] diff --git a/src-tauri/src/commands/os.rs b/src-tauri/src/commands/os.rs index b8b876c..7eb417a 100644 --- a/src-tauri/src/commands/os.rs +++ b/src-tauri/src/commands/os.rs @@ -17,33 +17,7 @@ pub fn show_in_folder(path: String) { #[cfg(target_os = "linux")] { - if path.contains(",") { - // see https://gitlab.freedesktop.org/dbus/dbus/-/issues/76 - let new_path = match metadata(&path).unwrap().is_dir() { - true => path, - false => { - let mut path2 = PathBuf::from(path); - path2.pop(); - path2.into_os_string().into_string().unwrap() - } - }; - Command::new("xdg-open").arg(&new_path).spawn().unwrap(); - } else { - if let Ok(Fork::Child) = daemon(false, false) { - Command::new("dbus-send") - .args([ - "--session", - "--dest=org.freedesktop.FileManager1", - "--type=method_call", - "/org/freedesktop/FileManager1", - "org.freedesktop.FileManager1.ShowItems", - format!("array:string:\"file://{path}\"").as_str(), - "string:\"\"", - ]) - .spawn() - .unwrap(); - } - } + Command::new("xdg-open").args([path]).spawn().unwrap(); } #[cfg(target_os = "macos")]