yonaskolb / Mint

A package manager that installs and runs executable Swift packages
MIT License
2.3k stars 123 forks source link

mint does not fail when Mintfile does not exists at the specified path #262

Open Skoti opened 1 year ago

Skoti commented 1 year ago

This check is hiding the error when the Mintfile does not exists: https://github.com/yonaskolb/Mint/blob/fdff1b5f8535e5d6e4ffb7d01a309a57dfe106f1/Sources/MintKit/Mint.swift#L124-L126

Causing commands like: mint run --no-install -m incorrect/path packageNameToRun to fail because the newest version of the package was not found. The bootstrap was done earlier with the correct Mintfile path.

Or commands like: mint run -m incorrect/path packageNameToRun to install the undesired newest version of the specified package and run with it ❗

Seems like the fix is not as easy as:

        let mintfile = try Mintfile(path: mintFilePath)
        if let mintFilePackage = mintfile.package(for: package.repo) {

because then 6 tests fail, I guess in some contexts it is expecting to run without Mintfile, but I don't know the internal assumptions of this project.

Anyway, surely when you specify Mintfile explicitly via -m option then it must fail if that file does not exist. Regardless of whether it is the default path specified -m Mintfile or a custom one.

In the current state, it leads to confusion and hard-to-understand behaviours.

r-dent commented 1 year ago

Anyway, surely when you specify Mintfile explicitly via -m option then it must fail if that file does not exist.

+1 on that. AFAIK tools like Bundler or CocoaPods have the same behavior.

yonaskolb commented 1 year ago

Yes agree if the Mintfile is explicit then it should fail if not found. In other cases Mint was designed to run packages without a Mintfile at all (that functionality came before the Mintfile even existed). I can understand if that seems like odd behaviour in certain cases.