idt/downloaders/
composer.rs

1use std::path::Path;
2use std::path::PathBuf;
3
4#[expect(dead_code, reason = "Kept for memories")]
5/// Downloads and installs PHP packages using Composer.
6///
7/// # Errors
8/// - Executing the `composer` command fails or returns a non-zero exit status.
9/// - A filesystem operation (create/read/write/remove) fails.
10pub fn run(dev_tools_dir: &Path, tool: &str, packages: &[&str]) -> color_eyre::Result<PathBuf> {
11    let dev_tools_repo_dir = dev_tools_dir.join(tool);
12
13    std::fs::create_dir_all(&dev_tools_repo_dir)?;
14
15    ytil_cmd::silent_cmd("composer")
16        .args(
17            [
18                &[
19                    "require",
20                    "--dev",
21                    "--working-dir",
22                    &dev_tools_repo_dir.to_string_lossy(),
23                ][..],
24                packages,
25            ]
26            .concat(),
27        )
28        .status()?
29        .exit_ok()?;
30
31    Ok(dev_tools_repo_dir.join("vendor").join("bin"))
32}