mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-22 12:43:16 +00:00
chore(features): enable building with all-features (#286)
Before this change, it wasn't possible to build all features and all targets at the same time, which prevents rust-analyzer from working for the whole project. Adds a bacon.toml file to the project, which is used by bacon https://dystroy.org/bacon/ Configures docs.rs to show the feature flags that are necessary to make modules / types / functions available.
This commit is contained in:
parent
c5d387cb53
commit
ad288f5168
4 changed files with 105 additions and 12 deletions
|
@ -33,6 +33,7 @@ serde = ["dep:serde", "bitflags/serde"]
|
||||||
all-features = true
|
all-features = true
|
||||||
# see https://doc.rust-lang.org/nightly/rustdoc/scraped-examples.html
|
# see https://doc.rust-lang.org/nightly/rustdoc/scraped-examples.html
|
||||||
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
||||||
|
rustdoc-args = ["--cfg", "docsrs"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bitflags = "2.3"
|
bitflags = "2.3"
|
||||||
|
|
91
bacon.toml
Normal file
91
bacon.toml
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
# This is a configuration file for the bacon tool
|
||||||
|
#
|
||||||
|
# Bacon repository: https://github.com/Canop/bacon
|
||||||
|
# Complete help on configuration: https://dystroy.org/bacon/config/
|
||||||
|
# You can also check bacon's own bacon.toml file
|
||||||
|
# as an example: https://github.com/Canop/bacon/blob/main/bacon.toml
|
||||||
|
|
||||||
|
default_job = "check"
|
||||||
|
|
||||||
|
[jobs.check]
|
||||||
|
command = ["cargo", "check", "--all-features", "--color", "always"]
|
||||||
|
need_stdout = false
|
||||||
|
|
||||||
|
[jobs.check-all]
|
||||||
|
command = ["cargo", "check", "--all-targets", "--all-features", "--color", "always"]
|
||||||
|
need_stdout = false
|
||||||
|
|
||||||
|
[jobs.clippy]
|
||||||
|
command = [
|
||||||
|
"cargo", "clippy",
|
||||||
|
"--all-targets",
|
||||||
|
"--color", "always",
|
||||||
|
]
|
||||||
|
need_stdout = false
|
||||||
|
|
||||||
|
[jobs.test]
|
||||||
|
command = [
|
||||||
|
"cargo", "test",
|
||||||
|
"--all-features",
|
||||||
|
"--color", "always",
|
||||||
|
"--", "--color", "always", # see https://github.com/Canop/bacon/issues/124
|
||||||
|
]
|
||||||
|
need_stdout = true
|
||||||
|
|
||||||
|
[jobs.doc]
|
||||||
|
command = [
|
||||||
|
"cargo", "+nightly", "doc",
|
||||||
|
"-Zunstable-options", "-Zrustdoc-scrape-examples",
|
||||||
|
"--all-features",
|
||||||
|
"--color", "always",
|
||||||
|
"--no-deps",
|
||||||
|
]
|
||||||
|
env.RUSTDOCFLAGS = "--cfg docsrs"
|
||||||
|
need_stdout = false
|
||||||
|
|
||||||
|
# If the doc compiles, then it opens in your browser and bacon switches
|
||||||
|
# to the previous job
|
||||||
|
[jobs.doc-open]
|
||||||
|
command = [
|
||||||
|
"cargo", "+nightly", "doc",
|
||||||
|
"-Zunstable-options", "-Zrustdoc-scrape-examples",
|
||||||
|
"--all-features",
|
||||||
|
"--color", "always",
|
||||||
|
"--no-deps",
|
||||||
|
"--open",
|
||||||
|
]
|
||||||
|
env.RUSTDOCFLAGS = "--cfg docsrs"
|
||||||
|
need_stdout = false
|
||||||
|
on_success = "job:doc" # so that we don't open the browser at each change
|
||||||
|
|
||||||
|
# You can run your application and have the result displayed in bacon,
|
||||||
|
# *if* it makes sense for this crate. You can run an example the same
|
||||||
|
# way. Don't forget the `--color always` part or the errors won't be
|
||||||
|
# properly parsed.
|
||||||
|
[jobs.run]
|
||||||
|
command = [
|
||||||
|
"cargo", "run",
|
||||||
|
"--color", "always",
|
||||||
|
# put launch parameters for your program behind a `--` separator
|
||||||
|
]
|
||||||
|
need_stdout = true
|
||||||
|
allow_warnings = true
|
||||||
|
|
||||||
|
[jobs.check-crossterm]
|
||||||
|
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "crossterm"]
|
||||||
|
|
||||||
|
[jobs.check-termion]
|
||||||
|
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "termion"]
|
||||||
|
|
||||||
|
[jobs.check-termwiz]
|
||||||
|
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "termwiz"]
|
||||||
|
|
||||||
|
# You may define here keybindings that would be specific to
|
||||||
|
# a project, for example a shortcut to launch a specific job.
|
||||||
|
# Shortcuts to internal functions (scrolling, toggling, etc.)
|
||||||
|
# should go in your personal global prefs.toml file instead.
|
||||||
|
[keybindings]
|
||||||
|
# alt-m = "job:my-job"
|
||||||
|
ctrl-c = "job:check-crossterm"
|
||||||
|
ctrl-t = "job:check-termion"
|
||||||
|
ctrl-w = "job:check-termwiz"
|
|
@ -1,3 +1,7 @@
|
||||||
|
use std::{error::Error, time::Duration};
|
||||||
|
|
||||||
|
use argh::FromArgs;
|
||||||
|
|
||||||
mod app;
|
mod app;
|
||||||
#[cfg(feature = "crossterm")]
|
#[cfg(feature = "crossterm")]
|
||||||
mod crossterm;
|
mod crossterm;
|
||||||
|
@ -8,17 +12,6 @@ mod termwiz;
|
||||||
|
|
||||||
mod ui;
|
mod ui;
|
||||||
|
|
||||||
use std::{error::Error, time::Duration};
|
|
||||||
|
|
||||||
use argh::FromArgs;
|
|
||||||
|
|
||||||
#[cfg(feature = "crossterm")]
|
|
||||||
use crate::crossterm::run;
|
|
||||||
#[cfg(feature = "termion")]
|
|
||||||
use crate::termion::run;
|
|
||||||
#[cfg(feature = "termwiz")]
|
|
||||||
use crate::termwiz::run;
|
|
||||||
|
|
||||||
/// Demo
|
/// Demo
|
||||||
#[derive(Debug, FromArgs)]
|
#[derive(Debug, FromArgs)]
|
||||||
struct Cli {
|
struct Cli {
|
||||||
|
@ -33,6 +26,11 @@ struct Cli {
|
||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
let cli: Cli = argh::from_env();
|
let cli: Cli = argh::from_env();
|
||||||
let tick_rate = Duration::from_millis(cli.tick_rate);
|
let tick_rate = Duration::from_millis(cli.tick_rate);
|
||||||
run(tick_rate, cli.enhanced_graphics)?;
|
#[cfg(feature = "crossterm")]
|
||||||
|
crate::crossterm::run(tick_rate, cli.enhanced_graphics)?;
|
||||||
|
#[cfg(feature = "termion")]
|
||||||
|
crate::termion::run(tick_rate, cli.enhanced_graphics)?;
|
||||||
|
#[cfg(feature = "termwiz")]
|
||||||
|
crate::termwiz::run(tick_rate, cli.enhanced_graphics)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,6 +174,9 @@
|
||||||
//! you might need a blank space somewhere, try to pass an additional constraint and don't use the
|
//! you might need a blank space somewhere, try to pass an additional constraint and don't use the
|
||||||
//! corresponding area.
|
//! corresponding area.
|
||||||
|
|
||||||
|
// show the feature flags in the generated documentation
|
||||||
|
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
||||||
|
|
||||||
pub mod backend;
|
pub mod backend;
|
||||||
pub mod buffer;
|
pub mod buffer;
|
||||||
pub mod layout;
|
pub mod layout;
|
||||||
|
|
Loading…
Reference in a new issue