yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
version_manager.h
Go to the documentation of this file.
1#ifndef YAZE_CORE_VERSION_MANAGER_H_
2#define YAZE_CORE_VERSION_MANAGER_H_
3
4#include <string>
5#include <vector>
6
7#include "absl/status/status.h"
8#include "absl/status/statusor.h"
9#include "core/project.h"
10
11namespace yaze {
12namespace core {
13
15 bool success;
16 std::string commit_hash;
17 std::string rom_backup_path;
18 std::string message;
19};
20
30 public:
31 explicit VersionManager(project::YazeProject* project);
32
33 // Core Actions
34 absl::Status InitializeGit();
35 absl::StatusOr<SnapshotResult> CreateSnapshot(const std::string& message);
36
37 // Queries
38 bool IsGitInitialized() const;
39 std::string GetCurrentHash() const;
40 std::vector<std::string> GetHistory(int limit = 10) const;
41
42 private:
43 // Git Helpers
44 absl::Status GitInit();
45 absl::Status GitAddAll();
46 absl::Status GitCommit(const std::string& message);
47 std::string GitRevParseHead() const;
48
49 // ROM Helpers
50 absl::Status BackupRomArtifact(const std::string& timestamp_str);
51
52 // System Helpers
53 absl::Status RunCommand(const std::string& cmd);
54 absl::StatusOr<std::string> RunCommandOutput(const std::string& cmd) const;
55
57};
58
59} // namespace core
60} // namespace yaze
61
62#endif // YAZE_CORE_VERSION_MANAGER_H_
Manages project versioning (Git) and ROM artifact snapshots.
absl::Status BackupRomArtifact(const std::string &timestamp_str)
absl::Status GitCommit(const std::string &message)
std::vector< std::string > GetHistory(int limit=10) const
project::YazeProject * project_
VersionManager(project::YazeProject *project)
absl::StatusOr< std::string > RunCommandOutput(const std::string &cmd) const
std::string GetCurrentHash() const
absl::StatusOr< SnapshotResult > CreateSnapshot(const std::string &message)
absl::Status RunCommand(const std::string &cmd)
std::string GitRevParseHead() const
Modern project structure with comprehensive settings consolidation.
Definition project.h:84