| 158 | } |
| 159 | |
| 160 | pub fn workspace(arg: Option<String>, y: bool) -> Result<String> { |
| 161 | if let Some(origin) = arg { |
| 162 | match workspace::path_available(&origin) { |
| 163 | Err(e) => Err(anyhow!("工作文件夹不可用:{}", e)), |
| 164 | Ok(_) => Ok(origin), |
| 165 | } |
| 166 | } else if y { |
| 167 | Err(anyhow!("由于未从命令行指定工作文件夹,且用户输入被禁用;程序无法继续。请指定 -w 选项,或者关闭 -y 开关。")) |
| 168 | } else { |
| 169 | let question = Question::input("vscode") |
| 170 | .message("工作文件夹路径:") |
| 171 | .validate_on_key(|s, _| workspace::path_available(s).is_ok()) |
| 172 | .validate(|s, _| workspace::path_available(s).map_err(|s| format!("该文件夹不可用:{}", s))) |
| 173 | .build(); |
| 174 | Ok(prompt_one(question)?.as_string().unwrap().into()) |
| 175 | } |
| 176 | } |