diff --git a/CHANGELOG.md b/CHANGELOG.md index 9088bc3..4fe500b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## Unreleased + +- Squirrel will now pick files under a project's `test` and `dev` directories. + ([Giacomo Cavalieri](https://github.com/giacomocavalieri)) + ## 4.0.1 - 2025-07-14 - Fixed a bug where using numeric types in a query would result in runtime diff --git a/manifest.toml b/manifest.toml index 91d0b86..9990bfd 100644 --- a/manifest.toml +++ b/manifest.toml @@ -4,7 +4,7 @@ packages = [ { name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" }, { name = "backoff", version = "1.1.6", build_tools = ["rebar3"], requirements = [], otp_app = "backoff", source = "hex", outer_checksum = "CF0CFFF8995FB20562F822E5CC47D8CCF664C5ECDC26A684CBE85C225F9D7C39" }, - { name = "birdie", version = "1.3.1", build_tools = ["gleam"], requirements = ["argv", "edit_distance", "filepath", "glance", "gleam_community_ansi", "gleam_stdlib", "justin", "rank", "simplifile", "term_size", "trie_again"], otp_app = "birdie", source = "hex", outer_checksum = "F811C9EDAF920EF48597A26E788907AAF80D9239A5E8C8CCFBD0DD1BB10184D7" }, + { name = "birdie", version = "1.3.2", build_tools = ["gleam"], requirements = ["argv", "edit_distance", "filepath", "glance", "gleam_community_ansi", "gleam_stdlib", "justin", "rank", "simplifile", "term_size", "trie_again"], otp_app = "birdie", source = "hex", outer_checksum = "3D3980E497777C74068F3509564AF19E1EC4D42B3CC833E998177B5CD0ECDEF9" }, { name = "edit_distance", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "edit_distance", source = "hex", outer_checksum = "A1E485C69A70210223E46E63985FA1008B8B2DDA9848B7897469171B29020C05" }, { name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" }, { name = "eval", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "eval", source = "hex", outer_checksum = "264DAF4B49DF807F303CA4A4E4EBC012070429E40BE384C58FE094C4958F9BDA" }, @@ -20,8 +20,8 @@ packages = [ { name = "gleam_otp", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "7020E652D18F9ABAC9C877270B14160519FA0856EE80126231C505D719AD68DA" }, { name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" }, { name = "gleam_stdlib", version = "0.62.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "DC8872BC0B8550F6E22F0F698CFE7F1E4BDA7312FDEB40D6C3F44C5B706C8310" }, - { name = "gleam_time", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "F9AB61CE910F3071B136E1C8E214A46C406734F710D3AF75C99B00DA785902A2" }, - { name = "gleeunit", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "63022D81C12C17B7F1A60E029964E830A4CBD846BBC6740004FC1F1031AE0326" }, + { name = "gleam_time", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "DCDDC040CE97DA3D2A925CDBBA08D8A78681139745754A83998641C8A3F6587E" }, + { name = "gleeunit", version = "1.6.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "FDC68A8C492B1E9B429249062CD9BAC9B5538C6FBF584817205D0998C42E1DAC" }, { name = "glexer", version = "2.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glexer", source = "hex", outer_checksum = "5C235CBDF4DA5203AD5EAB1D6D8B456ED8162C5424FE2309CFFB7EF438B7C269" }, { name = "justin", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "justin", source = "hex", outer_checksum = "7FA0C6DB78640C6DC5FBFD59BF3456009F3F8B485BF6825E97E1EB44E9A1E2CD" }, { name = "mug", version = "3.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "mug", source = "hex", outer_checksum = "49AD2B71690C6A615453D272300951C4BDE19FBF55B167D9C951F5CD89FEC820" }, diff --git a/src/squirrel.gleam b/src/squirrel.gleam index 60bcbcb..0511743 100644 --- a/src/squirrel.gleam +++ b/src/squirrel.gleam @@ -86,6 +86,8 @@ pub fn main() { Ok(mode), Ok(options) -> { let generated_queries = walk(project.src()) + |> dict.merge(walk(project.test_())) + |> dict.merge(walk(project.dev())) |> generate_queries(options) let #(report, status_code) = case mode { @@ -291,7 +293,11 @@ fn walk(from: String) -> Dict(String, List(String)) { } _ -> { - let assert Ok(files) = simplifile.read_directory(from) + let files = case simplifile.read_directory(from) { + Ok(files) -> files + Error(simplifile.Enoent) -> [] + Error(_) -> panic as { "couldn't read directory: " <> from } + } let directories = { use file <- list.filter_map(files) let file_name = filepath.join(from, file) diff --git a/src/squirrel/internal/project.gleam b/src/squirrel/internal/project.gleam index 3bb0cfb..83fe27e 100644 --- a/src/squirrel/internal/project.gleam +++ b/src/squirrel/internal/project.gleam @@ -32,6 +32,22 @@ pub fn src() -> String { filepath.join(root(), "src") } +/// Finds the path of the project's `test` directory. +/// This recursively walks up from the current directory until it finds a +/// `gleam.toml` and builds it from there. +/// +pub fn test_() -> String { + filepath.join(root(), "test") +} + +/// Finds the path of the project's `dev` directory. +/// This recursively walks up from the current directory until it finds a +/// `gleam.toml` and builds it from there. +/// +pub fn dev() -> String { + filepath.join(root(), "dev") +} + /// Finds the path leading to the project's root folder. This recursively walks /// up from the current directory until it finds a `gleam.toml`. ///