/* * Copyright 2024 Luca Fulchir * * Licensed under the Apache License, Version 2.0 with LLVM exception (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License and of the exception at * * http://www.apache.org/licenses/LICENSE-2.0 * https://spdx.org/licenses/LLVM-exception.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //! //! Example of a repository extending another /// /// This repository extends and changes R1 // FIXME: why? use ::bok::repository; pub mod pkgs { pub mod one { pub use crate::repos::pkgs::one::*; } pub mod two { pub use crate::repos::pkgs::two::*; } } #[::bok::repository(super::r1::R1)] #[::bok::repo_packages(pkgs::two::Two)] #[derive(::std::default::Default)] pub struct R2 { r2: i32, } #[::bok::repo_impl] impl R2 {} /* impl Pkgs2 { /// override the package `two` options from the base repostiory (Pkgs1) pub fn two(&self) -> Two { use ::bok::PkgBuilder; let pkg: Box = Two::builder() .my_attr(42) .build() .expect("Can't build package Two"); let two = pkg.as_any().downcast_ref::().unwrap(); two.clone() } } */