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,127 changes: 513 additions & 614 deletions Cargo.lock

Large diffs are not rendered by default.

11 changes: 6 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@ version = "3.0.0-beta.3"
edition = "2024"
license = "MIT"
repository = "https://github.com/skilld-dev/skilld"
rust-version = "1.85"
rust-version = "1.88"

[workspace.dependencies]
base64 = "0.22.1"
base64 = "0.23.1"
clap = { version = "4.6.6", features = [ "derive" ] }
ed25519-dalek = "3.0.0"
fs4 = "1.1.0"
getrandom = "0.3.4"
keyring = "3.6.3"
getrandom = "0.4.3"
keyring = { version = "4.2.0", default-features = false, features = [ "v1" ] }
serde = { version = "1.0", features = [ "derive" ] }
serde_json = "1.0"
sha2 = "0.11.0"
Expand All @@ -31,7 +32,7 @@ skilld-ui = { path = "crates/skilld-ui" }
subtle = "2.6.1"
tempfile = "3.27.0"
terminal_size = "0.4.4"
unicode-width = "=0.2.0"
unicode-width = "=0.2.2"
url = "2.5.8"
zeroize = "1.9.0"

Expand Down
10 changes: 3 additions & 7 deletions crates/skilld-auth/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,13 @@ url.workspace = true
zeroize.workspace = true

[target.'cfg(target_os = "linux")'.dependencies]
keyring = { workspace = true, features = [
"crypto-rust",
"linux-native-sync-persistent",
"vendored",
] }
keyring.workspace = true

[target.'cfg(target_os = "macos")'.dependencies]
keyring = { workspace = true, features = [ "apple-native" ] }
keyring.workspace = true

[target.'cfg(target_os = "windows")'.dependencies]
keyring = { workspace = true, features = [ "windows-native" ] }
keyring.workspace = true

[lints.rust]
unsafe_code = "forbid"
6 changes: 3 additions & 3 deletions crates/skilld-command/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repository.workspace = true
rust-version.workspace = true

[dependencies]
base64 = "0.22.1"
base64.workspace = true

clap.workspace = true

Expand All @@ -30,13 +30,13 @@ tempfile.workspace = true

unicode-width.workspace = true

url = "2.5.7"
url.workspace = true

[target.'cfg(not(target_os = "wasi"))'.dependencies]
fs4.workspace = true

[dev-dependencies]
ed25519-dalek = "2.2.0"
ed25519-dalek.workspace = true

[lib]
path = "src/lib.rs"
34 changes: 16 additions & 18 deletions crates/skilld-command/src/local_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -377,12 +377,11 @@ impl LocalStore {
return self.rollback_error(error, known_targets);
}
for change in &changes {
if let Some(install) = &change.install {
if let Err(error) =
if let Some(install) = &change.install
&& let Err(error) =
stage_target(install, &canonical, &canonical_stage, &transaction, &digest)
{
return self.rollback_error(error, known_targets);
}
{
return self.rollback_error(error, known_targets);
}
}
if hash_skill_tree(&canonical_stage)? != digest {
Expand All @@ -392,21 +391,21 @@ impl LocalStore {
);
}

if canonical_had_existing {
if let Err(error) = fs::rename(&canonical, &canonical_backup).map_err(fs_error) {
return self.rollback_error(error, known_targets);
}
if canonical_had_existing
&& let Err(error) = fs::rename(&canonical, &canonical_backup).map_err(fs_error)
{
return self.rollback_error(error, known_targets);
}
if let Err(error) = fs::rename(&canonical_stage, &canonical).map_err(fs_error) {
return self.rollback_error(error, known_targets);
}
for change in &changes {
let destination = change.target.destination(&name);
let backup = backup_path(&destination, &transaction)?;
if change.had_existing {
if let Err(error) = fs::rename(&destination, &backup).map_err(fs_error) {
return self.rollback_error(error, known_targets);
}
if change.had_existing
&& let Err(error) = fs::rename(&destination, &backup).map_err(fs_error)
{
return self.rollback_error(error, known_targets);
}
if change.install.is_some() {
let stage = stage_path(&destination, &transaction)?;
Expand Down Expand Up @@ -703,13 +702,12 @@ impl LocalStore {
}
for target in &targets {
let destination = target.destination(name);
if path_exists(&destination)? {
if let Err(error) =
if path_exists(&destination)?
&& let Err(error) =
fs::rename(&destination, backup_path(&destination, &transaction)?)
.map_err(fs_error)
{
return self.rollback_error(error, known_targets);
}
{
return self.rollback_error(error, known_targets);
}
}

Expand Down
7 changes: 4 additions & 3 deletions crates/skilld-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,17 @@ rust-version.workspace = true
path = "src/lib.rs"

[dependencies]
base64 = "0.22.1"
ed25519-dalek = "2.2.0"
base64.workspace = true

ed25519-dalek.workspace = true

serde.workspace = true

serde_json.workspace = true

sha2.workspace = true

time = { version = "=0.3.44", features = [ "parsing" ] }
time = { version = "=0.3.55", features = [ "parsing" ] }

[dev-dependencies]
serde_json.workspace = true
2 changes: 1 addition & 1 deletion crates/skilld-core/src/remote.rs
Original file line number Diff line number Diff line change
Expand Up @@ -880,7 +880,7 @@ fn verify_ustar(
archive: &[u8],
declarations: &[ArtifactFile],
) -> Result<Vec<PreparedFile>, RemoteError> {
if archive.len() % 512 != 0 {
if !archive.len().is_multiple_of(512) {
return Err(archive_error("the USTAR archive is truncated"));
}
let declarations = declarations
Expand Down
11 changes: 7 additions & 4 deletions crates/skilld-native/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,24 @@ tempfile.workspace = true

terminal_size.workspace = true

ureq = { version = "=3.1.4", default-features = false, features = [ "rustls" ] }
ureq = { version = "=3.4.0", default-features = false, features = [ "rustls" ] }

url.workspace = true

[target.'cfg(not(target_os = "wasi"))'.dependencies]
crossterm = { version = "=0.28.1", default-features = false, features = [
crossterm = { version = "=0.29.0", default-features = false, features = [
"events",
"windows",
] }
ratatui = { version = "=0.29.0", default-features = false, features = [ "crossterm" ] }
ratatui = { version = "=0.30.2", default-features = false, features = [
"crossterm_0_29",
"layout-cache",
] }

unicode-width.workspace = true

[target.'cfg(unix)'.dev-dependencies]
nix = { version = "0.29.0", features = [ "term" ] }
nix = { version = "0.31.3", features = [ "term" ] }

[dev-dependencies]
skilld-ui.workspace = true
12 changes: 6 additions & 6 deletions crates/skilld-native/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ fn main() -> ExitCode {

let args = env::args_os().collect::<Vec<_>>();
let interactive = interactive_update_requested(args.clone()).is_ok_and(|requested| requested);
if interactive {
if let Err(error) = require_interactive_tty(
if interactive
&& let Err(error) = require_interactive_tty(
std::io::stdin().is_terminal(),
std::io::stdout().is_terminal(),
) {
eprintln!("{error}");
return ExitCode::from(2);
}
)
{
eprintln!("{error}");
return ExitCode::from(2);
}

let project_root = match env::current_dir() {
Expand Down
5 changes: 2 additions & 3 deletions crates/skilld-native/src/update_ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use crossterm::cursor::{Hide, Show};
use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers};
use crossterm::execute;
use crossterm::terminal::{
EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
};
use ratatui::Terminal;
use ratatui::backend::{CrosstermBackend, TestBackend};
Expand Down Expand Up @@ -1509,7 +1509,7 @@ impl TerminalLifecycle for NativeTerminalLifecycle {
)
})?;
let mut stdout = io::stdout();
if execute!(stdout, EnterAlternateScreen, Hide).is_err() {
if execute!(stdout, EnterAlternateScreen, Clear(ClearType::All), Hide).is_err() {
let _ = disable_raw_mode();
return Err(InteractiveUpdateError::terminal(
"TERMINAL_UNAVAILABLE",
Expand Down Expand Up @@ -1540,7 +1540,6 @@ pub fn run_interactive_update<H: InteractiveUpdateHost>(
with_restored_terminal(NativeTerminalLifecycle, || {
let backend = CrosstermBackend::new(io::stdout());
let mut terminal = Terminal::new(backend).map_err(terminal_lost)?;
terminal.clear().map_err(terminal_lost)?;
run_event_loop(&mut terminal, host, color)
})
}
Expand Down
2 changes: 1 addition & 1 deletion crates/skilld-ui/src/text.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ pub fn grouped_number(value: u64) -> String {
let digits = value.to_string();
let mut output = String::new();
for (index, character) in digits.chars().enumerate() {
if index > 0 && (digits.len() - index) % 3 == 0 {
if index > 0 && (digits.len() - index).is_multiple_of(3) {
output.push(',');
}
output.push(character);
Expand Down
Loading