Files
integration/Plugins/UEWingman/Source/UEWingman/Handlers/Asset_Backup.h

52 lines
1.4 KiB
C
Raw Normal View History

2026-03-08 22:17:14 -04:00
#pragma once
#include "CoreMinimal.h"
2026-03-18 10:17:58 -04:00
#include "WingServer.h"
2026-04-07 22:04:44 -04:00
#include "WingBasics.h"
2026-03-10 07:35:09 -04:00
#include "Misc/Paths.h"
2026-03-08 22:17:14 -04:00
#include "Misc/PackageName.h"
2026-03-09 09:20:46 -04:00
#include "HAL/FileManager.h"
2026-03-12 00:44:17 -04:00
#include "Asset_Backup.generated.h"
2026-03-08 22:17:14 -04:00
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
2026-03-12 00:44:17 -04:00
UCLASS()
2026-04-01 17:45:33 -04:00
class UWing_Asset_Backup : public UWingHandler
2026-03-08 22:17:14 -04:00
{
GENERATED_BODY()
public:
2026-04-03 19:07:39 -04:00
UPROPERTY(EditAnywhere, meta=(Description="Asset to back up"))
2026-03-15 17:20:31 -04:00
FString Asset;
2026-03-08 22:17:14 -04:00
2026-04-01 18:12:54 -04:00
virtual void Register() override
2026-03-08 22:17:14 -04:00
{
2026-04-01 18:12:54 -04:00
UWingServer::AddHandler(this,
TEXT("Copy an asset's .uasset file to a .uasset.bak backup."));
2026-03-08 22:17:14 -04:00
}
virtual void Handle() override
2026-03-08 22:17:14 -04:00
{
FString Filename = FPaths::ConvertRelativePathToFull(
2026-03-15 17:20:31 -04:00
FPackageName::LongPackageNameToFilename(Asset, FPackageName::GetAssetPackageExtension()));
2026-03-08 22:17:14 -04:00
if (!IFileManager::Get().FileExists(*Filename))
{
2026-04-04 01:45:25 -04:00
WingOut::Stdout.Printf(TEXT("ERROR: Asset file not found: %s\n"), *Filename);
2026-03-10 04:12:27 -04:00
return;
2026-03-08 22:17:14 -04:00
}
FString BackupFilename = Filename + TEXT(".bak");
uint32 CopyResult = IFileManager::Get().Copy(*BackupFilename, *Filename, true);
if (CopyResult != COPY_OK)
{
2026-04-04 01:45:25 -04:00
WingOut::Stdout.Printf(TEXT("ERROR: Failed to copy %s to %s\n"), *Filename, *BackupFilename);
2026-03-10 04:12:27 -04:00
return;
2026-03-08 22:17:14 -04:00
}
2026-04-04 01:45:25 -04:00
WingOut::Stdout.Printf(TEXT("Backed up to %s\n"), *BackupFilename);
2026-03-08 22:17:14 -04:00
}
};