You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: build.rs
    path of file: ./repos/Ambient/campfire/src/web
    
    the code of the file until where you have to start completion: use anyhow::Context;
use clap::{Args, ValueEnum};
use std::path::PathBuf;
use tokio::process::Command;

#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
pub(crate) enum Target {
    /// Generates a wasm and js shim that uses `require` to import the `.wasm`
    Bundler,
    /// The shim won't import th
    
pub(crate) async fn install_wasm_pack() -> anyhow::Result<()> {
    tracing::info!("Installing wasm-pack");

    let mut curl = std::process::Command::new("curl")
        .args([
            "https://rustwasm.github.io/wasm-pack/installer/init.sh",
            "-sSf",
        ])
        .stdout(std::process::Stdio::piped())
        .spawn()
        .context("Failed to spawn curl")?;

    let mut sh = std::process::Command::new("sh")
        .stdin(std::process::Stdio::from(curl.stdout.take().unwrap()))
        .spawn()
        .context("Failed to spawn sh")?;

    let sh = sh.wait()?;

    let curl = curl.wait()?;

    if !curl.success() {
        anyhow::bail!("Failed to fetch install script")
    }

    if !sh.success() {
        anyhow::bail!("Failed to run install script for wasm-pack")
    }

    Ok(())
}