Giter VIP home page Giter VIP logo

Comments (4)

bnjbvr avatar bnjbvr commented on August 12, 2024

Thanks for opening an issue. I can't reproduce this on Linux using either zsh or bash. Which OS and terminal are you using, out of curiosity, please?

from cargo-machete.

singhblom avatar singhblom commented on August 12, 2024

bash on PopOs.

from cargo-machete.

bnjbvr avatar bnjbvr commented on August 12, 2024

Ah, I actually manage to reproduce it today on Linux (yesterday I've tried on Mac). So it seems the code trying to figure out whether the command is being run independently (cargo-machete) or not (cargo machete) is incorrect, when another Rust program invokes cargo machete.

from cargo-machete.

bnjbvr avatar bnjbvr commented on August 12, 2024

It's heuristics all the way... Currently we look at environment variables to determine whether we're running as a cargo subcommand or not:

  • if CARGO is defined, then something is being run as a cargo subcommand
  • that can be machete with cargo machete, but that can also be cargo run in the machete directory
    • in that case, we also look at other env vars that Cargo defines only in the case of cargo run in a Rust directory. I've picked CARGO_PKG_NAME at random; if it's set we're doing cargo run, but if it's not, we're doing cargo machete, likely.

If we're running under cargo, then we'll skip the first argument (which is machete); otherwise we won't. Things are good so far.

Now with the example program you've passed, the heuristic fails because CARGO is set (we're running the example program with cargo run), and CARGO_PKG_NAME is set too (to the name of the toy program). So since the environment variables are inherited by default, cargo-machete always thinks it's running in cargo run mode, thus not removing the first argument ("machete").

I think there's no proper way to fix this directly in cargo-machete: CARGO and CARGO_PKG_NAME are set in both modes of the toy program (and the latter is always set to the name of the toy program), so there's no way to distinguish one use case from the other. There might be other ways, but I think the simplest way is to:

  • either invoke machete without inheriting the environment variables (or at least, clear the two machete is using as heuristics)
  • or use the cargo-machete invoke

Let me know if you have any other ideas of ways to fix this in cargo-machete.

from cargo-machete.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.