cli/
recursion_level.rs

1//! # recursion_level
2//!
3//! Utility functions to keep track of the recursion of cargo-make calls.
4//!
5
6#[cfg(test)]
7#[path = "recursion_level_test.rs"]
8mod recursion_level_test;
9
10static RECURSION_ENV_VAR_NAME: &str = "CARGO_MAKE_INTERNAL_RECURSION_LEVEL";
11
12pub(crate) fn get() -> u32 {
13    envmnt::get_u32(RECURSION_ENV_VAR_NAME, 0)
14}
15
16pub(crate) fn is_top() -> bool {
17    get() == 0
18}
19
20pub(crate) fn increment() {
21    if envmnt::exists(RECURSION_ENV_VAR_NAME) {
22        envmnt::increment(RECURSION_ENV_VAR_NAME);
23    } else {
24        envmnt::set_u32(RECURSION_ENV_VAR_NAME, 0);
25    }
26}