Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
guyutongxue committed Sep 4, 2022
1 parent be5607c commit fda9cb7
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 12 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# 更新日志

## v4.0.1
*2022.9.4*
- 放宽了安装扩展的错误处理;即当安装扩展可能出现问题(进程未正常退出)时,仍然继续配置流程

## v4.0.0
*2022.9.3*
- 尝试修复了小概率无法安装扩展(即 `extension::install...` 失败)的问题
Expand Down
68 changes: 68 additions & 0 deletions docs/docs/cli.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,70 @@
# 命令行界面

本软件除了图形界面(Graphical User Interface, GUI)外,还提供了命令行界面(Command Line Interface, CLI)。当图形界面不适用,或者需要批量配置时,CLI 模式便能派上用场。

## 如何使用 CLI

当程序未接收到任何命令行参数时,将默认使用 GUI。如果你在启动程序时,传递了额外的命令行参数,则程序会改为使用 CLI(启用 `--gui` 开关除外)。

因此,你可以使用 `--cli` 参数来启动本程序,这样便会使用 CLI。

```sh
./vscch --cli
```

> `--cli` 参数没有任何作用,单纯是为了破坏“未接收到任何命令行参数”的状态。
此外,如果 Windows 系统下没有安装 WebView 2 运行时,程序也将退化到 CLI。

## 交互模式与非交互模式

CLI 具体细分为两种模式:_交互模式_(Interactive mode)与 _非交互模式_(Non-interactive mode)。

它们的具体区别是,如果软件需要用户提供更多的信息,_交互模式_ 下会以提示符(Prompt)的形式询问并获得用户输入;而 _非交互模式_ 下则会得到运行时错误并终止程序。总之,_交互模式_ 更适合用户直接运行,而 _非交互模式_ 适合批处理、定时计划等场景。

默认的模式是 _交互模式_。传入 `-y``--assume-yes` 参数来启用 _非交互模式_

## 交互模式使用说明

> 注:以下用户输入都可以通过传递命令行参数来跳过。
### VS Code 选择

请首先输入 VS Code 可执行文件的路径。如果工具检测到了已有的 VS Code 安装,则默认值已经就绪,直接回车下一步即可。

### 编译器类型选择

按上、下键选择你想要使用的编译器类型;按回车确定。

### 编译器路径选择

如果当前类型的编译器有且只有一个安装,则这一步骤会被跳过。

否则,从已安装的编译器中选择你想要使用的,或者进行如下操作之一:

- **获取新的编译器**:查看编译器安装说明,并引导你安装(若可用)。
- **填写新的编译器路径**:输入新的编译器路径(比如通过“获取新的编译器”步骤下载并解压得到的)。
- **重新扫描**:重新检查已安装的编译器(比如刚刚通过“获取新的编译器”步骤安装了新的编译器)。

### 工作文件夹

输入工作文件夹路径;不合法(如 MinGW-w64 下的中文路径)时工具会提示。

### 等待配置完成

工具会按照你提供的信息,并以默认设置完成配置。CLI 模式下,工具不会自动启动 VS Code;你需要手动打开工作文件夹并测试配置效果。

## 非交互模式使用说明

你需要在启动程序时使用以下参数:

| 参数名 | | 含义 |
| ----------------- | ---- | -------------------------------------------- |
| `-y` | 必需 | 启用非交互模式 |
| `-w <PATH>` | 必需 | 指定工作文件夹路径 |
| `-v` | 建议 | 启用更多输出;越多越具体(如 `-vvv`|
| `-s <SETUP_NAME>` | 可选 | 指定编译器类型;可通过 `--help` 获得类型名称 |
| `-c <PATH>` | 可选 | 指定编译器路径;若编译器不存在或不唯一则报错 |
| `--vscode <PATH>` | 可选 | 指定 VS Code 路径;若未安装则报错 |

更多的参数说明请参考[配置选项说明](./options)
6 changes: 3 additions & 3 deletions docs/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
## 本软件会修改的全局设置/配置

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

Expand Down
27 changes: 27 additions & 0 deletions docs/docs/options.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,29 @@
# 配置选项说明

## GUI/CLI 通用选项



## 其它 CLI 选项

### 显示版本信息 `-V` `--version`

显示版本信息并退出。

### 显示帮助信息 `-h` `--help`

显示本文档的简单版本并退出。按 CLI 选项的字典序排序。

### 使用图形界面 `-g` `--gui`

当启用此开关时,将启动图形界面,且所有其它选项均被忽略,以下选项除外:
- 日志相关(`-v` `-q` `-L`
- 跳过扩展管理(`--skip-ext-manage`

### 跳过扩展管理 `--skip-ext-manage`

启用此开关后,扩展管理步骤将被跳过。此选项仅用于调试、诊断软件本身,不应在正常运行时使用。

### 启用 CLI `--cli`

此开关无作用。
2 changes: 1 addition & 1 deletion src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "vscch"
version = "4.0.0" # WiX bundler do not support beta version
version = "4.0.1"
description = "VS Code Config Helper v4"
authors = ["Guyutongxue"]
license = "GPLv3"
Expand All @@ -9,8 +9,6 @@ default-run = "vscch"
edition = "2018"
build = "src/build.rs"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[build-dependencies]
tauri-build = { version = "1.0.0-rc.7", features = [] }

Expand Down
1 change: 0 additions & 1 deletion src-tauri/src/cli/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ use crate::cli::args::Language;
use crate::gui::gui;
use crate::log;
use crate::steps::options::Options;
use crate::steps::{vscode, workspace};
use crate::tasks;
#[cfg(windows)]
use crate::utils::winapi;
Expand Down
7 changes: 4 additions & 3 deletions src-tauri/src/tasks/extension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ impl ExtensionManager {
})
}

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

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

fn update(&mut self) -> Result<()> {
// 有时这个命令的返回值不是 0,不知道为什么,总之先忽略它的返回值
let (_, output) = self.run_lossy(&["--list-extensions"])?;
self.installed = output.lines().map(|line| line.to_string()).collect();
debug!("已安装的扩展有:{:?}", &self.installed);
Expand All @@ -100,7 +101,7 @@ impl ExtensionManager {
debug!("扩展 {} 已经安装,跳过。", id);
return Ok(());
}
self.run(&["--install-extension", id])?;
self.run_lossy(&["--install-extension", id])?;
self.installed.push(id.to_string());
debug!("扩展 {} 安装成功。", id);
Ok(())
Expand All @@ -112,7 +113,7 @@ impl ExtensionManager {
debug!("扩展 {} 未安装,跳过。", id);
return Ok(());
}
self.run(&["--uninstall-extension", id])?;
self.run_lossy(&["--uninstall-extension", id])?;
self.installed.retain(|installed| installed != id);
debug!("扩展 {} 卸载成功。", id);
Ok(())
Expand Down
1 change: 0 additions & 1 deletion src-tauri/src/tasks/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ use derivative::*;
use log::{debug, info, trace, warn};
use serde::Deserialize;

use std::fs;
use std::path::PathBuf;
use std::{path::Path, sync::Arc};

Expand Down

0 comments on commit fda9cb7

Please sign in to comment.