Skip to content

Commit 0cb4553

Browse files
committed
Extract scarb-ui crate
commit-id:d43533b4
1 parent dedff1a commit 0cb4553

33 files changed

+179
-127
lines changed

Cargo.lock

+14-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ members = [
88
"utils/create-output-dir",
99
"utils/scarb-build-metadata",
1010
"utils/scarb-test-support",
11+
"utils/scarb-ui",
1112
"utils/test-for-each-example",
1213
"xtask",
1314
]

scarb/Cargo.toml

+1-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ cairo-lang-utils.workspace = true
2727
camino.workspace = true
2828
clap-verbosity-flag.workspace = true
2929
clap.workspace = true
30-
console.workspace = true
3130
create-output-dir = { path = "../utils/create-output-dir" }
3231
data-encoding.workspace = true
3332
deno_task_shell.workspace = true
@@ -41,14 +40,14 @@ gix.workspace = true
4140
glob.workspace = true
4241
ignore.workspace = true
4342
include_dir.workspace = true
44-
indicatif.workspace = true
4543
indoc.workspace = true
4644
itertools.workspace = true
4745
once_cell.workspace = true
4846
pathdiff.workspace = true
4947
petgraph.workspace = true
5048
scarb-build-metadata = { path = "../utils/scarb-build-metadata" }
5149
scarb-metadata = { path = "../scarb-metadata", default-features = false, features = ["builder", "packages_filter"] }
50+
scarb-ui = { path = "../utils/scarb-ui" }
5251
semver.workspace = true
5352
serde-value.workspace = true
5453
serde.workspace = true

scarb/src/bin/scarb/args.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@ use tracing_log::AsTrace;
1515
use scarb::compiler::Profile;
1616
use scarb::core::PackageName;
1717
use scarb::manifest_editor::DepId;
18-
use scarb::ui;
19-
use scarb::ui::OutputFormat;
2018
use scarb::version;
2119
use scarb_metadata::packages_filter::PackagesFilter;
20+
use scarb_ui::OutputFormat;
2221

2322
/// The Cairo package manager.
2423
#[derive(Parser, Clone, Debug)]
@@ -86,15 +85,15 @@ impl ScarbArgs {
8685
}
8786
}
8887

89-
/// Get [`ui::Verbosity`] out of this arguments.
90-
pub fn ui_verbosity(&self) -> ui::Verbosity {
88+
/// Get [`ui::Verbosity`] out of these arguments.
89+
pub fn ui_verbosity(&self) -> scarb_ui::Verbosity {
9190
let filter = self.verbose.log_level_filter().as_trace();
9291
if filter >= LevelFilter::WARN {
93-
ui::Verbosity::Verbose
92+
scarb_ui::Verbosity::Verbose
9493
} else if filter > LevelFilter::OFF {
95-
ui::Verbosity::Normal
94+
scarb_ui::Verbosity::Normal
9695
} else {
97-
ui::Verbosity::Quiet
96+
scarb_ui::Verbosity::Quiet
9897
}
9998
}
10099

scarb/src/bin/scarb/commands/cache_path.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use anyhow::{Ok, Result};
22

3-
use scarb::{core::Config, ui::ValueMessage};
3+
use scarb::core::Config;
4+
use scarb_ui::ValueMessage;
45

56
#[tracing::instrument(skip_all, level = "info")]
67
pub fn run(config: &Config) -> Result<()> {

scarb/src/bin/scarb/commands/commands.rs

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
use anyhow::Result;
2-
use serde::{Serialize, Serializer};
31
use std::collections::BTreeMap;
42
use std::path::PathBuf;
53
use std::{env, fmt, fs};
64

7-
use crate::args::ScarbArgs;
5+
use anyhow::Result;
6+
use serde::{Serialize, Serializer};
7+
88
use scarb::core::Config;
99
use scarb::process::is_executable;
10-
use scarb::ui::Message;
1110
use scarb::EXTERNAL_CMD_PREFIX;
11+
use scarb_ui::Message;
12+
13+
use crate::args::ScarbArgs;
1214

1315
#[derive(PartialEq, Eq, PartialOrd, Ord, Debug, Serialize)]
1416
enum CommandInfo {
@@ -100,15 +102,18 @@ pub fn run(config: &Config) -> Result<()> {
100102

101103
#[cfg(test)]
102104
mod tests {
103-
use super::{list_commands, CommandInfo};
105+
use std::collections::BTreeMap;
106+
use std::env;
107+
use std::path::PathBuf;
108+
104109
use assert_fs::prelude::*;
105110
use assert_fs::TempDir;
106111
use camino::Utf8Path;
112+
107113
use scarb::core::Config;
108114
use scarb::process::make_executable;
109-
use std::collections::BTreeMap;
110-
use std::env;
111-
use std::path::PathBuf;
115+
116+
use super::{list_commands, CommandInfo};
112117

113118
#[test]
114119
fn cmd_list() {

scarb/src/bin/scarb/commands/manifest_path.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use anyhow::Result;
22

33
use scarb::core::Config;
4-
use scarb::ui::ValueMessage;
4+
use scarb_ui::ValueMessage;
55

66
#[tracing::instrument(skip_all, level = "info")]
77
pub fn run(config: &Config) -> Result<()> {

scarb/src/bin/scarb/commands/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use anyhow::Result;
22

33
use scarb::core::Config;
44
use scarb::ops;
5-
use scarb::ui::MachineMessage;
5+
use scarb_ui::MachineMessage;
66

77
use crate::args::MetadataArgs;
88

scarb/src/bin/scarb/commands/run.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use smol_str::SmolStr;
1010
use scarb::core::errors::ScriptExecutionError;
1111
use scarb::core::{Config, Package, Workspace};
1212
use scarb::ops;
13-
use scarb::ui::Message;
13+
use scarb_ui::Message;
1414

1515
use crate::args::ScriptsRunnerArgs;
1616
use crate::errors::ErrorWithExitCode;

scarb/src/bin/scarb/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use args::ScarbArgs;
1010
use scarb::core::errors::ScriptExecutionError;
1111
use scarb::core::Config;
1212
use scarb::ops;
13-
use scarb::ui::Ui;
13+
use scarb_ui::Ui;
1414

1515
use crate::errors::ErrorWithExitCode;
1616

scarb/src/compiler/helpers.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ use cairo_lang_compiler::CompilerConfig;
66
use cairo_lang_filesystem::db::FilesGroup;
77
use cairo_lang_filesystem::ids::{CrateId, CrateLongId};
88

9+
use scarb_ui::TypedMessage;
10+
911
use crate::compiler::CompilationUnit;
1012
use crate::core::Workspace;
11-
use crate::ui::TypedMessage;
1213

1314
pub fn build_compiler_config<'c>(unit: &CompilationUnit, ws: &Workspace<'c>) -> CompilerConfig<'c> {
1415
CompilerConfig {

scarb/src/core/config.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ use tokio::runtime::{Builder, Handle, Runtime};
1111
use tracing::trace;
1212
use which::which_in;
1313

14+
use scarb_ui::{OutputFormat, Ui, Verbosity};
15+
1416
use crate::compiler::plugin::CairoPluginRepository;
1517
use crate::compiler::{CompilerRepository, Profile};
1618
use crate::core::AppDirs;
1719
#[cfg(doc)]
1820
use crate::core::Workspace;
1921
use crate::flock::{AdvisoryLock, RootFilesystem};
2022
use crate::internal::fsx;
21-
use crate::ui::{OutputFormat, Ui, Verbosity};
2223
use crate::DEFAULT_TARGET_DIR_NAME;
2324
use crate::SCARB_ENV;
2425

scarb/src/flock.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ use camino::{Utf8Path, Utf8PathBuf};
88
use fs4::{lock_contended_error, FileExt};
99
use tokio::sync::Mutex;
1010

11+
use scarb_ui::Status;
12+
1113
use crate::core::Config;
1214
use crate::internal::fsx;
1315
use crate::internal::lazy_directory_creator::LazyDirectoryCreator;
14-
use crate::ui::Status;
1516

1617
const OK_FILE: &str = ".scarb-ok";
1718

scarb/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#![deny(rustdoc::private_intra_doc_links)]
77
#![warn(rust_2018_idioms)]
88

9+
pub use subcommands::EXTERNAL_CMD_PREFIX;
10+
911
pub mod compiler;
1012
pub mod core;
1113
pub mod flock;
@@ -16,12 +18,9 @@ pub mod process;
1618
mod resolver;
1719
mod sources;
1820
mod subcommands;
19-
pub mod ui;
2021
pub mod version;
2122

2223
pub const SCARB_ENV: &str = "SCARB";
2324
pub const MANIFEST_FILE_NAME: &str = "Scarb.toml";
2425
pub const DEFAULT_SOURCE_PATH: &str = "src/lib.cairo";
2526
pub const DEFAULT_TARGET_DIR_NAME: &str = "target";
26-
27-
pub use subcommands::EXTERNAL_CMD_PREFIX;

scarb/src/manifest_editor/remove.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use anyhow::{anyhow, Result};
22
use toml_edit::Document;
33

4+
use scarb_ui::Status;
5+
46
use crate::core::PackageName;
5-
use crate::ui::Status;
67

78
use super::tomlx::get_table_mut;
89
use super::{Op, OpCtx};

scarb/src/ops/compile.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
use anyhow::{anyhow, Result};
22
use cairo_lang_compiler::diagnostics::DiagnosticsError;
3-
use indicatif::HumanDuration;
43
use indoc::formatdoc;
54

5+
use scarb_ui::HumanDuration;
6+
use scarb_ui::Status;
7+
68
use crate::compiler::db::{build_scarb_root_database, has_starknet_plugin};
79
use crate::compiler::CompilationUnit;
810
use crate::core::{PackageId, Utf8PathWorkspaceExt, Workspace};
911
use crate::ops;
10-
use crate::ui::Status;
1112

1213
#[tracing::instrument(skip_all, level = "debug")]
1314
pub fn compile(packages: Vec<PackageId>, ws: &Workspace<'_>) -> Result<()> {

scarb/src/ops/fmt.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
use std::fmt::Display;
2+
use std::path::{Path, PathBuf};
3+
use std::sync::atomic::{AtomicBool, Ordering};
4+
15
use anyhow::Result;
26
use cairo_lang_formatter::{CairoFormatter, FormatOutcome, FormatterConfig};
37
use ignore::WalkState::{Continue, Skip};
48
use ignore::{DirEntry, Error, ParallelVisitor, ParallelVisitorBuilder, WalkState};
5-
use std::fmt::Display;
6-
use std::path::{Path, PathBuf};
7-
use std::sync::atomic::{AtomicBool, Ordering};
89
use tracing::{info, warn};
910

1011
use crate::core::workspace::Workspace;
@@ -19,7 +20,7 @@ pub struct FmtOptions {
1920

2021
#[tracing::instrument(skip_all, level = "debug")]
2122
pub fn format(opts: FmtOptions, ws: &Workspace<'_>) -> Result<bool> {
22-
console::set_colors_enabled(opts.color);
23+
ws.config().ui().force_colors_enabled(opts.color);
2324
let config = FormatterConfig::default();
2425
let fmt = CairoFormatter::new(config);
2526
let packages = ws

scarb/src/ops/subcommands.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ use std::process::Command;
77
use anyhow::{bail, Result};
88
use tracing::debug;
99

10+
use scarb_ui::Status;
11+
1012
use crate::core::{Config, Package, Workspace};
1113
use crate::ops;
1214
use crate::process::{exec_replace, is_executable};
1315
use crate::subcommands::{get_env_vars, EXTERNAL_CMD_PREFIX, SCARB_MANIFEST_PATH_ENV};
14-
use crate::ui::Status;
1516

1617
#[tracing::instrument(level = "debug", skip(config))]
1718
pub fn execute_external_subcommand(

scarb/src/process.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ use std::{fmt, thread};
88
use anyhow::{anyhow, bail, Context, Result};
99
use tracing::{debug, debug_span, warn, Span};
1010

11+
use scarb_ui::{Spinner, Status};
12+
1113
use crate::core::Config;
12-
use crate::ui::{Spinner, Status};
1314

1415
// TODO(#125): Do what is documented here, take a look at what cargo-util does.
1516
/// Replaces the current process with the target process.

scarb/src/sources/git/client.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ use std::process::Command;
1313
use anyhow::{anyhow, bail, Context, Result};
1414
use camino::Utf8PathBuf;
1515

16+
use scarb_ui::Verbosity;
17+
1618
use crate::core::{Config, GitReference};
1719
use crate::flock::Filesystem;
1820
use crate::process::exec;
19-
use crate::ui::Verbosity;
2021

2122
use super::canonical_url::CanonicalUrl;
2223

scarb/src/sources/git/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ use url::Url;
88

99
use canonical_url::CanonicalUrl;
1010
use client::{GitRemote, Rev};
11+
use scarb_ui::Status;
1112

1213
use crate::core::source::Source;
1314
use crate::core::{
1415
Config, GitReference, ManifestDependency, Package, PackageId, SourceId, Summary,
1516
};
1617
use crate::sources::git::client::GitDatabase;
17-
use crate::ui::Status;
1818

1919
use super::PathSource;
2020

utils/scarb-test-support/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ itertools.workspace = true
1414
once_cell.workspace = true
1515
scarb = { path = "../../scarb" }
1616
scarb-build-metadata = { path = "../scarb-build-metadata" }
17+
scarb-ui = { path = "../scarb-ui" }
1718
semver.workspace = true
1819
serde.workspace = true
1920
serde_json.workspace = true

utils/scarb-test-support/src/command.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use snapbox::cmd::Command as SnapboxCommand;
1212

1313
use crate::cargo::cargo_bin;
1414
use scarb::core::Config;
15-
use scarb::ui::Verbosity;
15+
use scarb_ui::Verbosity;
1616

1717
use crate::fsx::{AssertFsUtf8Ext, PathUtf8Ext};
1818

0 commit comments

Comments
 (0)