Iros
 
Loading...
Searching...
No Matches
step.h
Go to the documentation of this file.
1#pragma once
2
3#include "config.h"
6
7namespace pm {
8class Package;
9
18
20 using enum StepKind;
21 return di::make_enumerators<"StepKind">(di::enumerator<"download", Download>, di::enumerator<"patch", Patch>,
22 di::enumerator<"configure", Configure>, di::enumerator<"build", Build>,
23 di::enumerator<"install", Install>, di::enumerator<"clean", Clean>);
24}
25
26class Step {
27public:
29 : m_kind(kind), m_action(di::move(action)) {}
30
31 auto kind() const { return m_kind; }
32 auto run(Config const& config, Package& package) { return m_action(config, package); }
33
34private:
35 StepKind m_kind;
36 di::Function<di::Result<>(Config const&, Package&)> m_action;
37};
38}
Definition function.h:365
Definition config.h:10
Definition package.h:12
Step(StepKind kind, di::Function< di::Result<>(Config const &, Package &)> action)
Definition step.h:28
auto run(Config const &config, Package &package)
Definition step.h:32
auto kind() const
Definition step.h:31
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Expected< T, Error > Result
Definition result.h:8
Definition zstring_parser.h:9
constexpr auto enumerator
Definition enumerator.h:36
constexpr auto make_enumerators
Definition enumerator.h:74
Definition config.cpp:3
StepKind
Definition step.h:10
@ Patch
Definition step.h:12
@ Install
Definition step.h:15
@ Clean
Definition step.h:16
@ Download
Definition step.h:11
@ Build
Definition step.h:14
@ Configure
Definition step.h:13
Definition in_place_type.h:5