vcpkg/toolsrc/include/vcpkg_Commands.h

254 lines
8.0 KiB
C
Raw Normal View History

2016-09-19 11:50:08 +08:00
#pragma once
#include "StatusParagraphs.h"
#include "VcpkgCmdArguments.h"
2017-04-04 07:29:11 +08:00
#include "VcpkgPaths.h"
2017-04-04 07:13:46 +08:00
#include "VersionT.h"
2017-05-23 11:18:40 +08:00
#include "vcpkg_Build.h"
#include "vcpkg_Dependencies.h"
#include <array>
2016-09-19 11:50:08 +08:00
namespace vcpkg::Commands
2016-09-19 11:50:08 +08:00
{
using CommandTypeA = void (*)(const VcpkgCmdArguments& args,
const VcpkgPaths& paths,
const Triplet& default_triplet);
using CommandTypeB = void (*)(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
using CommandTypeC = void (*)(const VcpkgCmdArguments& args);
namespace BuildCommand
{
void perform_and_exit(const FullPackageSpec& full_spec,
const fs::path& port_dir,
const std::unordered_set<std::string>& options,
const VcpkgPaths& paths);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
namespace BuildExternal
{
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
namespace Install
{
enum class KeepGoing
{
NO = 0,
YES
};
inline KeepGoing to_keep_going(const bool value) { return value ? KeepGoing::YES : KeepGoing::NO; }
enum class PrintSummary
{
NO = 0,
YES
};
inline PrintSummary to_print_summary(const bool value) { return value ? PrintSummary::YES : PrintSummary::NO; }
2017-04-20 08:44:26 +08:00
struct InstallDir
{
static InstallDir from_destination_root(const fs::path& destination_root,
2017-04-20 08:44:26 +08:00
const std::string& destination_subdirectory,
const fs::path& listfile);
private:
fs::path m_destination;
std::string m_destination_subdirectory;
fs::path m_listfile;
public:
const fs::path& destination() const;
const std::string& destination_subdirectory() const;
const fs::path& listfile() const;
};
2017-05-23 11:18:40 +08:00
Build::BuildResult perform_install_plan_action(const VcpkgPaths& paths,
const Dependencies::InstallPlanAction& action,
const Build::BuildPackageOptions& install_plan_options,
StatusParagraphs& status_db);
enum class InstallResult
{
FILE_CONFLICTS,
SUCCESS,
};
void install_files_and_write_listfile(Files::Filesystem& fs,
const fs::path& source_dir,
const InstallDir& dirs);
InstallResult install_package(const VcpkgPaths& paths,
const BinaryControlFile& binary_paragraph,
StatusParagraphs* status_db);
void perform_and_exit(const std::vector<Dependencies::AnyAction>& action_plan,
const Build::BuildPackageOptions& install_plan_options,
const KeepGoing keep_going,
const PrintSummary print_summary,
const VcpkgPaths& paths,
StatusParagraphs& status_db);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
2017-04-11 03:57:49 +08:00
namespace Export
{
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
namespace CI
{
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
namespace Remove
{
enum class Purge
{
NO = 0,
YES
};
inline Purge to_purge(const bool value) { return value ? Purge::YES : Purge::NO; }
void perform_remove_plan_action(const VcpkgPaths& paths,
const Dependencies::RemovePlanAction& action,
const Purge purge,
StatusParagraphs& status_db);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
2017-07-20 05:29:28 +08:00
void remove_package(const VcpkgPaths& paths, const PackageSpec& spec, StatusParagraphs* status_db);
}
namespace Update
{
2017-04-04 07:03:31 +08:00
struct OutdatedPackage
2017-03-30 09:14:48 +08:00
{
2017-04-04 07:03:31 +08:00
static bool compare_by_name(const OutdatedPackage& left, const OutdatedPackage& right);
2017-03-30 09:14:48 +08:00
2017-04-04 05:45:00 +08:00
PackageSpec spec;
2017-04-04 07:18:21 +08:00
VersionDiff version_diff;
2017-03-30 09:14:48 +08:00
};
2017-04-04 07:29:11 +08:00
std::vector<OutdatedPackage> find_outdated_packages(const VcpkgPaths& paths, const StatusParagraphs& status_db);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace Env
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
}
namespace Create
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace Edit
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
2017-04-06 05:20:49 +08:00
namespace DependInfo
{
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace Search
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace List
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
2017-02-18 07:38:39 +08:00
namespace Owns
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
2017-02-18 07:38:39 +08:00
namespace Cache
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
2017-02-18 07:38:39 +08:00
namespace Import
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace Integrate
{
extern const char* const INTEGRATE_COMMAND_HELPSTRING;
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace PortsDiff
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
2016-09-19 11:50:08 +08:00
namespace Help
{
2017-04-04 07:29:11 +08:00
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
2016-09-19 11:50:08 +08:00
2017-04-04 07:29:11 +08:00
void help_topic_valid_triplet(const VcpkgPaths& paths);
2016-09-19 11:50:08 +08:00
void print_usage();
2016-09-19 11:50:08 +08:00
void print_example(const std::string& command_and_arguments);
2016-09-19 11:50:08 +08:00
std::string create_example_string(const std::string& command_and_arguments);
}
2016-09-19 11:50:08 +08:00
namespace Version
{
const std::string& version();
void warn_if_vcpkg_version_mismatch(const VcpkgPaths& paths);
void perform_and_exit(const VcpkgCmdArguments& args);
}
2016-11-07 12:12:54 +08:00
namespace Contact
{
const std::string& email();
void perform_and_exit(const VcpkgCmdArguments& args);
}
2016-09-19 11:50:08 +08:00
namespace Hash
{
void perform_and_exit(const VcpkgCmdArguments& args);
}
2016-09-19 11:50:08 +08:00
template<class T>
struct PackageNameAndFunction
2016-09-19 11:50:08 +08:00
{
std::string name;
T function;
};
const std::vector<PackageNameAndFunction<CommandTypeA>>& get_available_commands_type_a();
const std::vector<PackageNameAndFunction<CommandTypeB>>& get_available_commands_type_b();
const std::vector<PackageNameAndFunction<CommandTypeC>>& get_available_commands_type_c();
2016-09-19 11:50:08 +08:00
template<typename T>
T find(const std::string& command_name, const std::vector<PackageNameAndFunction<T>> available_commands)
2016-09-19 11:50:08 +08:00
{
for (const PackageNameAndFunction<T>& cmd : available_commands)
2016-09-19 11:50:08 +08:00
{
if (cmd.name == command_name)
{
return cmd.function;
}
}
// not found
return nullptr;
}
}