pub_just/
execution_context.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use super::*;

#[derive(Copy, Clone)]
pub struct ExecutionContext<'src: 'run, 'run> {
  pub config: &'run Config,
  pub dotenv: &'run BTreeMap<String, String>,
  pub module: &'run Justfile<'src>,
  pub scope: &'run Scope<'src, 'run>,
  pub search: &'run Search,
}

impl<'src: 'run, 'run> ExecutionContext<'src, 'run> {
  pub fn working_directory(&self) -> PathBuf {
    let base = if self.module.is_submodule() {
      &self.module.working_directory
    } else {
      &self.search.working_directory
    };

    if let Some(setting) = &self.module.settings.working_directory {
      base.join(setting)
    } else {
      base.into()
    }
  }
}