diff options
| author | Dan Engelbrecht <[email protected]> | 2025-11-07 11:22:45 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-07 11:22:45 +0100 |
| commit | fa2b84a47a305bc3364eb71194b347d981e3c9fe (patch) | |
| tree | e0e3ae5a3c3b22e14dc68bcb08433e6b67ebaa54 /src/zen/cmds/builds_cmd.cpp | |
| parent | remotestore op refactorings (#637) (diff) | |
| download | archived-zen-fa2b84a47a305bc3364eb71194b347d981e3c9fe.tar.xz archived-zen-fa2b84a47a305bc3364eb71194b347d981e3c9fe.zip | |
move progress bar to separate file (#638)
* move progress bar to separate file
Diffstat (limited to 'src/zen/cmds/builds_cmd.cpp')
| -rw-r--r-- | src/zen/cmds/builds_cmd.cpp | 146 |
1 files changed, 38 insertions, 108 deletions
diff --git a/src/zen/cmds/builds_cmd.cpp b/src/zen/cmds/builds_cmd.cpp index 91eedb756..3a334ed15 100644 --- a/src/zen/cmds/builds_cmd.cpp +++ b/src/zen/cmds/builds_cmd.cpp @@ -40,6 +40,8 @@ #include <zenutil/workerpools.h> #include <zenutil/zenserverprocess.h> +#include "../progressbar.h" + #include <signal.h> #include <memory> #include <numeric> @@ -354,22 +356,6 @@ namespace { return *NetworkPool; } - uint32_t GetUpdateDelayMS(ProgressBar::Mode InMode) - { - switch (InMode) - { - case ProgressBar::Mode::Plain: - return 5000; - case ProgressBar::Mode::Pretty: - return 200; - case ProgressBar::Mode::Log: - return 2000; - default: - ZEN_ASSERT(false); - return 0; - } - } - #define ZEN_CONSOLE_VERBOSE(fmtstr, ...) \ if (IsVerbose) \ { \ @@ -386,62 +372,6 @@ namespace { ); - class ConsoleOpLogProgressBar : public OperationLogOutput::ProgressBar - { - public: - ConsoleOpLogProgressBar(zen::ProgressBar::Mode InMode, std::string_view InSubTask) : m_Inner(InMode, InSubTask) {} - - virtual void UpdateState(const State& NewState, bool DoLinebreak) - { - zen::ProgressBar::State State = {.Task = NewState.Task, - .Details = NewState.Details, - .TotalCount = NewState.TotalCount, - .RemainingCount = NewState.RemainingCount, - .Status = ConvertStatus(NewState.Status)}; - m_Inner.UpdateState(State, DoLinebreak); - } - virtual void Finish() { m_Inner.Finish(); } - - private: - zen::ProgressBar::State::EStatus ConvertStatus(State::EStatus Status) - { - switch (Status) - { - case State::EStatus::Running: - return zen::ProgressBar::State::EStatus::Running; - case State::EStatus::Aborted: - return zen::ProgressBar::State::EStatus::Aborted; - case State::EStatus::Paused: - return zen::ProgressBar::State::EStatus::Paused; - default: - return (zen::ProgressBar::State::EStatus)Status; - } - } - zen::ProgressBar m_Inner; - }; - - class ConsoleOpLogOutput : public OperationLogOutput - { - public: - ConsoleOpLogOutput(zen::ProgressBar::Mode InMode) : m_Mode(InMode) {} - virtual void EmitLogMessage(int LogLevel, std::string_view Format, fmt::format_args Args) - { - logging::EmitConsoleLogMessage(LogLevel, Format, Args); - } - - virtual void SetLogOperationName(std::string_view Name) { zen::ProgressBar::SetLogOperationName(m_Mode, Name); } - virtual void SetLogOperationProgress(uint32_t StepIndex, uint32_t StepCount) - { - zen::ProgressBar::SetLogOperationProgress(m_Mode, StepIndex, StepCount); - } - virtual uint32_t GetProgressUpdateDelayMS() { return GetUpdateDelayMS(m_Mode); } - - virtual ProgressBar* CreateProgressBar(std::string_view InSubTask) { return new ConsoleOpLogProgressBar(m_Mode, InSubTask); } - - private: - zen::ProgressBar::Mode m_Mode; - }; - bool IncludePath(std::span<const std::string> IncludeWildcards, std::span<const std::string> ExcludeWildcards, const std::filesystem::path& Path) @@ -577,9 +507,9 @@ namespace { ProgressBar::SetLogOperationName(ProgressMode, "Validate Part"); - ConsoleOpLogOutput Output(ProgressMode); + std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode)); - BuildsOperationValidateBuildPart ValidateOp(Output, + BuildsOperationValidateBuildPart ValidateOp(*Output, Storage, AbortFlag, PauseFlag, @@ -620,10 +550,10 @@ namespace { { Stopwatch UploadTimer; - ConsoleOpLogOutput Output(ProgressMode); + std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode)); BuildsOperationUploadFolder UploadOp( - Output, + *Output, Storage, AbortFlag, PauseFlag, @@ -1377,17 +1307,17 @@ namespace { // TODO: GetBlockDescriptions for all BlockRawHashes in one go - check for local block descriptions when we cache them { - ConsoleLogOutput OperationLogOutput; - bool AttemptFallback = false; - OutBlockDescriptions = GetBlockDescriptions(OperationLogOutput, - *Storage.BuildStorage, - Storage.BuildCacheStorage.get(), - BuildId, - BuildPartId, - BlockRawHashes, - AttemptFallback, - IsQuiet, - IsVerbose); + std::unique_ptr<OperationLogOutput> OperationLogOutput(CreateConsoleLogOutput(ProgressMode)); + bool AttemptFallback = false; + OutBlockDescriptions = GetBlockDescriptions(*OperationLogOutput, + *Storage.BuildStorage, + Storage.BuildCacheStorage.get(), + BuildId, + BuildPartId, + BlockRawHashes, + AttemptFallback, + IsQuiet, + IsVerbose); } CalculateLocalChunkOrders(AbsoluteChunkOrders, @@ -1969,7 +1899,7 @@ namespace { { if (!ChunkController && !IsQuiet) { - ZEN_CONSOLE_WARN("Unspecified chunking algorith, using default"); + ZEN_CONSOLE_INFO("Unspecified chunking algorithm, using default"); ChunkController = CreateStandardChunkingController(StandardChunkingControllerSettings{}); } @@ -2033,9 +1963,9 @@ namespace { ProgressBar::SetLogOperationProgress(ProgressMode, TaskSteps::Download, TaskSteps::StepCount); - ConsoleOpLogOutput Output(ProgressMode); - BuildsOperationUpdateFolder Updater( - Output, + std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode)); + BuildsOperationUpdateFolder Updater( + *Output, Storage, AbortFlag, PauseFlag, @@ -2050,21 +1980,21 @@ namespace { BlockDescriptions, LooseChunkHashes, BuildsOperationUpdateFolder::Options{.IsQuiet = IsQuiet, - .IsVerbose = IsVerbose, - .AllowFileClone = AllowFileClone, - .UseSparseFiles = UseSparseFiles, - .SystemRootDir = Options.SystemRootDir, - .ZenFolderPath = Options.ZenFolderPath, - .LargeAttachmentSize = LargeAttachmentSize, - .PreferredMultipartChunkSize = PreferredMultipartChunkSize, - .PartialBlockRequestMode = Options.PartialBlockRequestMode, - .WipeTargetFolder = Options.CleanTargetFolder, - .PrimeCacheOnly = Options.PrimeCacheOnly, - .EnableOtherDownloadsScavenging = Options.EnableOtherDownloadsScavenging, - .EnableTargetFolderScavenging = Options.EnableTargetFolderScavenging, - .ValidateCompletedSequences = Options.PostDownloadVerify, - .ExcludeFolders = DefaultExcludeFolders, - .ExcludeExtensions = DefaultExcludeExtensions}); + .IsVerbose = IsVerbose, + .AllowFileClone = AllowFileClone, + .UseSparseFiles = UseSparseFiles, + .SystemRootDir = Options.SystemRootDir, + .ZenFolderPath = Options.ZenFolderPath, + .LargeAttachmentSize = LargeAttachmentSize, + .PreferredMultipartChunkSize = PreferredMultipartChunkSize, + .PartialBlockRequestMode = Options.PartialBlockRequestMode, + .WipeTargetFolder = Options.CleanTargetFolder, + .PrimeCacheOnly = Options.PrimeCacheOnly, + .EnableOtherDownloadsScavenging = Options.EnableOtherDownloadsScavenging, + .EnableTargetFolderScavenging = Options.EnableTargetFolderScavenging, + .ValidateCompletedSequences = Options.PostDownloadVerify, + .ExcludeFolders = DefaultExcludeFolders, + .ExcludeExtensions = DefaultExcludeExtensions}); { ProgressBar::PushLogOperation(ProgressMode, "Download"); auto _ = MakeGuard([]() { ProgressBar::PopLogOperation(ProgressMode); }); @@ -3959,9 +3889,9 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) ProgressBar::SetLogOperationName(ProgressMode, "Prime Cache"); - ConsoleOpLogOutput Output(ProgressMode); + std::unique_ptr<OperationLogOutput> Output(CreateConsoleLogOutput(ProgressMode)); - BuildsOperationPrimeCache PrimeOp(Output, + BuildsOperationPrimeCache PrimeOp(*Output, Storage, AbortFlag, PauseFlag, |