forked from extern/nushell
make Table, Autoview read in memory config. (#3287)
This commit is contained in:
parent
81160bcefb
commit
a7274115d0
@ -1,4 +1,4 @@
|
|||||||
use crate::commands::autoview::options::{ConfigExtensions, NuConfig as AutoViewConfiguration};
|
use crate::commands::autoview::options::ConfigExtensions;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::primitive::get_color_config;
|
use crate::primitive::get_color_config;
|
||||||
use nu_data::value::format_leaf;
|
use nu_data::value::format_leaf;
|
||||||
@ -44,7 +44,7 @@ impl WholeStreamCommand for Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn autoview(context: CommandArgs) -> Result<OutputStream, ShellError> {
|
pub fn autoview(context: CommandArgs) -> Result<OutputStream, ShellError> {
|
||||||
let configuration = AutoViewConfiguration::new();
|
let configuration = context.configs.lock().global_config();
|
||||||
|
|
||||||
let binary = context.scope.get_command("binaryview");
|
let binary = context.scope.get_command("binaryview");
|
||||||
let text = context.scope.get_command("textview");
|
let text = context.scope.get_command("textview");
|
||||||
@ -213,7 +213,7 @@ pub fn autoview(context: CommandArgs) -> Result<OutputStream, ShellError> {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
let color_hm = get_color_config();
|
let color_hm = get_color_config(&configuration);
|
||||||
|
|
||||||
let table =
|
let table =
|
||||||
nu_table::Table::new(vec![], entries, nu_table::Theme::compact());
|
nu_table::Table::new(vec![], entries, nu_table::Theme::compact());
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use crate::commands::table::options::{ConfigExtensions, NuConfig as TableConfiguration};
|
use crate::commands::table::options::{ConfigExtensions, NuConfig};
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::primitive::get_color_config;
|
use crate::primitive::get_color_config;
|
||||||
use nu_data::value::{format_leaf, style_leaf};
|
use nu_data::value::{format_leaf, style_leaf};
|
||||||
@ -41,13 +41,13 @@ impl WholeStreamCommand for Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
|
fn run(&self, args: CommandArgs) -> Result<OutputStream, ShellError> {
|
||||||
table(TableConfiguration::new(), args)
|
table(args)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_list(
|
pub fn from_list(
|
||||||
values: &[Value],
|
values: &[Value],
|
||||||
configuration: &TableConfiguration,
|
configuration: &NuConfig,
|
||||||
starting_idx: usize,
|
starting_idx: usize,
|
||||||
color_hm: &HashMap<String, nu_ansi_term::Style>,
|
color_hm: &HashMap<String, nu_ansi_term::Style>,
|
||||||
) -> nu_table::Table {
|
) -> nu_table::Table {
|
||||||
@ -56,7 +56,13 @@ pub fn from_list(
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|x| StyledString::new(x, header_style))
|
.map(|x| StyledString::new(x, header_style))
|
||||||
.collect();
|
.collect();
|
||||||
let entries = values_to_entries(values, &mut headers, configuration, starting_idx, &color_hm);
|
let entries = values_to_entries(
|
||||||
|
values,
|
||||||
|
&mut headers,
|
||||||
|
&configuration,
|
||||||
|
starting_idx,
|
||||||
|
&color_hm,
|
||||||
|
);
|
||||||
nu_table::Table {
|
nu_table::Table {
|
||||||
headers,
|
headers,
|
||||||
data: entries,
|
data: entries,
|
||||||
@ -67,7 +73,7 @@ pub fn from_list(
|
|||||||
fn values_to_entries(
|
fn values_to_entries(
|
||||||
values: &[Value],
|
values: &[Value],
|
||||||
headers: &mut Vec<StyledString>,
|
headers: &mut Vec<StyledString>,
|
||||||
configuration: &TableConfiguration,
|
configuration: &NuConfig,
|
||||||
starting_idx: usize,
|
starting_idx: usize,
|
||||||
color_hm: &HashMap<String, nu_ansi_term::Style>,
|
color_hm: &HashMap<String, nu_ansi_term::Style>,
|
||||||
) -> Vec<Vec<StyledString>> {
|
) -> Vec<Vec<StyledString>> {
|
||||||
@ -158,8 +164,9 @@ fn values_to_entries(
|
|||||||
entries
|
entries
|
||||||
}
|
}
|
||||||
|
|
||||||
fn table(configuration: TableConfiguration, args: CommandArgs) -> Result<OutputStream, ShellError> {
|
fn table(args: CommandArgs) -> Result<OutputStream, ShellError> {
|
||||||
let mut args = args.evaluate_once()?;
|
let mut args = args.evaluate_once()?;
|
||||||
|
let configuration = args.configs.lock().global_config();
|
||||||
|
|
||||||
// Ideally, get_color_config would get all the colors configured in the config.toml
|
// Ideally, get_color_config would get all the colors configured in the config.toml
|
||||||
// and create a style based on those settings. However, there are few places where
|
// and create a style based on those settings. However, there are few places where
|
||||||
@ -167,7 +174,7 @@ fn table(configuration: TableConfiguration, args: CommandArgs) -> Result<OutputS
|
|||||||
// more than just color, it needs fg & bg color, bold, dimmed, italic, underline,
|
// more than just color, it needs fg & bg color, bold, dimmed, italic, underline,
|
||||||
// blink, reverse, hidden, strikethrough and most of those aren't available in the
|
// blink, reverse, hidden, strikethrough and most of those aren't available in the
|
||||||
// config.toml.... yet.
|
// config.toml.... yet.
|
||||||
let color_hm = get_color_config();
|
let color_hm = get_color_config(&configuration);
|
||||||
|
|
||||||
let mut start_number = if let Some(f) = args.get_flag("start_number") {
|
let mut start_number = if let Some(f) = args.get_flag("start_number") {
|
||||||
f?
|
f?
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
use crate::config::NuConfig;
|
||||||
use nu_ansi_term::{Color, Style};
|
use nu_ansi_term::{Color, Style};
|
||||||
use nu_protocol::{hir::Number, Primitive, Value};
|
use nu_protocol::{hir::Number, Primitive, Value};
|
||||||
use nu_source::Tag;
|
|
||||||
use nu_table::{Alignment, TextStyle};
|
use nu_table::{Alignment, TextStyle};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
@ -121,7 +121,9 @@ fn update_hashmap(key: &str, val: &Value, hm: &mut HashMap<String, Style>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_color_config() -> HashMap<String, Style> {
|
pub fn get_color_config(config: &NuConfig) -> HashMap<String, Style> {
|
||||||
|
let config = &config.vars;
|
||||||
|
|
||||||
// create the hashmap
|
// create the hashmap
|
||||||
let mut hm: HashMap<String, Style> = HashMap::new();
|
let mut hm: HashMap<String, Style> = HashMap::new();
|
||||||
// set some defaults
|
// set some defaults
|
||||||
@ -150,72 +152,70 @@ pub fn get_color_config() -> HashMap<String, Style> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// populate hashmap from config values
|
// populate hashmap from config values
|
||||||
if let Ok(config) = crate::config::config(Tag::unknown()) {
|
if let Some(primitive_color_vars) = config.get("color_config") {
|
||||||
if let Some(primitive_color_vars) = config.get("color_config") {
|
for (key, value) in primitive_color_vars.row_entries() {
|
||||||
for (key, value) in primitive_color_vars.row_entries() {
|
match key.as_ref() {
|
||||||
match key.as_ref() {
|
"primitive_int" => {
|
||||||
"primitive_int" => {
|
update_hashmap(&key, &value, &mut hm);
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_decimal" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_filesize" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_string" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_line" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_columnpath" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_pattern" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_boolean" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_date" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_duration" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_range" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_path" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"primitive_binary" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"separator_color" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"header_align" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"header_color" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"header_bold" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"header_style" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"index_color" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
"leading_trailing_space_bg" => {
|
|
||||||
update_hashmap(&key, &value, &mut hm);
|
|
||||||
}
|
|
||||||
_ => (),
|
|
||||||
}
|
}
|
||||||
|
"primitive_decimal" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_filesize" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_string" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_line" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_columnpath" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_pattern" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_boolean" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_date" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_duration" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_range" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_path" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"primitive_binary" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"separator_color" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"header_align" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"header_color" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"header_bold" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"header_style" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"index_color" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
"leading_trailing_space_bg" => {
|
||||||
|
update_hashmap(&key, &value, &mut hm);
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,13 @@ impl ConfigHolder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn global_config(&self) -> NuConfig {
|
||||||
|
match &self.global_config {
|
||||||
|
Some(config) => config.clone(),
|
||||||
|
None => NuConfig::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add_local_cfg(&mut self, cfg: NuConfig) {
|
pub fn add_local_cfg(&mut self, cfg: NuConfig) {
|
||||||
self.local_configs.push(cfg);
|
self.local_configs.push(cfg);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user