grass/dev/strategy/api/
local.rs1use crate::dev::strategy::{
2 alias::{LocalAliasStrategy, SupportsAlias},
3 discovery::LocalDiscoveryStrategy,
4 git::LocalGitStrategy,
5 path::LocalPathStrategy,
6};
7
8use super::{SupportsDiscovery, SupportsGit, SupportsPath};
9
10pub struct LocalApiStrategy<'a> {
11 alias_strategy: &'a LocalAliasStrategy<'a>,
12 discovery_strategy: &'a LocalDiscoveryStrategy<'a, LocalPathStrategy<'a>>,
13 git_strategy: &'a LocalGitStrategy<'a, LocalPathStrategy<'a>>,
14 path_strategy: &'a LocalPathStrategy<'a>,
15}
16
17impl<'a> LocalApiStrategy<'a> {
18 pub fn new(
19 api_strategy: &'a LocalAliasStrategy<'a>,
20 discovery_strategy: &'a LocalDiscoveryStrategy<'a, LocalPathStrategy<'a>>,
21 git_strategy: &'a LocalGitStrategy<'a, LocalPathStrategy<'a>>,
22 path_strategy: &'a LocalPathStrategy<'a>,
23 ) -> Self {
24 Self {
25 alias_strategy: api_strategy,
26 discovery_strategy,
27 git_strategy,
28 path_strategy,
29 }
30 }
31}
32
33impl<'a> SupportsDiscovery for LocalApiStrategy<'a> {
34 type Strategy = LocalDiscoveryStrategy<'a, LocalPathStrategy<'a>>;
35
36 fn get_discovery_strategy(&self) -> &Self::Strategy {
37 self.discovery_strategy
38 }
39}
40
41impl<'a> SupportsGit for LocalApiStrategy<'a> {
42 type Strategy = LocalGitStrategy<'a, LocalPathStrategy<'a>>;
43
44 fn get_git_strategy(&self) -> &Self::Strategy {
45 self.git_strategy
46 }
47}
48
49impl<'a> SupportsPath for LocalApiStrategy<'a> {
50 type Strategy = LocalPathStrategy<'a>;
51
52 fn get_path_strategy(&self) -> &Self::Strategy {
53 self.path_strategy
54 }
55}
56
57impl<'a> SupportsAlias for LocalApiStrategy<'a> {
58 type Strategy = LocalAliasStrategy<'a>;
59
60 fn get_alias_strategy(&self) -> &Self::Strategy {
61 self.alias_strategy
62 }
63}