tauri-apps / tauri

Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
https://tauri.app
Apache License 2.0
82.77k stars 2.49k forks source link

[bug] taurignore excluding all file except for few of crate excludes entire crate not working #9163

Open anatawa12 opened 6 months ago

anatawa12 commented 6 months ago

Describe the bug

taurignore excluding all file except for few of crate excludes entire crate

# everuthing except for rust files
/*
!/*.toml
!/*.rs
!/icons
!/src

at crate root should not ignore files in src folder but tauri cli does not watch entire crate

I confirmed this configuration works with gitignore so I think this is a bug in tauri.

I reproducible with both tauri cli v1.5.10 and v1.5.11.

Reproduction

https://github.com/anatawa12/tauri-issue-9163

run cargo tauri dev will not show

        Info Watching /Users/anatawa12/RustroverProjects/tauri-issue-9163 for changes...

When I replaced IgnoreMatcher::is_ignore with the following code

  fn is_ignore(&self, path: &Path, is_dir: bool) -> bool {
    for gitignore in &self.0 {
      if path.starts_with(gitignore.path())
      {
        let parents = gitignore.matched(path, is_dir);
        if parents.is_ignore() {
          println!("ignore: {:?}", parents);
          return true;
        }
      }
    }
    false
  }

shows the following message.

$ cargo tauri dev
     Running BeforeDevCommand (`:`)
ignore: Ignore(Glob { from: Some("/Users/anatawa12/RustroverProjects/tauri-issue-9163/.taurignore"), original: "/*", actual: "*", is_whitelist: false, is_only_dir: false })
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s

Expected behavior

taurignore excluding all file except for few should not exclude folder from watching.

Full tauri info output

[✔] Environment
    - OS: Mac OS 14.3.1 X64
    ✔ Xcode Command Line Tools: installed
    ✔ rustc: 1.75.0 (82e1608df 2023-12-21)
    ✔ cargo: 1.75.0 (1d8b05cdd 2023-11-20)
    ✔ rustup: 1.26.0 (5af9b9484 2023-04-05)
    ✔ Rust toolchain: stable-aarch64-apple-darwin (default)
    - node: 20.10.0
    - pnpm: 8.15.3
    - yarn: 1.22.19
    - npm: 10.2.3

[-] Packages
    - tauri [RUST]: 1.6.1
    - tauri-build [RUST]: 1.5.1
    - wry [RUST]: 0.24.7
    - tao [RUST]: 0.16.7
    - tauri-cli [RUST]: 1.5.12-beta.2
    - @tauri-apps/api [NPM]: 1.5.3
    - @tauri-apps/cli [NPM]: 1.5.11

[-] App
    - build-type: bundle
    - CSP: unset
    - distDir: out
    - devPath: http://localhost:3000/
    - framework: React (Next.js)
    - bundler: Webpack

Stack trace

No response

Additional context

Gitignore::matched and Gitignore::matched_path_or_any_parents returns Ignore(Glob{original:"/*"}) for the folder contains .gitignore file.

anatawa12 commented 6 months ago

Since tauri-cli pass is_dir = true to ignore crate, I think this might be a bug of ignore

Alt-iOS commented 6 months ago

can confirm this is also an issue with the latest version of the cli beta v2.0.0-beta.11

anatawa12 commented 6 months ago

can confirm this is also an issue with the latest version of the cli beta v2.0.0-beta.11

Yes.

bash-3.2$ cargo tauri --version
tauri-cli 2.0.0-beta.11
bash-3.2$ cat .taurignore 
/*
!/src
!/*.toml
!/*.rs
bash-3.2$ cargo tauri dev
    Running BeforeDevCommand (`:`)
    Finished dev [unoptimized + debuginfo] target(s) in 0.31s
^Cbash-3.2$ 
bash-3.2$ cargo tauri --version
tauri-cli 2.0.0-beta.11
bash-3.2$ cat .taurignore 
#/*
!/src
!/*.toml
!/*.rs
bash-3.2$ cargo tauri dev
    Running BeforeDevCommand (`:`)
    Info Watching /Users/anatawa12/RustroverProjects/tauri-issue-9163 for changes...
    Finished dev [unoptimized + debuginfo] target(s) in 0.47s
^Cbash-3.2$ 
Alt-iOS commented 6 months ago

Sorry, I meant is as I can confirm this is also an issue, as I am also having it with the newest beta haha, didnt mean it as a question