Skip to content
This repository was archived by the owner on Oct 23, 2025. It is now read-only.

Commit e209947

Browse files
authored
Merge pull request killercup#30 from killercup/log
Become a log target
2 parents 1e356d4 + c4e0737 commit e209947

File tree

16 files changed

+288
-131
lines changed

16 files changed

+288
-131
lines changed

.travis.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ rust:
44
- beta
55
- nightly
66

7+
script:
8+
- cargo test --all
9+
- cargo check --no-default-features
10+
711
matrix:
812
include:
9-
- rust: 1.30.1
13+
- rust: 1.31.1
1014
env: CLIPPY=YESPLEASE
1115
before_script: rustup component add clippy-preview
1216
script: cargo clippy --all-targets --all -- -D warnings
13-
- rust: 1.30.1
17+
- rust: 1.31.1
1418
env: RUSTFMT=YESPLEASE
1519
before_script: rustup component add rustfmt-preview
1620
script: cargo fmt --all -- --check

Cargo.toml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,35 @@ description = "A Rust create for outputting information and log messages for hum
66
license = "Apache-2.0 OR MIT"
77
readme = "README.md"
88
repository = "https://github.com/killercup/convey"
9+
edition = "2018"
910

1011
[workspace]
1112
members = [
1213
"convey_derive"
1314
]
1415

16+
[features]
17+
default = ["log"]
18+
19+
[[example]]
20+
name = "logging"
21+
path = "examples/logging.rs"
22+
required-features = ["log"]
23+
1524
[dependencies]
1625
termcolor = "1.0.4"
1726
serde = "1.0.79"
1827
serde_json = "1.0.31"
1928
failure_derive = "0.1.2"
2029
failure = "0.1.2"
2130
serde_derive = "1.0.79"
22-
crossbeam-channel = "0.2.6"
31+
crossbeam-channel = "0.3.4"
32+
log = { version = "0.4.6", features = ["std", "serde"], optional = true }
2333

2434
[dev-dependencies]
2535
proptest = "0.8.7"
26-
assert_fs = "0.9.0"
27-
predicates = "0.9.0"
36+
assert_fs = "0.10.0"
37+
predicates = "1.0.0"
2838
convey_derive = { version = "0.2", path = "convey_derive" }
29-
rand = "0.5.5"
39+
rand = "0.6.1"
3040
structopt = "0.2"

convey_derive/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
//! # fn main() -> Result<(), convey::Error> {
1717
//! # use convey::human;
1818
//! # let test_target = human::test();
19-
//! let mut out = convey::new().add_target(test_target.target());
19+
//! let out = convey::new().add_target(test_target.target())?;
2020
//! out.print(&Message {
2121
//! code: 42,
2222
//! message: String::from("Derive works"),

convey_derive/tests/structs.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ fn struct_with_named_fields_of_primitive_types() -> Result<(), convey::Error> {
1515

1616
let human = convey::human::test();
1717
let json = convey::json::test();
18-
let mut out = convey::new()
19-
.add_target(human.target())
20-
.add_target(json.target());
18+
let out = convey::new()
19+
.add_target(human.target())?
20+
.add_target(json.target())?;
2121

2222
out.print(&ErrorMessage {
2323
code: 42,
@@ -48,9 +48,9 @@ fn tuple_struct_of_primitive_types() -> Result<(), convey::Error> {
4848

4949
let human = convey::human::test();
5050
let json = convey::json::test();
51-
let mut out = convey::new()
52-
.add_target(human.target())
53-
.add_target(json.target());
51+
let out = convey::new()
52+
.add_target(human.target())?
53+
.add_target(json.target())?;
5454

5555
out.print(&ErrorMessage(42, String::from("Derive works")))?;
5656
out.flush()?;

examples/cli.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
extern crate failure;
2-
extern crate structopt;
1+
use failure;
2+
use structopt;
33
#[macro_use]
44
extern crate serde_derive;
55
#[macro_use]
@@ -21,10 +21,10 @@ struct Cli {
2121

2222
fn main() -> Result<(), failure::Error> {
2323
let args = Cli::from_args();
24-
let mut out = if args.json {
25-
convey::new().add_target(json::stdout()?)
24+
let out = if args.json {
25+
convey::new().add_target(json::stdout()?)?
2626
} else {
27-
convey::new().add_target(human::stdout()?)
27+
convey::new().add_target(human::stdout()?)?
2828
};
2929

3030
let x = 42;

examples/concurrent.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,21 @@
1-
extern crate convey;
2-
extern crate failure;
3-
extern crate rand;
1+
use convey;
2+
use failure;
43

54
use convey::{human, json};
6-
use rand::distributions::Distribution;
7-
use rand::distributions::Range;
8-
use rand::thread_rng;
5+
use rand::{thread_rng, Rng};
96
use std::thread;
107
use std::time::Duration;
118

129
fn main() -> Result<(), failure::Error> {
1310
let out = convey::new()
14-
.add_target(json::file("target/foo.log")?)
15-
.add_target(human::stdout()?);
11+
.add_target(json::file("target/foo.log")?)?
12+
.add_target(human::stdout()?)?;
1613

1714
let mut threads = vec![];
1815
for i in 0..100 {
19-
let mut out = out.clone();
16+
let out = out.clone();
2017
let t = thread::spawn(move || {
21-
let dur = Duration::from_millis({
22-
let mut rng = thread_rng();
23-
let range = Range::new(0u64, 1);
24-
range.sample(&mut rng)
25-
});
18+
let dur = Duration::from_millis(thread_rng().gen_range(0u64, 1));
2619
thread::sleep(dur);
2720
out.print(&format!("thread {} says hello", i))
2821
});

examples/custom.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
extern crate failure;
1+
use failure;
22
#[macro_use]
33
extern crate convey;
44
#[macro_use]
@@ -10,9 +10,9 @@ use convey::{
1010
};
1111

1212
fn main() -> Result<(), failure::Error> {
13-
let mut out = convey::new()
14-
.add_target(json::file("target/foo.log")?)
15-
.add_target(human::stdout()?);
13+
let out = convey::new()
14+
.add_target(json::file("target/foo.log")?)?
15+
.add_target(human::stdout()?)?;
1616

1717
#[derive(Serialize)]
1818
struct ErrorMessage {

examples/derive.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
extern crate convey;
2-
extern crate failure;
1+
use convey;
2+
use failure;
33
#[macro_use]
44
extern crate convey_derive;
55
#[macro_use]
@@ -8,9 +8,9 @@ extern crate serde_derive;
88
use convey::{human, json};
99

1010
fn main() -> Result<(), failure::Error> {
11-
let mut out = convey::new()
12-
.add_target(json::file("target/foo.log")?)
13-
.add_target(human::stdout()?);
11+
let out = convey::new()
12+
.add_target(json::file("target/foo.log")?)?
13+
.add_target(human::stdout()?)?;
1414

1515
#[derive(Serialize, RenderOutput)]
1616
struct ErrorMessage {

examples/logging.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
fn main() -> Result<(), failure::Error> {
2+
let output = convey::new()
3+
.add_target(convey::human::stdout()?)?
4+
.use_as_logger(log::Level::Debug)?;
5+
6+
output.print("hello")?;
7+
log::info!("welcome");
8+
log::error!("oh noes");
9+
10+
Ok(())
11+
}

src/components/span.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
use crate::{human, json, Error, Render};
12
use termcolor::ColorSpec;
2-
use {human, json, Error, Render};
33

44
/// Construct a new, empty span
55
pub fn span() -> Span {
@@ -31,7 +31,7 @@ macro_rules! __inner_span {
3131
/// fn main() -> Result<(), convey::Error> {
3232
/// use convey::{components::text, human};
3333
///
34-
/// let mut out = convey::new().add_target(human::stdout()?);
34+
/// let mut out = convey::new().add_target(human::stdout()?)?;
3535
///
3636
/// let message = span!(fg = "red", [
3737
/// text("hello"),
@@ -54,7 +54,7 @@ macro_rules! span {
5454

5555
#[derive(Default)]
5656
pub struct Span {
57-
items: Vec<Box<Render>>,
57+
items: Vec<Box<dyn Render>>,
5858
fg: Option<::termcolor::Color>,
5959
bg: Option<::termcolor::Color>,
6060
bold: bool,
@@ -126,8 +126,8 @@ impl Render for Span {
126126
#[cfg(test)]
127127
mod test {
128128
use super::span;
129-
use components::text;
130-
use {human, json, Error, Render};
129+
use crate::components::text;
130+
use crate::{human, json, Error, Render};
131131

132132
#[test]
133133
fn renders_span_children() -> Result<(), Error> {
@@ -149,7 +149,7 @@ mod test {
149149
#[test]
150150
fn test_colored_output() -> Result<(), Error> {
151151
let test_target = human::test_with_color();
152-
let mut out = ::new().add_target(test_target.target());
152+
let out = crate::new().add_target(test_target.target())?;
153153

154154
out.print(span().add_item("hello").fg("green")?.bg("blue")?)?;
155155
out.flush()?;
@@ -164,7 +164,7 @@ mod test {
164164
#[test]
165165
fn test_bold_output() -> Result<(), Error> {
166166
let test_target = human::test_with_color();
167-
let mut out = ::new().add_target(test_target.target());
167+
let out = crate::new().add_target(test_target.target())?;
168168

169169
out.print(span().add_item("hello").bold(true)?)?;
170170
out.flush()?;
@@ -179,7 +179,7 @@ mod test {
179179
#[test]
180180
fn test_intense_output() -> Result<(), Error> {
181181
let test_target = human::test_with_color();
182-
let mut out = ::new().add_target(test_target.target());
182+
let out = crate::new().add_target(test_target.target())?;
183183

184184
out.print(span().add_item("hello").fg("green")?.intense(true)?)?;
185185
out.flush()?;
@@ -194,7 +194,7 @@ mod test {
194194
#[test]
195195
fn test_underline_output() -> Result<(), Error> {
196196
let test_target = human::test_with_color();
197-
let mut out = ::new().add_target(test_target.target());
197+
let out = crate::new().add_target(test_target.target())?;
198198

199199
out.print(span().add_item("hello").underline(true)?)?;
200200
out.flush()?;

0 commit comments

Comments
 (0)