1
0
Fork 0
mirror of https://git.sr.ht/~spicywolf/k2spice synced 2025-01-18 17:59:39 +00:00

Compare commits

...

2 commits

Author SHA1 Message Date
Ren Kararou a31dea4d84
add debian CI 2024-07-13 00:24:20 -05:00
Ren Kararou 2355137d41
add common lib, custom macros, courtesy of Skylar Bleed 2024-07-13 00:05:42 -05:00
8 changed files with 118 additions and 11 deletions

26
.builds/debian.yml Normal file
View file

@ -0,0 +1,26 @@
image: debian/stable
environment:
RUSTFLAGS: -D warnings
sources:
- https://git.sr.ht/~spicywolf/k2spice
tasks:
- rustup: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
source "$HOME/.cargo/env"
rustup toolchain install nightly --allow-downgrade --profile minimal --component clippy
- bld-dbg: |
cd k2spice
source "$HOME/.cargo/env"
cargo build
- bld-rel: |
cd k2spice
source "$HOME/.cargo/env"
cargo build --release
- test: |
cd k2spice
source "$HOME/.cargo/env"
cargo test
- clippy: |
cd k2spice
source "$HOME/.cargo/env"
cargo clippy

View file

@ -8,10 +8,14 @@ tasks:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
source "$HOME/.cargo/env"
rustup toolchain install nightly --allow-downgrade --profile minimal --component clippy
- build: |
- bld-dbg: |
cd k2spice
source "$HOME/.cargo/env"
cargo build
- bld-rel: |
cd k2spice
source "$HOME/.cargo/env"
cargo build --release
- test: |
cd k2spice
source "$HOME/.cargo/env"

View file

@ -8,6 +8,7 @@ members = [
"usr/src/mei/printf",
"usr/src/mei/false",
"usr/src/mei/hostname",
"usr/src/lib/com",
]
default-members = [
"usr/src/mei/true",
@ -33,4 +34,3 @@ readme = "README.md"
nix = "0.27"
clap = { version = "4.4.8", features = ["derive"] }
serde = { version = "1.0.192", features = ["derive"] }

View file

@ -0,0 +1,12 @@
[package]
name = "com"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
description.workspace = true
documentation.workspace = true
repository.workspace = true
readme.workspace = true
[dependencies]

View file

@ -0,0 +1,62 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2023 Skylar Alexandra Bleed. All rights reserved.
* Use is subject to license terms.
*/
/** like a prelude: use com::macros::*; */
pub mod macros {
pub use crate::{ok_or, some_or, fatal};
}
/** print an error and abort */
#[macro_export]
macro_rules! fatal {
($($t:tt)*) => {{
eprintln!("fatal error: {}", format!($($t)*));
std::process::exit(-1);
}};
}
/** expect an Ok value or abort */
#[macro_export]
macro_rules! ok_or {
($x:expr, $($t:tt)*) => {{
match $x {
Ok(x) => x,
Err(e) => fatal!("{e}: {}", format!($($t)*)),
}
}};
}
/** expect a Some value or abort */
#[macro_export]
macro_rules! some_or {
($x:expr, $($t:tt)*) => {{
match $x {
Some(x) => x,
None => fatal!($($t)*),
}
}};
}

View file

@ -16,3 +16,4 @@ path = "src/pwd.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
com = { path = "../../lib/com" }

View file

@ -22,18 +22,20 @@
/*
* Copyright 2023 Ren Kararou All rights reserved.
* Portions copyright Skylar Alexandra Bleed 2024. All rights reserved.
* Use is subject to license terms.
*/
use std::env::current_dir;
use std::process::exit;
use com::macros::*;
fn main() {
if let Ok(buf) = current_dir() {
println!("{}", buf.to_str().expect("pwd: cannot determine current directoy!"));
exit(0);
} else {
eprintln!("pwd: cannot determine current directory!");
exit(2);
}
/* TODO: make expect accept different error codes? */
/* buf */
let b = ok_or!(current_dir(), "pwd: cannot determine current directory!");
/* path */
let p = some_or!(b.to_str(), "pwd: cannot get path from buf!");
println!("{p}");
}