// file : mod/ci-common.hxx -*- C++ -*- // license : MIT; see accompanying LICENSE file #ifndef MOD_CI_COMMON_HXX #define MOD_CI_COMMON_HXX #include // database #include #include #include #include #include namespace brep { class ci_start { public: void init (shared_ptr); // If the request handling has been performed normally, then return the // information that corresponds to the CI result manifest (see CI Result // Manifest in the manual). Otherwise (some internal has error occured), // log the error and return nullopt. // // The arguments correspond to the CI request and overrides manifest // values (see CI Request and Overrides Manifests in the manual). Note: // request id and timestamp are generated by the implementation. // struct package { package_name name; optional version; }; // Note that the inability to generate the reference is an internal // error. Thus, it is not optional. // struct start_result { uint16_t status; string message; string reference; vector> custom_result; }; // In the optional service information, if id is empty, then the generated // reference is used instead. // optional start (const basic_mark& error, const basic_mark& warn, const basic_mark* trace, optional&&, const repository_location& repository, const vector& packages, const optional& client_ip, const optional& user_agent, const optional& interactive = nullopt, const optional& simulate = nullopt, const vector>& custom_request = {}, const vector>& overrides = {}); // Helpers. // // Serialize the start result as a CI result manifest. // static void serialize_manifest (const start_result&, ostream&, bool long_lines = false); private: shared_ptr options_; }; class ci_cancel { public: void init (shared_ptr, shared_ptr); // @@ TODO Archive the tenant. // void cancel (/*...*/); private: shared_ptr options_; shared_ptr build_db_; }; } #endif // MOD_CI_COMMON_HXX