Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,790 changes: 995 additions & 795 deletions Cargo.lock

Large diffs are not rendered by default.

30 changes: 15 additions & 15 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "rocfl"
version = "1.7.1-alpha.0"
authors = ["Peter Winckles <pwinckles@pm.me>"]
edition = "2021"
edition = "2024"
description= "A CLI for OCFL repositories"
license = "MIT OR Apache-2.0"
readme = "README.md"
Expand Down Expand Up @@ -40,19 +40,19 @@ chrono = { version = "0.4", features = ["serde"] }

# Errors
# TODO consider switching to snafu
thiserror = "1"
thiserror = "2"

# Strings
natord = "1"
percent-encoding = "2"
regex = "1"
unicode-width = "0.1"
unicode-width = "0.2"
uriparse = "0.6"

# Enum features
enum_dispatch = "0.3"
strum = "0.24"
strum_macros = "0.24"
strum = "0.27"
strum_macros = "0.27"

# Path handling
pathdiff = "0.2"
Expand All @@ -66,7 +66,7 @@ atty = "0.2"

# Logging
log = "0.4"
env_logger = "0.10"
env_logger = "0.11"

# Digests
digest = "0.10"
Expand All @@ -83,8 +83,8 @@ grep-searcher = "0.1"
grep-regex = "0.1"

# Config
directories = "4"
toml = "0.5"
directories = "6"
toml = "0.9"
edit = "0.1"

# Serialization
Expand All @@ -94,21 +94,21 @@ serde_json = "1"
# AWS S3
bytes = { version = "1", optional = true }
futures = { version = "0.3", optional = true }
rusoto_core = { version = "0.48", default_features = false, features =["rustls"], optional = true }
rusoto_core = { version = "0.48", default-features = false, features =["rustls"], optional = true }
rusoto_credential = { version = "0.48", optional = true }
rusoto_s3 = { version = "0.48", default_features = false, features = ["rustls"], optional = true }
rusoto_s3 = { version = "0.48", default-features = false, features = ["rustls"], optional = true }
tokio = { version = "1", features = ["fs"], optional = true }

[dev-dependencies]
assert_cmd = "1"
assert_cmd = "2"
assert_fs = "1"
fs_extra = "1"
maplit = "1"
predicates = "2"
rand = "0.8"
predicates = "3"
rand = "0.9"
tempfile = "3"
tokio-test = "0.4"
trycmd = "0.14"
trycmd = "0.15"
# TODO time switching hash impl
#fxhash = "0.2"
# TODO experiment with https://crates.io/crates/criterion/0.2.11
# TODO experiment with https://crates.io/crates/criterion/0.2.11
5 changes: 3 additions & 2 deletions tests/cli-tests.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::path::{Path, PathBuf};

use assert_cmd::Command;
use assert_cmd::{cargo, Command};
use assert_fs::TempDir;
use common::*;
use predicates::prelude::*;
Expand Down Expand Up @@ -297,7 +297,8 @@ fn validate(path: impl AsRef<Path>) -> Command {
}

fn rocfl(path: impl AsRef<Path>, command: &str) -> Command {
let mut rocfl = Command::cargo_bin("rocfl").unwrap();
let rocfl_path = cargo::cargo_bin!();
let mut rocfl = Command::new(rocfl_path);
rocfl
.arg("-S")
.arg("-r")
Expand Down
4 changes: 2 additions & 2 deletions tests/fs-tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::rc::Rc;

use assert_fs::prelude::*;
use assert_fs::TempDir;
use chrono::{DateTime, Local, TimeZone};
use chrono::{DateTime, Local, SecondsFormat, TimeZone};
use common::*;
use fs_extra::dir::CopyOptions;
use maplit::hashmap;
Expand Down Expand Up @@ -3942,7 +3942,7 @@ fn commit_should_pretty_print_inventory() {
}"#;

assert_eq!(
format!("{}{}{}", expected_p1, timestamp.to_rfc3339(), expected_p2),
format!("{}{}{}", expected_p1, timestamp.to_rfc3339_opts(SecondsFormat::Secs, true), expected_p2),
fs::read_to_string(&inventory_path).unwrap()
);

Expand Down
6 changes: 3 additions & 3 deletions tests/s3-tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use assert_fs::prelude::*;
use assert_fs::TempDir;
use common::*;
use fs_extra::dir::CopyOptions;
use rand::Rng;
use rand::RngCore;
use rocfl::ocfl::{
CommitMeta, DigestAlgorithm, ErrorCode, FileDetails, LayoutExtensionName, OcflRepo,
ProblemLocation, RocflError, SpecVersion, StorageLayout, ValidationError, VersionNum,
Expand Down Expand Up @@ -921,8 +921,8 @@ fn init_repo(prefix: &str, staging: impl AsRef<Path>, layout: Option<StorageLayo
}

fn s3_prefix() -> String {
let mut rng = rand::thread_rng();
let random: u32 = rng.gen();
let mut rng = rand::rng();
let random: u32 = rng.next_u32();
format!("rocfl-{}", random)
}

Expand Down
4 changes: 2 additions & 2 deletions tests/trycmd-tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::env;

#[test]
fn fs_tests() {
env::set_var("TZ", "UTC");
unsafe { env::set_var("TZ", "UTC"); }
trycmd::TestCases::new().case("tests/trycmd/fs/*.toml");
env::remove_var("TZ");
unsafe { env::remove_var("TZ"); }
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"id":"o2","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:24:44.620008510+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T00:30:12+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
{"id":"o2","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:24:44.620008510Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T00:30:12Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
11ff92118ca70dd95d7fb5bdb8052388dd3c03ee9cddaf38b187576f512671224ab53a4a329ce095300cf97b5801e548e9cd0cc1872eaa215d065cc960b294a1 inventory.json
6d3161435e4a498ceddb8d70784c86dad623901f8642eec2fa3689e3925184ea2368cc37d1efc54fc4814445640a3e90b46379400087afb3e2ecd20f6fd3596f inventory.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"id":"o2","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:24:44.620008510+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T00:30:12+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
{"id":"o2","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:24:44.620008510Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T00:30:12Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
11ff92118ca70dd95d7fb5bdb8052388dd3c03ee9cddaf38b187576f512671224ab53a4a329ce095300cf97b5801e548e9cd0cc1872eaa215d065cc960b294a1 inventory.json
6d3161435e4a498ceddb8d70784c86dad623901f8642eec2fa3689e3925184ea2368cc37d1efc54fc4814445640a3e90b46379400087afb3e2ecd20f6fd3596f inventory.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"id":"o1","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:58:13.145095014+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T01:00:12+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
{"id":"o1","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:58:13.145095014Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T01:00:12Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f3236f58ef4f6392d25f31e65acdd0fb053280d49d69b308ba46364059e2172f8f26c67c9c4ff6c5e164916440bc1b914e6518e5f7a7e9c29bfdea92eb1adbde inventory.json
b64861476243d2c192a6eb3ccb2a3ad50ea292e49f1734ddb8da54e8875f493f470cad6cf9ecf08c671196b15c594774b43a1bf8fff6efce0a2ca761cff95ddf inventory.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"id":"o1","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:58:13.145095014+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T01:00:12+00:00","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
{"id":"o1","type":"https://ocfl.io/1.1/spec/#inventory","digestAlgorithm":"sha512","head":"v2","contentDirectory":"content","manifest":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["v1/content/file1.txt"]},"versions":{"v1":{"created":"2022-06-05T00:58:13.145095014Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"initial commit","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}},"v2":{"created":"2022-06-05T01:00:12Z","state":{"c781abe810e6ac01e946aef70bccee87aa4fddb54b0c8260a3572845fe15cac454f259459c60ac1822405efaef3d00a4a71191bc1a29420f94ed32cdddeb12fe":["file1.txt"]},"message":"upgrade","user":{"name":"Peter Winckles","address":"mailto:test@example.com"}}}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f3236f58ef4f6392d25f31e65acdd0fb053280d49d69b308ba46364059e2172f8f26c67c9c4ff6c5e164916440bc1b914e6518e5f7a7e9c29bfdea92eb1adbde inventory.json
b64861476243d2c192a6eb3ccb2a3ad50ea292e49f1734ddb8da54e8875f493f470cad6cf9ecf08c671196b15c594774b43a1bf8fff6efce0a2ca761cff95ddf inventory.json