/* * 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 two package repositories, where one //! extends ancd changes another //! // Export multiple packages in this module bok::moduse! { one, two, three, } /// /// Base repository with some packages /// #[::bok_macro::repository(::bok::RepositoryEmpty)] #[derive(::bok_macro::Repository, ::std::default::Default)] pub struct Pkgs1 {} // Add some packages to the repository // all packages will have `::default()` values bok::repo_packages! { Pkgs1 { One, Two, } } /// /// This repository extends and changes Pkgs1 /// #[::bok_macro::repository(Pkgs1)] #[derive(::bok_macro::Repository, ::std::default::Default)] pub struct Pkgs2 {} // add a third package with `::default()` values bok::repo_packages! { Pkgs1 { Three, } } impl Pkgs2 { /// override the package `two` options from the base repostiory (Pkgs1) pub fn two(&self) -> Two { Two::builder() .my_attr(42) .build() .expect("Can't build package Two") } }