mirror of
https://github.com/Darkatse/TauriTavern.git
synced 2026-10-19 07:35:14 +00:00
QoL: fastoll & package.json minor adjustments
This commit is contained in:
parent
36895813a0
commit
8ac267316b
6 changed files with 241 additions and 64 deletions
37
.github/workflows/desktop-auto-prerelease.yml
vendored
37
.github/workflows/desktop-auto-prerelease.yml
vendored
|
|
@ -84,43 +84,6 @@ jobs:
|
|||
- name: Build frontend assets
|
||||
run: pnpm build
|
||||
|
||||
- name: Build FasTools (Windows)
|
||||
if: startsWith(matrix.platform, 'windows-latest')
|
||||
run: |
|
||||
cd fastools
|
||||
cargo build --release
|
||||
mv target/release/fastools.exe ../FasTools.exe
|
||||
|
||||
- name: Build FasTools (Unix)
|
||||
if: runner.os != 'Windows'
|
||||
run: |
|
||||
TARGET_FLAG=""
|
||||
if [[ "${{ matrix.name }}" == "macos-x64" ]]; then
|
||||
TARGET_FLAG="--target x86_64-apple-darwin"
|
||||
elif [[ "${{ matrix.name }}" == "macos-arm64" ]]; then
|
||||
TARGET_FLAG="--target aarch64-apple-darwin"
|
||||
fi
|
||||
|
||||
cd fastools
|
||||
echo "Building FasTools with target: $TARGET_FLAG"
|
||||
cargo build --release $TARGET_FLAG
|
||||
|
||||
if [[ -n "$TARGET_FLAG" ]]; then
|
||||
TARGET_NAME=$(echo $TARGET_FLAG | awk '{print $2}')
|
||||
BIN_PATH="target/$TARGET_NAME/release/fastools"
|
||||
else
|
||||
BIN_PATH="target/release/fastools"
|
||||
fi
|
||||
|
||||
echo "Moving binary from $BIN_PATH"
|
||||
mv "$BIN_PATH" ../FasTools
|
||||
chmod +x ../FasTools
|
||||
cd ..
|
||||
|
||||
# Update tauri.conf.json
|
||||
echo "Updating tauri.conf.json..."
|
||||
jq '.bundle.resources["../FasTools"] = "FasTools" | del(.bundle.resources["../FasTools.exe"])' src-tauri/tauri.conf.json > src-tauri/tauri.conf.json.tmp && mv src-tauri/tauri.conf.json.tmp src-tauri/tauri.conf.json
|
||||
|
||||
- name: Build and upload desktop pre-release
|
||||
uses: tauri-apps/tauri-action@v0
|
||||
env:
|
||||
|
|
|
|||
93
.github/workflows/fastools-build.yml
vendored
Normal file
93
.github/workflows/fastools-build.yml
vendored
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
name: FasTools Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "fastools/**"
|
||||
- ".github/workflows/fastools-build.yml"
|
||||
|
||||
concurrency:
|
||||
group: fastools-build-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build-fastools:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: windows-x64
|
||||
platform: windows-latest
|
||||
target: ""
|
||||
bin_name: fastools.exe
|
||||
out_name: FasTools.exe
|
||||
- name: macos-x64
|
||||
platform: macos-latest
|
||||
target: x86_64-apple-darwin
|
||||
bin_name: fastools
|
||||
out_name: FasTools
|
||||
- name: macos-arm64
|
||||
platform: macos-latest
|
||||
target: aarch64-apple-darwin
|
||||
bin_name: fastools
|
||||
out_name: FasTools
|
||||
- name: linux-x64
|
||||
platform: ubuntu-22.04
|
||||
target: ""
|
||||
bin_name: fastools
|
||||
out_name: FasTools
|
||||
- name: linux-arm64
|
||||
platform: ubuntu-22.04-arm
|
||||
target: ""
|
||||
bin_name: fastools
|
||||
out_name: FasTools
|
||||
|
||||
runs-on: ${{ matrix.platform }}
|
||||
name: build-${{ matrix.name }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain (default target)
|
||||
if: matrix.target == ''
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Install Rust toolchain (custom target)
|
||||
if: matrix.target != ''
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Cache Rust build artifacts
|
||||
uses: swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: "fastools -> target"
|
||||
|
||||
- name: Build FasTools
|
||||
shell: bash
|
||||
run: |
|
||||
cd fastools
|
||||
if [[ -n "${{ matrix.target }}" ]]; then
|
||||
cargo build --release --target "${{ matrix.target }}"
|
||||
BIN_PATH="target/${{ matrix.target }}/release/${{ matrix.bin_name }}"
|
||||
else
|
||||
cargo build --release
|
||||
BIN_PATH="target/release/${{ matrix.bin_name }}"
|
||||
fi
|
||||
|
||||
mkdir -p "../dist-fastools/${{ matrix.name }}"
|
||||
cp "$BIN_PATH" "../dist-fastools/${{ matrix.name }}/${{ matrix.out_name }}"
|
||||
|
||||
- name: Upload FasTools artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: fastools-${{ matrix.name }}
|
||||
path: dist-fastools/${{ matrix.name }}/${{ matrix.out_name }}
|
||||
|
||||
30
README.md
30
README.md
|
|
@ -79,9 +79,33 @@ pnpm install
|
|||
常用命令:
|
||||
|
||||
```bash
|
||||
pnpm run build # 构建前端资源包
|
||||
pnpm run tauri:dev # 以开发模式运行桌面应用
|
||||
pnpm run tauri:build # 构建发行版安装程序
|
||||
pnpm run build # 构建前端资源包(webpack)
|
||||
pnpm run dev # 桌面开发模式(等价 tauri:dev)
|
||||
pnpm run tauri:dev # 桌面开发模式
|
||||
pnpm run tauri:build # 构建桌面发行包
|
||||
pnpm run android:dev # Android 开发模式
|
||||
pnpm run ios:dev # iOS 开发模式
|
||||
```
|
||||
|
||||
## FasTools(调试工具)
|
||||
|
||||
`fastools` 是一个极其有用的小工具箱,方便开发与桌面端部署时的调试。
|
||||
|
||||
构建:
|
||||
|
||||
```bash
|
||||
pnpm run fastools:build
|
||||
```
|
||||
|
||||
运行:
|
||||
|
||||
- `pnpm run fastools:run`
|
||||
|
||||
如需直接使用 cargo,也可在仓库根目录执行:
|
||||
|
||||
```bash
|
||||
cargo build --release --manifest-path fastools/Cargo.toml
|
||||
cargo run --manifest-path fastools/Cargo.toml
|
||||
```
|
||||
|
||||
## 项目文档
|
||||
|
|
|
|||
30
README_EN.md
30
README_EN.md
|
|
@ -77,9 +77,33 @@ pnpm install
|
|||
Common commands:
|
||||
|
||||
```bash
|
||||
pnpm run build # build frontend bundles
|
||||
pnpm run tauri:dev # run desktop app in dev mode
|
||||
pnpm run tauri:build # build release installers
|
||||
pnpm run build # build frontend bundles (webpack)
|
||||
pnpm run dev # desktop dev mode (alias of tauri:dev)
|
||||
pnpm run tauri:dev # desktop dev mode
|
||||
pnpm run tauri:build # build desktop installers
|
||||
pnpm run android:dev # Android dev mode
|
||||
pnpm run ios:dev # iOS dev mode
|
||||
```
|
||||
|
||||
## FasTools (Debug Utility)
|
||||
|
||||
`fastools` is an useful toolkit that facilitates debugging during development and desktop deployment.
|
||||
|
||||
Build:
|
||||
|
||||
```bash
|
||||
pnpm run fastools:build
|
||||
```
|
||||
|
||||
Run:
|
||||
|
||||
- `pnpm run fastools:run`
|
||||
|
||||
If you prefer cargo directly, run from repository root:
|
||||
|
||||
```bash
|
||||
cargo build --release --manifest-path fastools/Cargo.toml
|
||||
cargo run --manifest-path fastools/Cargo.toml
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
|
|
|||
|
|
@ -359,6 +359,7 @@ fn get_cmd(cmd: &str) -> String {
|
|||
fn show_menu() -> Result<bool> {
|
||||
let selections = &[
|
||||
"🚀 启动开发模式 (Dev)",
|
||||
"📱 启动 Android 开发模式 (Android Dev)",
|
||||
"🔨 构建生产版本 (Build)",
|
||||
"⭐ 检查更新 (Git Pull)",
|
||||
"🧰 工具箱 (Toolbox)",
|
||||
|
|
@ -378,18 +379,22 @@ fn show_menu() -> Result<bool> {
|
|||
Ok(true) // 继续循环
|
||||
}
|
||||
1 => {
|
||||
run_build()?;
|
||||
run_android_dev()?;
|
||||
Ok(true)
|
||||
}
|
||||
2 => {
|
||||
update_repository()?;
|
||||
run_build()?;
|
||||
Ok(true)
|
||||
}
|
||||
3 => {
|
||||
show_toolbox_menu()?;
|
||||
update_repository()?;
|
||||
Ok(true)
|
||||
}
|
||||
4 => {
|
||||
show_toolbox_menu()?;
|
||||
Ok(true)
|
||||
}
|
||||
5 => {
|
||||
show_debug_menu()?;
|
||||
Ok(true)
|
||||
}
|
||||
|
|
@ -604,6 +609,22 @@ fn run_dev() -> Result<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn run_android_dev() -> Result<()> {
|
||||
log_info("正在启动 Android 开发模式...");
|
||||
|
||||
let status = run_sequential_attempts(&[
|
||||
("pnpm", vec!["run", "android:dev"]),
|
||||
("corepack", vec!["pnpm", "run", "android:dev"]),
|
||||
("npm", vec!["run", "android:dev"]),
|
||||
])?;
|
||||
|
||||
if !status.success() {
|
||||
log_error("Android 开发模式启动失败");
|
||||
pause();
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn run_build() -> Result<()> {
|
||||
log_info("正在构建生产版本...");
|
||||
|
||||
|
|
@ -986,21 +1007,63 @@ fn run_debug() -> Result<()> {
|
|||
env::set_var("FORCE_COLOR", "1");
|
||||
env::set_var("CARGO_TERM_COLOR", "always");
|
||||
|
||||
let (prog, args) = if which("pnpm").is_ok() {
|
||||
("pnpm", vec!["tauri", "dev"])
|
||||
} else {
|
||||
("npm", vec!["run", "tauri", "dev"])
|
||||
};
|
||||
// 与 run_sequential_attempts 保持一致的多候选回退策略,避免单条命令 NotFound 直接失败。
|
||||
let candidates = [
|
||||
("pnpm", vec!["tauri", "dev"]),
|
||||
("pnpm", vec!["run", "tauri:dev"]),
|
||||
("corepack", vec!["pnpm", "tauri", "dev"]),
|
||||
("corepack", vec!["pnpm", "run", "tauri:dev"]),
|
||||
("npm", vec!["run", "tauri:dev"]),
|
||||
];
|
||||
|
||||
let cmd_prog = get_cmd(prog);
|
||||
log_info(&format!("执行命令: {} {:?}", cmd_prog, args));
|
||||
let mut last_err: Option<anyhow::Error> = None;
|
||||
let mut child_opt = None;
|
||||
|
||||
let mut child = Command::new(&cmd_prog)
|
||||
.args(&args)
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.spawn()
|
||||
.context("无法启动调试进程")?;
|
||||
for (prog, args) in candidates.iter() {
|
||||
let cmd_prog = get_cmd(prog);
|
||||
log_info(&format!("执行命令: {} {:?}", cmd_prog, args));
|
||||
|
||||
match Command::new(&cmd_prog)
|
||||
.args(args)
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.spawn()
|
||||
{
|
||||
Ok(child) => {
|
||||
child_opt = Some(child);
|
||||
break;
|
||||
}
|
||||
Err(e) if e.kind() == std::io::ErrorKind::NotFound => {
|
||||
// Windows 下额外尝试不带 .cmd 的命令名(兼容部分 shell/path 配置)。
|
||||
if cfg!(windows) && *prog != "corepack" {
|
||||
match Command::new(prog)
|
||||
.args(args)
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.spawn()
|
||||
{
|
||||
Ok(child) => {
|
||||
child_opt = Some(child);
|
||||
break;
|
||||
}
|
||||
Err(e2) => {
|
||||
last_err = Some(e2.into());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
last_err = Some(e.into());
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
last_err = Some(e.into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut child = child_opt.ok_or_else(|| {
|
||||
anyhow::anyhow!("无法启动调试进程")
|
||||
.context(last_err.unwrap_or_else(|| anyhow::anyhow!("program not found")))
|
||||
})?;
|
||||
|
||||
let stdout = child.stdout.take().unwrap();
|
||||
let stderr = child.stderr.take().unwrap();
|
||||
|
|
|
|||
18
package.json
18
package.json
|
|
@ -5,10 +5,20 @@
|
|||
"type": "module",
|
||||
"scripts": {
|
||||
"tauri": "tauri",
|
||||
"build": "node build.js --build-only",
|
||||
"dev": "webpack --config webpack.config.js --watch",
|
||||
"tauri:dev": "node build.js",
|
||||
"tauri:build": "node build.js --prod"
|
||||
"android": "tauri android",
|
||||
"ios": "tauri ios",
|
||||
"build": "pnpm run web:build",
|
||||
"dev": "pnpm run tauri:dev",
|
||||
"web:build": "node build.js --build-only",
|
||||
"web:dev": "webpack --config webpack.config.js --watch",
|
||||
"tauri:dev": "tauri dev",
|
||||
"tauri:build": "tauri build",
|
||||
"android:dev": "tauri android dev",
|
||||
"android:build": "tauri android build",
|
||||
"ios:dev": "tauri ios dev",
|
||||
"ios:build": "tauri ios build",
|
||||
"fastools:build": "cargo build --release --manifest-path fastools/Cargo.toml",
|
||||
"fastools:run": "cargo run --manifest-path fastools/Cargo.toml"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "^2.10.0",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue