hyperlit_runtime/
backend_compile_params_impl.rs1use 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}