mirror of
https://codeberg.org/Toasterson/ips.git
synced 2026-04-10 13:20:42 +00:00
Adding diff-struct
Signed-off-by: Till Wegmueller <toasterson@gmail.com>
This commit is contained in:
parent
5cea5186d7
commit
bef5442afd
8 changed files with 186 additions and 16 deletions
104
Cargo.lock
generated
104
Cargo.lock
generated
|
|
@ -184,6 +184,28 @@ dependencies = [
|
|||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "diff-struct"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "79aac083112b31f7cb768b24b893dc0c34c296a4b06b250c407bfd495e42075c"
|
||||
dependencies = [
|
||||
"diff_derive",
|
||||
"num",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "diff_derive"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fe165e7ead196bbbf44c7ce11a7a21157b5c002ce46d7098ff9c556784a4912d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.9.0"
|
||||
|
|
@ -603,6 +625,7 @@ name = "libips"
|
|||
version = "0.1.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"diff-struct",
|
||||
"maplit 0.1.6",
|
||||
"object",
|
||||
"pest",
|
||||
|
|
@ -694,6 +717,79 @@ dependencies = [
|
|||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
|
||||
dependencies = [
|
||||
"num-bigint",
|
||||
"num-complex",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-rational",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint"
|
||||
version = "0.4.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
|
||||
dependencies = [
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-complex"
|
||||
version = "0.4.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.46"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-iter"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-rational"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
|
||||
dependencies = [
|
||||
"num-bigint",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.15.0"
|
||||
|
|
@ -854,6 +950,14 @@ version = "0.3.26"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
|
||||
|
||||
[[package]]
|
||||
name = "pkg6"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"diff-struct",
|
||||
"libips",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkg6depotd"
|
||||
version = "0.0.1-placeholder"
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ members = [
|
|||
"userland",
|
||||
"specfile",
|
||||
"ports",
|
||||
"crates/*",
|
||||
]
|
||||
|
||||
resolver = "2"
|
||||
8
crates/pkg6/Cargo.toml
Normal file
8
crates/pkg6/Cargo.toml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "pkg6"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
libips = { version = "0.1.2", path = "../../libips" }
|
||||
diff-struct = "0.5.3"
|
||||
3
crates/pkg6/src/main.rs
Normal file
3
crates/pkg6/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
|
||||
}
|
||||
|
|
@ -28,3 +28,4 @@ pest_derive = "2.1.0"
|
|||
strum = { version = "0.24.1", features = ["derive"] }
|
||||
serde = { version = "1.0.207", features = ["derive"] }
|
||||
serde_json = "1.0.124"
|
||||
diff-struct = "0.5.3"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ use std::fs::read_to_string;
|
|||
use std::path::Path;
|
||||
use std::result::Result as StdResult;
|
||||
use std::str::FromStr;
|
||||
use diff::Diff;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use thiserror::Error;
|
||||
|
||||
|
|
@ -77,7 +78,10 @@ impl FacetedAction for Action {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Dir {
|
||||
pub path: String,
|
||||
pub group: String,
|
||||
|
|
@ -128,7 +132,10 @@ impl FacetedAction for Dir {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct File {
|
||||
pub payload: Option<Payload>,
|
||||
pub path: String,
|
||||
|
|
@ -255,7 +262,10 @@ pub enum FileError {
|
|||
}
|
||||
|
||||
//TODO implement multiple FMRI for require-any
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Dependency {
|
||||
pub fmri: String, //TODO make FMRI
|
||||
pub dependency_type: String, //TODO make enum
|
||||
|
|
@ -305,7 +315,10 @@ impl FacetedAction for Dependency {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Hash, Eq, PartialEq, Debug, Default, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Facet {
|
||||
pub name: String,
|
||||
pub value: String,
|
||||
|
|
@ -320,7 +333,10 @@ impl Facet {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Attr {
|
||||
pub key: String,
|
||||
pub values: Vec<String>,
|
||||
|
|
@ -357,7 +373,10 @@ impl From<Action> for Attr {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Debug, Default, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct License {
|
||||
pub payload: String,
|
||||
pub properties: HashMap<String, Property>,
|
||||
|
|
@ -385,7 +404,10 @@ impl From<Action> for License {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Debug, Default, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Link {
|
||||
pub path: String,
|
||||
pub target: String,
|
||||
|
|
@ -422,13 +444,19 @@ impl From<Action> for Link {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Hash, Eq, PartialEq, Debug, Default, Clone, Deserialize, Serialize)]
|
||||
#[derive(Hash, Eq, PartialEq, Debug, Default, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Property {
|
||||
pub key: String,
|
||||
pub value: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Manifest {
|
||||
pub attributes: Vec<Attr>,
|
||||
pub directories: Vec<Dir>,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ use sha3::Digest as Sha3Digest;
|
|||
use std::fmt::Display;
|
||||
use std::str::FromStr;
|
||||
use std::{convert::TryInto, result::Result as StdResult};
|
||||
use diff::Diff;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use strum::{Display as StrumDisplay, EnumString};
|
||||
use thiserror::Error;
|
||||
|
||||
|
|
@ -17,7 +19,10 @@ type Result<T> = StdResult<T, DigestError>;
|
|||
#[allow(dead_code)]
|
||||
static DEFAULT_ALGORITHM: DigestAlgorithm = DigestAlgorithm::SHA512;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, StrumDisplay, EnumString, Default)]
|
||||
#[derive(Debug, PartialEq, Clone, StrumDisplay, EnumString, Default, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub enum DigestAlgorithm {
|
||||
#[default]
|
||||
#[strum(serialize = "sha1")]
|
||||
|
|
@ -36,7 +41,10 @@ pub enum DigestAlgorithm {
|
|||
SHA3512, // Sha3 version of sha512t
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, StrumDisplay, EnumString, Default)]
|
||||
#[derive(Debug, PartialEq, Clone, StrumDisplay, EnumString, Default, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub enum DigestSource {
|
||||
#[strum(serialize = "gzip")]
|
||||
GzipCompressed,
|
||||
|
|
@ -52,7 +60,10 @@ pub enum DigestSource {
|
|||
PrimaryPayloadHash,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Digest {
|
||||
pub hash: String,
|
||||
pub algorithm: DigestAlgorithm,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ use object::Object;
|
|||
use std::io::Error as IOError;
|
||||
use std::path::Path;
|
||||
use std::result::Result as StdResult;
|
||||
use diff::Diff;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use thiserror::Error;
|
||||
|
||||
type Result<T> = StdResult<T, PayloadError>;
|
||||
|
|
@ -20,14 +22,20 @@ pub enum PayloadError {
|
|||
DigestError(#[from] DigestError),
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Default)]
|
||||
#[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub enum PayloadCompressionAlgorithm {
|
||||
Gzip,
|
||||
#[default]
|
||||
LZ4,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Default)]
|
||||
#[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub enum PayloadBits {
|
||||
#[default]
|
||||
Independent,
|
||||
|
|
@ -35,7 +43,10 @@ pub enum PayloadBits {
|
|||
Bits64,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone, Default)]
|
||||
#[derive(Debug, PartialEq, Clone, Default, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub enum PayloadArchitecture {
|
||||
#[default]
|
||||
NOARCH,
|
||||
|
|
@ -45,7 +56,10 @@ pub enum PayloadArchitecture {
|
|||
RISCV,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone)]
|
||||
#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize, Diff)]
|
||||
#[diff(attr(
|
||||
#[derive(Debug, PartialEq)]
|
||||
))]
|
||||
pub struct Payload {
|
||||
pub primary_identifier: Digest,
|
||||
pub additional_identifiers: Vec<Digest>,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue