mirror of
https://github.com/cemu-project/vcpkg.git
synced 2025-02-25 03:53:32 +01:00
54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include <vcpkg/base/expected.h>
|
|
#include <vcpkg/base/files.h>
|
|
|
|
#include <vcpkg/packagespec.h>
|
|
#include <vcpkg/vcpkgpaths.h>
|
|
|
|
namespace vcpkg::Dependencies
|
|
{
|
|
struct InstallPlanAction;
|
|
struct ActionPlan;
|
|
}
|
|
namespace vcpkg::Build
|
|
{
|
|
struct AbiTagAndFile;
|
|
struct BuildPackageOptions;
|
|
}
|
|
|
|
namespace vcpkg
|
|
{
|
|
enum class RestoreResult
|
|
{
|
|
missing,
|
|
success,
|
|
build_failed,
|
|
};
|
|
|
|
struct IBinaryProvider
|
|
{
|
|
virtual ~IBinaryProvider() = default;
|
|
/// Gives the BinaryProvider an opportunity to batch any downloading or server communication for executing
|
|
/// `plan`.
|
|
virtual void prefetch(const VcpkgPaths& paths, const Dependencies::ActionPlan& plan) = 0;
|
|
/// Attempts to restore the package referenced by `action` into the packages directory.
|
|
virtual RestoreResult try_restore(const VcpkgPaths& paths, const Dependencies::InstallPlanAction& action) = 0;
|
|
/// Called upon a successful build of `action`
|
|
virtual void push_success(const VcpkgPaths& paths, const Dependencies::InstallPlanAction& action) = 0;
|
|
/// Requests the result of `try_restore()` without actually downloading the package. Used by CI to determine
|
|
/// missing packages.
|
|
virtual RestoreResult precheck(const VcpkgPaths& paths, const Dependencies::InstallPlanAction& action) = 0;
|
|
};
|
|
|
|
IBinaryProvider& null_binary_provider();
|
|
|
|
ExpectedS<std::unique_ptr<IBinaryProvider>> create_binary_provider_from_configs(View<std::string> args);
|
|
ExpectedS<std::unique_ptr<IBinaryProvider>> create_binary_provider_from_configs_pure(const std::string& env_string,
|
|
View<std::string> args);
|
|
|
|
std::string generate_nuget_packages_config(const Dependencies::ActionPlan& action);
|
|
|
|
void help_topic_binary_caching(const VcpkgPaths& paths);
|
|
}
|