Comments (4)
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.
bash on PopOs.
from cargo-machete.
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.
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
withcargo machete
, but that can also becargo 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 pickedCARGO_PKG_NAME
at random; if it's set we're doingcargo run
, but if it's not, we're doingcargo machete
, likely.
- in that case, we also look at other env vars that Cargo defines only in the case of
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)
- Feature Request: Optimize [build-dependencies] as well HOT 2
- [bug] missing field `version` - should not report HOT 6
- No logo / mascot HOT 1
- Investigate Nightly CI failure
- Is there a way to ignore a workspace member crate? HOT 2
- Github Action fails in CI on windows-latest HOT 2
- Falso positive when package name and lib name differ HOT 3
- [Rust 1.77.0] cargo machete --with-metadata panicking HOT 2
- Feature Idea: Centralized config file HOT 1
- --with-metadata false positive with build-dependencies HOT 2
- When no issues are found report message is incomplete.
- Add a benchmark
- `--with-metadata` does not correctly analyze build scripts HOT 1
- Related dependencies are signed as unused but they are not HOT 3
- Make github action take a `working_dir` argument HOT 1
- False positives for multi-dep single `use` statements HOT 1
- Create a docker image? HOT 4
- Support for skipping sub-directories HOT 1
- Respect the `members` field of a workspace Cargo.toml HOT 2
- actions-rs/cargo@v1 use Node12. Please update the following actions to use Node.js 16 HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cargo-machete.