hyperlit_runtime/
backend_compile_params_impl.rs

1use crate::evaluate_directive::evaluate_directive;
2use hyperlit_backend::backend::BackendCompileParams;
3use hyperlit_base::result::HyperlitResult;
4use hyperlit_model::database::Database;
5use hyperlit_model::directive_evaluation::DirectiveEvaluation;
6use hyperlit_model::segment::SegmentId;
7use std::path::Path;
8
9pub struct BackendCompileParamsImpl<'a> {
10    docs_directory: &'a Path,
11    build_directory: &'a Path,
12    output_directory: &'a Path,
13    database: &'a mut dyn Database,
14}
15
16impl<'a> BackendCompileParamsImpl<'a> {
17    pub fn new(
18        docs_directory: &'a Path,
19        build_directory: &'a Path,
20        output_directory: &'a Path,
21        database: &'a mut dyn Database,
22    ) -> Self {
23        Self {
24            docs_directory,
25            build_directory,
26            output_directory,
27            database,
28        }
29    }
30}
31
32impl BackendCompileParams for BackendCompileParamsImpl<'_> {
33    fn docs_directory(&self) -> &Path {
34        self.docs_directory
35    }
36
37    fn build_directory(&self) -> &Path {
38        self.build_directory
39    }
40
41    fn output_directory(&self) -> &Path {
42        self.output_directory
43    }
44
45    fn evaluate_directive(&self, directive: &str) -> HyperlitResult<DirectiveEvaluation> {
46        evaluate_directive(directive, self.database)
47    }
48
49    fn set_segment_included(&mut self, segment_id: SegmentId) -> HyperlitResult<()> {
50        self.database.set_segment_included(segment_id)
51    }
52}