diff --git a/Cargo.lock b/Cargo.lock index f6401b6..be2c426 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,6 +69,9 @@ name = "bitflags" version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +dependencies = [ + "serde_core", +] [[package]] name = "block-buffer" @@ -216,6 +219,9 @@ name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] [[package]] name = "digest" @@ -376,6 +382,7 @@ dependencies = [ "gix-submodule", "gix-tempfile", "gix-trace", + "gix-transport", "gix-traverse", "gix-url", "gix-utils", @@ -387,6 +394,7 @@ dependencies = [ "nonempty", "parking_lot", "regex", + "serde", "signal-hook", "smallvec", "thiserror", @@ -401,6 +409,7 @@ dependencies = [ "bstr", "gix-date", "gix-error", + "serde", ] [[package]] @@ -428,6 +437,7 @@ dependencies = [ "gix-path", "gix-quote", "gix-trace", + "serde", "smallvec", "thiserror", "unicode-bom", @@ -496,6 +506,7 @@ dependencies = [ "gix-hash", "memmap2", "nonempty", + "serde", ] [[package]] @@ -546,6 +557,7 @@ dependencies = [ "gix-sec", "gix-trace", "gix-url", + "serde", "thiserror", ] @@ -559,6 +571,7 @@ dependencies = [ "gix-error", "itoa", "jiff", + "serde", ] [[package]] @@ -693,6 +706,7 @@ dependencies = [ "bstr", "gix-features", "gix-path", + "serde", ] [[package]] @@ -703,6 +717,7 @@ checksum = "13adaa73415fd6c902310923f68d0b98e8cecf14b33ea58c02cc387cee56f54e" dependencies = [ "faster-hex", "gix-features", + "serde", "sha1-checked", "thiserror", ] @@ -728,6 +743,7 @@ dependencies = [ "gix-glob", "gix-path", "gix-trace", + "serde", "unicode-bom", ] @@ -765,6 +781,7 @@ dependencies = [ "libc", "memmap2", "rustix", + "serde", "smallvec", "thiserror", ] @@ -790,6 +807,7 @@ dependencies = [ "gix-actor", "gix-date", "gix-error", + "serde", ] [[package]] @@ -821,6 +839,7 @@ dependencies = [ "gix-utils", "gix-validate", "itoa", + "serde", "smallvec", "thiserror", ] @@ -843,6 +862,7 @@ dependencies = [ "gix-zlib", "memmap2", "parking_lot", + "serde", "tempfile", "thiserror", ] @@ -863,6 +883,7 @@ dependencies = [ "gix-path", "gix-zlib", "memmap2", + "serde", "smallvec", "thiserror", "uluru", @@ -936,6 +957,7 @@ dependencies = [ "gix-transport", "gix-utils", "nonempty", + "serde", "thiserror", ] @@ -967,6 +989,7 @@ dependencies = [ "gix-utils", "gix-validate", "memmap2", + "serde", "thiserror", ] @@ -1003,6 +1026,7 @@ dependencies = [ "gix-revwalk", "gix-trace", "nonempty", + "serde", ] [[package]] @@ -1030,6 +1054,7 @@ dependencies = [ "bitflags 2.13.1", "gix-path", "libc", + "serde", "windows-sys", ] @@ -1043,6 +1068,7 @@ dependencies = [ "gix-hash", "gix-lock", "nonempty", + "serde", "thiserror", ] @@ -1121,6 +1147,7 @@ dependencies = [ "gix-quote", "gix-sec", "gix-url", + "serde", "thiserror", ] @@ -1151,6 +1178,7 @@ dependencies = [ "gix-path", "gix-utils", "percent-encoding", + "serde", "thiserror", ] @@ -1192,6 +1220,7 @@ dependencies = [ "gix-object", "gix-path", "gix-validate", + "serde", ] [[package]] @@ -1236,6 +1265,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e8813f5579b3075ff9c90f7c59cd2b62b4ebb639361f0911648b22d7446cc7c" dependencies = [ + "serde", "thiserror", "zlib-rs", ] @@ -1420,6 +1450,9 @@ name = "nonempty" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9737e026353e5cd0736f98eddae28665118eb6f6600902a7f50db585621fecb6" +dependencies = [ + "serde", +] [[package]] name = "num-conv" @@ -1691,6 +1724,9 @@ name = "smallvec" version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" +dependencies = [ + "serde", +] [[package]] name = "stable_deref_trait" @@ -1764,6 +1800,7 @@ dependencies = [ "powerfmt", "serde_core", "time-core", + "time-macros", ] [[package]] @@ -1772,6 +1809,16 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinyvec" version = "1.12.0" diff --git a/Cargo.toml b/Cargo.toml index 4a7a1ce..e6b8415 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,6 @@ edition = "2024" tokio = { version = "1.53.1", features = ["process", "io-util", "sync", "macros", "rt-multi-thread", "time", "fs"] } serde = { version = "1.0.229", features = ["derive"] } serde_json = { version = "1.0.151", features = [] } -gix = { version = "0.86.0", features = [] } -time = { version = "0.3.55", features = [] } +gix = { version = "0.86.0", features = ["serde"] } +time = { version = "0.3.55", features = ["serde"] } async-trait = "0.1.92" \ No newline at end of file diff --git a/src/archive/types.rs b/src/archive/types.rs index bc306af..9184a4a 100644 --- a/src/archive/types.rs +++ b/src/archive/types.rs @@ -1,9 +1,10 @@ use std::fmt; +use serde::{Deserialize, Serialize}; + use crate::command::env::Env; use crate::error::BabyError; - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum ArchiveFormat { Tar, TarGz, @@ -33,7 +34,7 @@ impl fmt::Display for ArchiveFormat { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct CreateArchiveRequest { pub commit: String, pub format: ArchiveFormat, @@ -41,7 +42,7 @@ pub struct CreateArchiveRequest { pub paths: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct GetArchiveRequest { pub commit: String, pub format: ArchiveFormat, @@ -50,7 +51,7 @@ pub struct GetArchiveRequest { pub exclude: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct BundleRequest { pub refs: Vec, } diff --git a/src/blame/types.rs b/src/blame/types.rs index 8dd08e8..41e6806 100644 --- a/src/blame/types.rs +++ b/src/blame/types.rs @@ -1,7 +1,8 @@ use std::fmt; use std::path::PathBuf; -#[derive(Debug, Clone, PartialEq, Eq)] +use serde::{Deserialize, Serialize}; +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct BlameHunk { pub sha: gix::ObjectId, pub previous_sha: Option, @@ -12,7 +13,7 @@ pub struct BlameHunk { pub orig_start_line: u32, } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub struct Range { pub start: u32, pub end: u32, @@ -24,7 +25,7 @@ impl fmt::Display for Range { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct BlameOptions { pub revision: String, pub path: PathBuf, diff --git a/src/blob/types.rs b/src/blob/types.rs index dfaf756..7b1c28c 100644 --- a/src/blob/types.rs +++ b/src/blob/types.rs @@ -1,19 +1,20 @@ use gix::ObjectId; +use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct BlobInfo { pub oid: ObjectId, pub size: i64, pub data: Option>, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct BlobContent { pub info: BlobInfo, pub data: Vec, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct LFSPointer { pub oid: ObjectId, pub size: i64, @@ -22,12 +23,12 @@ pub struct LFSPointer { pub content: Vec, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct GetBlobOptions { pub limit: Option, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListBlobsOptions { pub revisions: Vec, pub limit: Option, @@ -35,29 +36,29 @@ pub struct ListBlobsOptions { pub with_paths: bool, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListAllBlobsOptions { pub limit: Option, pub bytes_limit: Option, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListLFSPointersOptions { pub revisions: Vec, pub limit: Option, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListAllLFSPointersOptions { pub limit: Option, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct GetLFSPointersOptions { pub blob_ids: Vec, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct WriteBlobOptions { pub path: Option, } diff --git a/src/branch/types.rs b/src/branch/types.rs index c83806c..055112b 100644 --- a/src/branch/types.rs +++ b/src/branch/types.rs @@ -1,17 +1,17 @@ use gix::ObjectId; - -#[derive(Debug, Clone, PartialEq, Eq)] +use serde::{Deserialize, Serialize}; +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct BranchInfo { pub name: String, pub sha: ObjectId, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListBranchesOptions { pub patterns: Vec, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub enum HeadTarget { Branch(String), Detached(ObjectId), diff --git a/src/cache/mod.rs b/src/cache/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/cleanup/types.rs b/src/cleanup/types.rs index aecf47a..13add3b 100644 --- a/src/cleanup/types.rs +++ b/src/cleanup/types.rs @@ -1,9 +1,11 @@ -#[derive(Debug, Clone, Default)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct PruneResult { pub packed_refs: u64, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct CleanupStats { pub removed_internal_refs: u64, } diff --git a/src/commit/types.rs b/src/commit/types.rs index fb8b930..c4a2aef 100644 --- a/src/commit/types.rs +++ b/src/commit/types.rs @@ -1,7 +1,9 @@ use std::fmt; use std::path::PathBuf; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum TreeEntryMode { Blob, Exec, @@ -43,14 +45,14 @@ impl fmt::Display for TreeEntryMode { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct Signature { pub name: String, pub email: String, pub time: time::OffsetDateTime, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct CommitInfo { pub id: gix::ObjectId, pub tree_id: gix::ObjectId, @@ -61,13 +63,13 @@ pub struct CommitInfo { pub gpg_signature: Option, } -#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)] pub struct CommitStats { pub additions: u64, pub deletions: u64, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct TreeEntry { pub oid: gix::ObjectId, pub name: String, @@ -75,7 +77,7 @@ pub struct TreeEntry { pub size: Option, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ListCommitsOptions { pub revision: String, pub path: Option, diff --git a/src/compare/types.rs b/src/compare/types.rs index 2b252bb..f1df8dd 100644 --- a/src/compare/types.rs +++ b/src/compare/types.rs @@ -1,6 +1,8 @@ use std::fmt; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub struct DivergeObject { pub ahead: u32, pub behind: u32, diff --git a/src/config/types.rs b/src/config/types.rs index 2384ae8..e6a88ca 100644 --- a/src/config/types.rs +++ b/src/config/types.rs @@ -1,6 +1,8 @@ use std::fmt; -#[derive(Debug, Clone, PartialEq, Eq)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ConfigEntry { pub key: String, pub value: String, @@ -12,7 +14,7 @@ impl fmt::Display for ConfigEntry { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ConfigScope(pub String); impl ConfigScope { diff --git a/src/conflict/types.rs b/src/conflict/types.rs index 347507f..956f2f6 100644 --- a/src/conflict/types.rs +++ b/src/conflict/types.rs @@ -1,17 +1,18 @@ use std::path::PathBuf; use gix::ObjectId; +use serde::{Deserialize, Serialize}; use crate::commit::types::Signature; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum MergeStage { Ancestor, Ours, Theirs, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ConflictFileHeader { pub our_commit_oid: ObjectId, pub their_path: Option, @@ -20,26 +21,26 @@ pub struct ConflictFileHeader { pub our_mode: u32, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ConflictFile { pub header: ConflictFileHeader, pub content: Option, } -#[derive(Debug, Default, Clone)] +#[derive(Debug, Default, Clone, Serialize, Deserialize)] pub struct ListConflictOptions { pub allow_tree_conflicts: bool, pub skip_content: bool, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct MergeTreeResult { pub tree_oid: ObjectId, pub has_conflicts: bool, pub conflict_files: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct ResolveConflictsInput { pub our_commit_oid: ObjectId, pub their_commit_oid: ObjectId, @@ -49,7 +50,7 @@ pub struct ResolveConflictsInput { pub author: Signature, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ConflictResolution { pub old_path: Option, pub new_path: PathBuf, diff --git a/src/diff/types.rs b/src/diff/types.rs index 3d3f909..5d4dfab 100644 --- a/src/diff/types.rs +++ b/src/diff/types.rs @@ -1,14 +1,15 @@ use std::path::PathBuf; use gix::ObjectId; +use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct DiffRequest { pub left: ObjectId, pub right: ObjectId, } -#[derive(Debug, Default, Clone)] +#[derive(Debug, Default, Clone, Serialize, Deserialize)] pub struct DiffOptions { pub paths: Option>, pub ignore_whitespace: Option, @@ -16,14 +17,14 @@ pub struct DiffOptions { pub word_diff: bool, } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum WhitespaceMode { None, IgnoreSpaceChange, IgnoreAllSpace, } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum DiffStatus { Added, Deleted, @@ -47,7 +48,7 @@ impl DiffStatus { } } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ChangedPath { pub old_path: Option, pub new_path: PathBuf, @@ -58,7 +59,7 @@ pub struct ChangedPath { pub status: DiffStatus, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct ChangedPathDiff { pub path: ChangedPath, pub lines_added: u64, @@ -67,7 +68,7 @@ pub struct ChangedPathDiff { pub patch: Option>, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct NumStat { pub additions: u64, pub deletions: u64, @@ -75,20 +76,20 @@ pub struct NumStat { pub old_path: Option, } -#[derive(Debug, Clone, PartialEq, Eq, Default)] +#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] pub struct ShortStat { pub files_changed: u64, pub additions: u64, pub deletions: u64, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub enum ChangedPathRequest { Commit(ObjectId), TreePair(ObjectId, ObjectId), } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub enum RangeDiffSpec { Range(String, String), RevisionRange(String, String), diff --git a/src/merge/types.rs b/src/merge/types.rs index bc63b32..63ee613 100644 --- a/src/merge/types.rs +++ b/src/merge/types.rs @@ -1,6 +1,7 @@ use gix::ObjectId; +use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct MergeBaseResult { pub oid: ObjectId, } diff --git a/src/refs/types.rs b/src/refs/types.rs index 479a2d4..2c8d302 100644 --- a/src/refs/types.rs +++ b/src/refs/types.rs @@ -1,6 +1,7 @@ use gix::ObjectId; +use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum RefType { Branch, Tag, @@ -8,7 +9,7 @@ pub enum RefType { Other, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct RefInfo { pub name: String, pub ref_type: RefType, @@ -16,7 +17,7 @@ pub struct RefInfo { pub peeled: Option, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListRefsOptions { pub patterns: Vec, pub exclude_patterns: Vec, @@ -25,7 +26,7 @@ pub struct ListRefsOptions { pub start_after: Option, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct RefUpdate { pub name: String, pub new_sha: ObjectId, diff --git a/src/remote/types.rs b/src/remote/types.rs index 1a92cb5..c96068a 100644 --- a/src/remote/types.rs +++ b/src/remote/types.rs @@ -1,4 +1,6 @@ -#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)] pub enum RemoteOption { #[default] Default, @@ -16,7 +18,7 @@ impl RemoteOption { } } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct UpdateRemoteMirrorRequest { pub url: String, pub refs: Vec, @@ -24,12 +26,12 @@ pub struct UpdateRemoteMirrorRequest { pub keep_divergent_refs: bool, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct UpdateRemoteMirrorResult { pub divergent_refs: Vec, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct FetchRemoteCommitResult { pub fetched: bool, } diff --git a/src/setup/types.rs b/src/setup/types.rs index ae13bf0..decdfd1 100644 --- a/src/setup/types.rs +++ b/src/setup/types.rs @@ -1,4 +1,6 @@ -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum ObjectFormat { Sha1, Sha256, @@ -13,14 +15,14 @@ impl ObjectFormat { } } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct FastImportFile { pub mode: Option, pub path: String, pub content: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct FastImportCommit { pub ref_name: String, pub message: Option, diff --git a/src/submodule/types.rs b/src/submodule/types.rs index 554056e..50cefaf 100644 --- a/src/submodule/types.rs +++ b/src/submodule/types.rs @@ -1,4 +1,6 @@ -#[derive(Debug, Clone, PartialEq, Eq, Default)] +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] pub struct SubModule { pub name: String, pub path: String, diff --git a/src/tags/types.rs b/src/tags/types.rs index 61030d2..d58de10 100644 --- a/src/tags/types.rs +++ b/src/tags/types.rs @@ -1,25 +1,26 @@ use gix::ObjectId; +use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum SigningFormat { Ssh, OpenGpg, X509, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct SigningKey { pub format: SigningFormat, pub key_id: String, } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum TagType { Lightweight, Annotated, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct TagInfo { pub name: String, pub sha: ObjectId, @@ -29,19 +30,19 @@ pub struct TagInfo { pub message: Option, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct CreateTagOptions { pub name: String, pub target: String, pub message: Option, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ListTagsOptions { pub patterns: Vec, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct TagVerifyResult { pub valid: bool, pub signer: Option, diff --git a/src/tree/types.rs b/src/tree/types.rs index 9065937..62bb13d 100644 --- a/src/tree/types.rs +++ b/src/tree/types.rs @@ -1,9 +1,10 @@ use gix::ObjectId; use std::path::PathBuf; +use serde::{Deserialize, Serialize}; use crate::commit::types::TreeEntryMode; -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum TreeDiffStatus { Added, Deleted, @@ -13,7 +14,7 @@ pub enum TreeDiffStatus { Copied, } -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct TreeDiff { pub old_path: Option, pub new_path: Option, @@ -24,13 +25,13 @@ pub struct TreeDiff { pub status: TreeDiffStatus, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct WalkTreeOptions { pub recurse: bool, pub show_trees: bool, } -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct DiffTreesOptions { pub recurse: bool, pub detect_renames: bool,