Files
UnrealEngineUWP/Engine/Source/Editor/VirtualizationEditor/Private/RehydrateProjectCommandlet.cpp
paul chipchase 81c3b7f300 Add a new commandlet for rehydrating an entire project.
#rb Per.Larsson
#jira UE-172167
#rnx
#preflight 63c649b50225f00e1466bf92

- Cmdline to use '-run=VirtualizationEditor.RehydrateProject'.
- The commandlet will first scan the project to find all packages (.uasset/.umap) and then attempt to rehydrate them.
- If revision control is enabled then virtualized packages will be checked out using the current settings for the project (so things like -P4Changelist= will work)

[CL 23735823 by paul chipchase in ue5-main branch]
2023-01-17 04:20:27 -05:00

40 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "RehydrateProjectCommandlet.h"
#include "CommandletUtils.h"
#include "Virtualization/VirtualizationSystem.h"
URehydrateProjectCommandlet::URehydrateProjectCommandlet(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
int32 URehydrateProjectCommandlet::Main(const FString& Params)
{
TRACE_CPUPROFILER_EVENT_SCOPE(URehydrateProjectCommandlet);
UE_LOG(LogVirtualization, Display, TEXT("Scanning for project packages..."));
TArray<FString> Packages = UE::Virtualization::FindAllPackages();
UE_LOG(LogVirtualization, Display, TEXT("Rehydrating packages..."));
UE::Virtualization::IVirtualizationSystem& System = UE::Virtualization::IVirtualizationSystem::Get();
UE::Virtualization::FRehydrationResult Result = System.TryRehydratePackages(Packages, UE::Virtualization::ERehydrationOptions::Checkout);
if (Result.WasSuccessful())
{
UE_LOG(LogVirtualization, Display, TEXT("Rehydrated %d package(s)"), Result.RehydratedPackages.Num());
if (!Result.CheckedOutPackages.IsEmpty())
{
UE_LOG(LogVirtualization, Display, TEXT("Checked out %d package(s) from revision control"), Result.CheckedOutPackages.Num());
}
return 0;
}
else
{
return -1;
}
}