Skip to content

Commit fda9cb7

Browse files
committed
update
1 parent be5607c commit fda9cb7

File tree

9 files changed

+108
-12
lines changed

9 files changed

+108
-12
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# 更新日志
22

3+
## v4.0.1
4+
*2022.9.4*
5+
- 放宽了安装扩展的错误处理;即当安装扩展可能出现问题(进程未正常退出)时,仍然继续配置流程
6+
37
## v4.0.0
48
*2022.9.3*
59
- 尝试修复了小概率无法安装扩展(即 `extension::install...` 失败)的问题

docs/docs/cli.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,70 @@
11
# 命令行界面
22

3+
本软件除了图形界面(Graphical User Interface, GUI)外,还提供了命令行界面(Command Line Interface, CLI)。当图形界面不适用,或者需要批量配置时,CLI 模式便能派上用场。
4+
5+
## 如何使用 CLI
6+
7+
当程序未接收到任何命令行参数时,将默认使用 GUI。如果你在启动程序时,传递了额外的命令行参数,则程序会改为使用 CLI(启用 `--gui` 开关除外)。
8+
9+
因此,你可以使用 `--cli` 参数来启动本程序,这样便会使用 CLI。
10+
11+
```sh
12+
./vscch --cli
13+
```
14+
15+
> `--cli` 参数没有任何作用,单纯是为了破坏“未接收到任何命令行参数”的状态。
16+
17+
此外,如果 Windows 系统下没有安装 WebView 2 运行时,程序也将退化到 CLI。
18+
19+
## 交互模式与非交互模式
20+
21+
CLI 具体细分为两种模式:_交互模式_(Interactive mode)与 _非交互模式_(Non-interactive mode)。
22+
23+
它们的具体区别是,如果软件需要用户提供更多的信息,_交互模式_ 下会以提示符(Prompt)的形式询问并获得用户输入;而 _非交互模式_ 下则会得到运行时错误并终止程序。总之,_交互模式_ 更适合用户直接运行,而 _非交互模式_ 适合批处理、定时计划等场景。
24+
25+
默认的模式是 _交互模式_。传入 `-y``--assume-yes` 参数来启用 _非交互模式_
26+
27+
## 交互模式使用说明
28+
29+
> 注:以下用户输入都可以通过传递命令行参数来跳过。
30+
31+
### VS Code 选择
32+
33+
请首先输入 VS Code 可执行文件的路径。如果工具检测到了已有的 VS Code 安装,则默认值已经就绪,直接回车下一步即可。
34+
35+
### 编译器类型选择
36+
37+
按上、下键选择你想要使用的编译器类型;按回车确定。
38+
39+
### 编译器路径选择
40+
41+
如果当前类型的编译器有且只有一个安装,则这一步骤会被跳过。
42+
43+
否则,从已安装的编译器中选择你想要使用的,或者进行如下操作之一:
44+
45+
- **获取新的编译器**:查看编译器安装说明,并引导你安装(若可用)。
46+
- **填写新的编译器路径**:输入新的编译器路径(比如通过“获取新的编译器”步骤下载并解压得到的)。
47+
- **重新扫描**:重新检查已安装的编译器(比如刚刚通过“获取新的编译器”步骤安装了新的编译器)。
48+
49+
### 工作文件夹
50+
51+
输入工作文件夹路径;不合法(如 MinGW-w64 下的中文路径)时工具会提示。
52+
53+
### 等待配置完成
54+
55+
工具会按照你提供的信息,并以默认设置完成配置。CLI 模式下,工具不会自动启动 VS Code;你需要手动打开工作文件夹并测试配置效果。
56+
57+
## 非交互模式使用说明
58+
59+
你需要在启动程序时使用以下参数:
60+
61+
| 参数名 | | 含义 |
62+
| ----------------- | ---- | -------------------------------------------- |
63+
| `-y` | 必需 | 启用非交互模式 |
64+
| `-w <PATH>` | 必需 | 指定工作文件夹路径 |
65+
| `-v` | 建议 | 启用更多输出;越多越具体(如 `-vvv`|
66+
| `-s <SETUP_NAME>` | 可选 | 指定编译器类型;可通过 `--help` 获得类型名称 |
67+
| `-c <PATH>` | 可选 | 指定编译器路径;若编译器不存在或不唯一则报错 |
68+
| `--vscode <PATH>` | 可选 | 指定 VS Code 路径;若未安装则报错 |
69+
70+
更多的参数说明请参考[配置选项说明](./options)

docs/docs/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
## 本软件会修改的全局设置/配置
1919

2020
本软件会酌情安装/卸载 VS Code 扩展。
21-
- 本软件总会安装微软开发的 [C/C++]() 扩展,以提供智能提示功能。如果你使用 GCC 或 MSVC 编译器,该扩展也将提供调试适配器功能。
22-
- 如果你使用基于 LLVM 的编译器,本软件会安装 [CodeLLDB]() 扩展,以提供调试适配器功能。
23-
- 如果你未使用兼容模式,本软件会安装 [Console Pauser]() 扩展,以提供外部弹窗运行功能。
21+
- 本软件总会安装微软开发的 [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 扩展,以提供智能提示功能。如果你使用 GCC 或 MSVC 编译器,该扩展也将提供调试适配器功能。
22+
- 如果你使用基于 LLVM 的编译器,本软件会安装 [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) 扩展,以提供调试适配器功能。
23+
- 如果你未使用兼容模式,本软件会安装 [Console Pauser](https://marketplace.visualstudio.com/items?itemName=Guyutongxue.pause-console) 扩展,以提供外部弹窗运行功能。
2424
- 如果你勾选了“卸载多余扩展”选项,本软件会**卸载**以下扩展:
2525
- \[TODO\]
2626

docs/docs/options.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,29 @@
11
# 配置选项说明
22

3+
## GUI/CLI 通用选项
4+
5+
6+
7+
## 其它 CLI 选项
8+
9+
### 显示版本信息 `-V` `--version`
10+
11+
显示版本信息并退出。
12+
13+
### 显示帮助信息 `-h` `--help`
14+
15+
显示本文档的简单版本并退出。按 CLI 选项的字典序排序。
16+
17+
### 使用图形界面 `-g` `--gui`
18+
19+
当启用此开关时,将启动图形界面,且所有其它选项均被忽略,以下选项除外:
20+
- 日志相关(`-v` `-q` `-L`
21+
- 跳过扩展管理(`--skip-ext-manage`
22+
23+
### 跳过扩展管理 `--skip-ext-manage`
24+
25+
启用此开关后,扩展管理步骤将被跳过。此选项仅用于调试、诊断软件本身,不应在正常运行时使用。
26+
27+
### 启用 CLI `--cli`
28+
29+
此开关无作用。

src-tauri/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vscch"
3-
version = "4.0.0" # WiX bundler do not support beta version
3+
version = "4.0.1"
44
description = "VS Code Config Helper v4"
55
authors = ["Guyutongxue"]
66
license = "GPLv3"
@@ -9,8 +9,6 @@ default-run = "vscch"
99
edition = "2018"
1010
build = "src/build.rs"
1111

12-
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
13-
1412
[build-dependencies]
1513
tauri-build = { version = "1.0.0-rc.7", features = [] }
1614

src-tauri/src/cli/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ use crate::cli::args::Language;
2222
use crate::gui::gui;
2323
use crate::log;
2424
use crate::steps::options::Options;
25-
use crate::steps::{vscode, workspace};
2625
use crate::tasks;
2726
#[cfg(windows)]
2827
use crate::utils::winapi;

src-tauri/src/tasks/extension.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ impl ExtensionManager {
5959
})
6060
}
6161

62+
#[allow(unused)]
6263
fn run(&self, args: &[&str]) -> Result<String> {
6364
let (suc, output) = self.run_lossy(args)?;
6465
if suc {
@@ -69,6 +70,7 @@ impl ExtensionManager {
6970
}
7071

7172
/// 返回:(是否成功, stdout)
73+
/// 因为有时这个命令的返回值不是 0,不知道为什么,总之目前先忽略它的返回值
7274
fn run_lossy(&self, args: &[&str]) -> Result<(bool, String)> {
7375
if !self.enabled {
7476
warn!("由于启用了 --skip-ext-manage,扩展管理命令 {:?} 被跳过。请手动管理扩展以保证配置结果正确。", args);
@@ -87,7 +89,6 @@ impl ExtensionManager {
8789
}
8890

8991
fn update(&mut self) -> Result<()> {
90-
// 有时这个命令的返回值不是 0,不知道为什么,总之先忽略它的返回值
9192
let (_, output) = self.run_lossy(&["--list-extensions"])?;
9293
self.installed = output.lines().map(|line| line.to_string()).collect();
9394
debug!("已安装的扩展有:{:?}", &self.installed);
@@ -100,7 +101,7 @@ impl ExtensionManager {
100101
debug!("扩展 {} 已经安装,跳过。", id);
101102
return Ok(());
102103
}
103-
self.run(&["--install-extension", id])?;
104+
self.run_lossy(&["--install-extension", id])?;
104105
self.installed.push(id.to_string());
105106
debug!("扩展 {} 安装成功。", id);
106107
Ok(())
@@ -112,7 +113,7 @@ impl ExtensionManager {
112113
debug!("扩展 {} 未安装,跳过。", id);
113114
return Ok(());
114115
}
115-
self.run(&["--uninstall-extension", id])?;
116+
self.run_lossy(&["--uninstall-extension", id])?;
116117
self.installed.retain(|installed| installed != id);
117118
debug!("扩展 {} 卸载成功。", id);
118119
Ok(())

src-tauri/src/tasks/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ use derivative::*;
2020
use log::{debug, info, trace, warn};
2121
use serde::Deserialize;
2222

23-
use std::fs;
2423
use std::path::PathBuf;
2524
use std::{path::Path, sync::Arc};
2625

0 commit comments

Comments
 (0)