Duckstation/src/updater/updater.h

46 lines
1 KiB
C
Raw Normal View History

2023-09-23 05:43:12 +00:00
// SPDX-FileCopyrightText: 2019-2023 Connor McLaughlin <stenzek@gmail.com>
// SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0)
#pragma once
#include "common/progress_callback.h"
#include "unzip.h"
#include <string>
#include <vector>
class Updater
{
public:
Updater(ProgressCallback* progress);
~Updater();
2023-09-23 05:43:12 +00:00
bool Initialize(std::string staging_directory, std::string destination_directory);
bool OpenUpdateZip(const char* path);
bool PrepareStagingDirectory();
bool StageUpdate();
bool CommitUpdate();
void CleanupStagingDirectory();
2023-09-23 05:43:12 +00:00
bool ClearDestinationDirectory();
private:
2023-09-23 05:43:12 +00:00
bool RecursiveDeleteDirectory(const char* path, bool remove_dir);
struct FileToUpdate
{
std::string original_zip_filename;
std::string destination_filename;
2023-09-23 05:43:12 +00:00
u32 file_mode;
};
bool ParseZip();
std::string m_staging_directory;
2023-09-23 05:43:12 +00:00
std::string m_destination_directory;
std::vector<FileToUpdate> m_update_paths;
std::vector<std::string> m_update_directories;
ProgressCallback* m_progress;
unzFile m_zf = nullptr;
};