#directory #compile-time #filename #macro #file #name #resolve

macro get_files_macro

A Rust macro that can resolve a directory's file names before compile-time

2 releases

0.1.3 Dec 28, 2023
0.1.2 Dec 28, 2023
0.1.1 Dec 28, 2023
0.1.0 Dec 28, 2023

#526 in Procedural macros

MIT license

11KB
217 lines

get_files_macro

A Rust macro that can resolve a directory's file names before compile-time.

Usage

// This scenario is meant to be executed from this repo's root

let file_names = get_files!(true, true, true, true, true, "/", "./test");
// ^^^^^^^^^^^ -> Vec<&str>

let test_names = vec![
    "testfile1.test",
    "testfile2.test",
    "zzz",
    "zzz/testfile3.test",
    ".testfile.test",
    "testfile.link",
];

assert_eq!(file_names.len(), test_names.len());
for (index, file_name) in file_names.into_iter().enumerate() {
    assert_eq!(file_name, test_names[index]);
}

println!("All tests passed!");

Status

Deployment status: Deploy

Why?

I wanted to extend sqlx with a function that can check if a database's migrations are up-to-date. To do that, I needed to get the names of all files in a directory before compile-time. I couldn't find a way to do that, so I made this macro.

Dependencies

~305–760KB
~18K SLoC