From 937f20b1fb8e1ae854bae683b435459906242cd4 Mon Sep 17 00:00:00 2001 From: Philippe Llerena Date: Sat, 17 Aug 2024 13:58:50 +0200 Subject: [PATCH] Clean config Signed-off-by: Philippe Llerena --- crates/spfs/src/runtime/config.nu | 4 -- crates/spfs/src/runtime/config_nu.rs | 14 +++-- crates/spfs/src/runtime/env.nu | 65 ------------------------ crates/spfs/src/runtime/env_nu.rs | 76 ++++++++++++++++++++++++++-- 4 files changed, 81 insertions(+), 78 deletions(-) delete mode 100644 crates/spfs/src/runtime/config.nu delete mode 100644 crates/spfs/src/runtime/env.nu diff --git a/crates/spfs/src/runtime/config.nu b/crates/spfs/src/runtime/config.nu deleted file mode 100644 index 2bb7cea2c..000000000 --- a/crates/spfs/src/runtime/config.nu +++ /dev/null @@ -1,4 +0,0 @@ -$env.config = { - show_banner: false, -} -print $env.SPFS_SHELL_MESSAGE? \ No newline at end of file diff --git a/crates/spfs/src/runtime/config_nu.rs b/crates/spfs/src/runtime/config_nu.rs index 072499801..c7ca1b2d1 100644 --- a/crates/spfs/src/runtime/config_nu.rs +++ b/crates/spfs/src/runtime/config_nu.rs @@ -3,11 +3,17 @@ // https://github.com/spkenv/spk // Warning Nuhshell version >=0.96 -use std::fs; pub fn source(_tmpdir: Option<&T>) -> String where T: AsRef, -{ - fs::read_to_string("/home/philippe.llerena/workspace/github.com/doubleailes/spk/crates/spfs/src/runtime/config.nu").unwrap() -} + { + r#" + $env.config = { + show_banner: false, + } + $env.SPFS_SHELL_MESSAGE? | print + "# + .to_string() + } + diff --git a/crates/spfs/src/runtime/env.nu b/crates/spfs/src/runtime/env.nu deleted file mode 100644 index 1edbfde81..000000000 --- a/crates/spfs/src/runtime/env.nu +++ /dev/null @@ -1,65 +0,0 @@ -def create_left_prompt [] { - let dir = match (do --ignore-shell-errors { $env.PWD | path relative-to $nu.home-path }) { - null => $env.PWD - '' => '~' - $relative_pwd => ([~ $relative_pwd] | path join) - } - - let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold }) - let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold }) - let path_segment = $"($path_color)($dir)(ansi reset)" - - $path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)" -} - -def create_right_prompt [] { - # create a right prompt in magenta with green separators and am/pm underlined - let time_segment = ([ - (ansi reset) - (ansi magenta) - (date now | format date '%x %X') # try to respect user's locale - ] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" | - str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}") - - let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ - (ansi rb) - ($env.LAST_EXIT_CODE) - ] | str join) - } else { "" } - - ([$last_exit_code, (char space), $time_segment] | str join) -} - -# Use nushell functions to define your right and left prompt -$env.PROMPT_COMMAND = {|| create_left_prompt } -# FIXME: This default is not implemented in rust code as of 2023-09-08. -$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } - -# The prompt indicators are environmental variables that represent -# the state of the prompt -$env.PROMPT_INDICATOR = {|| "> " } -$env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } -$env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } -$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } - - -$env.ENV_CONVERSIONS = { - "PATH": { - from_string: { |s| $s | split row (char esep) | path expand --no-symlink } - to_string: { |v| $v | path expand --no-symlink | str join (char esep) } - } - "Path": { - from_string: { |s| $s | split row (char esep) | path expand --no-symlink } - to_string: { |v| $v | path expand --no-symlink | str join (char esep) } - } -} - -let $spfs_startup_dir = if $nu.os-info.name == "windows" { - "C:/spfs/etc/spfs/startup.d" -} else if $nu.os-info.name == "linux" { - "/spfs/etc/spfs/startup.d" -} else { - exit 1 -} - -$env.NU_VENDOR_AUTOLOAD_DIR = ($spfs_startup_dir) \ No newline at end of file diff --git a/crates/spfs/src/runtime/env_nu.rs b/crates/spfs/src/runtime/env_nu.rs index 12f2bc0dc..051891583 100644 --- a/crates/spfs/src/runtime/env_nu.rs +++ b/crates/spfs/src/runtime/env_nu.rs @@ -3,11 +3,77 @@ // https://github.com/spkenv/spk // Warning Nuhshell version >=0.96 -use std::fs; - pub fn source(_tmpdir: Option<&T>) -> String where T: AsRef, -{ - fs::read_to_string("/home/philippe.llerena/workspace/github.com/doubleailes/spk/crates/spfs/src/runtime/env.nu").unwrap() -} \ No newline at end of file + { + r#" + def create_left_prompt [] { + let dir = match (do --ignore-shell-errors { $env.PWD | path relative-to $nu.home-path }) { + null => $env.PWD + '' => '~' + $relative_pwd => ([~ $relative_pwd] | path join) + } + + let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold }) + let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold }) + let path_segment = $"($path_color)($dir)(ansi reset)" + + $path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)" + } + + def create_right_prompt [] { + # create a right prompt in magenta with green separators and am/pm underlined + let time_segment = ([ + (ansi reset) + (ansi magenta) + (date now | format date '%x %X') # try to respect user's locale + ] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" | + str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}") + + let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ + (ansi rb) + ($env.LAST_EXIT_CODE) + ] | str join) + } else { "" } + + ([$last_exit_code, (char space), $time_segment] | str join) + } + + # Use nushell functions to define your right and left prompt + $env.PROMPT_COMMAND = {|| create_left_prompt } + # FIXME: This default is not implemented in rust code as of 2023-09-08. + $env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } + + # The prompt indicators are environmental variables that represent + # the state of the prompt + $env.PROMPT_INDICATOR = {|| "> " } + $env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } + $env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } + $env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } + + + $env.ENV_CONVERSIONS = { + "PATH": { + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } + } + "Path": { + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } + } + } + + let $spfs_startup_dir = if $nu.os-info.name == "windows" { + "C:/spfs/etc/spfs/startup.d" + } else if $nu.os-info.name == "linux" { + "/spfs/etc/spfs/startup.d" + } else { + exit 1 + } + + $env.NU_VENDOR_AUTOLOAD_DIR = ($spfs_startup_dir) + "# + .to_string() + } + \ No newline at end of file