Skip to main content

lux_cli/
fetch.rs

1use std::path::PathBuf;
2
3use lux_lib::{config::Config, operations::Download, rockspec::Rockspec};
4
5use miette::Result;
6
7use crate::unpack::UnpackRemote;
8
9pub async fn fetch_remote(data: UnpackRemote, config: Config) -> Result<()> {
10    let package_req = data.package_req;
11
12    let rockspec = Download::new(&package_req, &config)
13        .download_rockspec()
14        .await?
15        .rockspec;
16
17    let destination = data
18        .destination
19        .unwrap_or_else(|| PathBuf::from(format!("{}-{}", rockspec.package(), rockspec.version())));
20    lux_lib::operations::FetchSrc::new(destination.clone().as_path(), &rockspec, &config)
21        .fetch()
22        .await?;
23
24    Ok(())
25}