summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-06-28 06:24:20 +0800
committerGitHub <noreply@github.com>2024-06-28 06:24:20 +0800
commit4fbbbd2d991b37ac04b77151ef862de9649bbfec (patch)
tree7e4343fb19b8d105b39ad6137d23944d8bffce60 /src/main.rs
parent10bd71297db11c163f95625080d956469a1d8689 (diff)
downloadaichat-4fbbbd2d991b37ac04b77151ef862de9649bbfec.tar.gz
feat: `.file`/`--file` support URLs (#665)
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs
index f89ec47..a2ed9ad 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -22,7 +22,10 @@ use crate::config::{
use crate::function::{eval_tool_calls, need_send_tool_results};
use crate::render::{render_error, MarkdownRender};
use crate::repl::Repl;
-use crate::utils::*;
+use crate::utils::{
+ create_abort_signal, create_spinner, detect_shell, extract_block, run_command, AbortSignal,
+ Shell, CODE_BLOCK_RE, IS_STDOUT_TERMINAL,
+};
use anyhow::{bail, Result};
use async_recursion::async_recursion;
@@ -138,7 +141,7 @@ async fn main() -> Result<()> {
if no_input {
bail!("No input");
}
- let input = create_input(&config, text, file)?;
+ let input = create_input(&config, text, file).await?;
let shell = detect_shell();
shell_execute(&config, &shell, input).await?;
return Ok(());
@@ -146,7 +149,7 @@ async fn main() -> Result<()> {
config.write().apply_prelude()?;
if let Err(err) = match no_input {
false => {
- let mut input = create_input(&config, text, file)?;
+ let mut input = create_input(&config, text, file).await?;
input.use_embeddings(abort_signal.clone()).await?;
start_directive(&config, input, cli.no_stream, cli.code, abort_signal).await
}
@@ -298,11 +301,15 @@ fn aggregate_text(text: Option<String>) -> Result<Option<String>> {
Ok(text)
}
-fn create_input(config: &GlobalConfig, text: Option<String>, file: &[String]) -> Result<Input> {
+async fn create_input(
+ config: &GlobalConfig,
+ text: Option<String>,
+ file: &[String],
+) -> Result<Input> {
let input = if file.is_empty() {
Input::from_str(config, &text.unwrap_or_default(), None)
} else {
- Input::new(config, &text.unwrap_or_default(), file.to_vec(), None)?
+ Input::from_files(config, &text.unwrap_or_default(), file.to_vec(), None).await?
};
if input.is_empty() {
bail!("No input");