Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run trunk without manual installation #924

Open
stefnotch opened this issue Dec 11, 2024 · 1 comment
Open

Run trunk without manual installation #924

stefnotch opened this issue Dec 11, 2024 · 1 comment

Comments

@stefnotch
Copy link
Contributor

stefnotch commented Dec 11, 2024

Background

A package manager such as Cargo solves two major problems

  1. Getting all libraries and tools that are required to build a project.
  2. Reproducible builds. If I pick up a project, I know exactly what dependencies were used.

Problems

  1. Trunk needs to be manually installed. Either cargo install trunk --locked or cargo binstall trunk, which requires one to first install binstall.
  2. In a team, one has to make sure everyone uses the same version of the tools. Setting the version in the Trunk.toml partially gets there.

Ideally those two steps would be automatic, and done using existing features of Rust/Cargo.

Request

With the upcoming cargo-script support, both of these issues could be solved eventually.

  1. Add a single trunk.rs script to my repositories, and tell my team members to use cargo trunk.rs serve --open instead of cargo run. They do not need to do anything else. cargo trunk.rs --help, cargo trunk.rs build, etc would just work.

  2. The script can depend on an exact version of Trunk. Support for lockfiles is planned.

An experimental version of this is possible today. A file with the following contents would be checked into source control, and then everyone can run Trunk without needing to manually install it.

#!/usr/bin/env cargo +nightly -Zscript
---cargo
[package]
edition = "2024"
[dependencies]
trunk = { git = "https://github.com/stefnotch/trunk" }
tokio = { version = "1.42.0" }
---

/// Run with
/// cargo +nightly -Zscript trunk.rs serve --open 
/// 
/// Eventually we will be able to do 
/// cargo trunk.rs serve --open 
#[tokio::main]
async fn main() {
    let a = trunk::run_cli().await;
    println!("{:?}", a);
}
@houqp
Copy link

houqp commented Feb 2, 2025

I am looking for this feature as well, it would allow me to get my project fully built with a single cargo build command.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants