mirror of
https://github.com/Llewellynvdm/starship.git
synced 2024-11-24 21:57:41 +00:00
fix!: remove haskell module (#1418)
Given how slow the Haskell module is (#1240), it is slowing down the entire prompt from rendering when the module is active. This commit removes the module until we can find a faster way to retreive the Haskell version.
This commit is contained in:
parent
5584783d51
commit
428a78ebb5
@ -112,7 +112,6 @@ prompt_order = [
|
||||
"elm",
|
||||
"erlang",
|
||||
"golang",
|
||||
"haskell",
|
||||
"java",
|
||||
"julia",
|
||||
"nim",
|
||||
@ -778,30 +777,6 @@ The module will be shown if any of the following conditions are met:
|
||||
[golang]
|
||||
symbol = "🏎💨 "
|
||||
```
|
||||
## Haskell
|
||||
|
||||
The `haskell` module shows the currently installed version of Haskell Stack version.
|
||||
The module will be shown if any of the following conditions are met:
|
||||
|
||||
- The current directory contains a `stack.yaml` file
|
||||
|
||||
### Options
|
||||
|
||||
| Variable | Default | Description |
|
||||
| ---------- | ------------ | --------------------------------------------------------- |
|
||||
| `symbol` | `"λ "` | The symbol used before displaying the version of Haskell. |
|
||||
| `style` | `"bold red"` | The style for the module. |
|
||||
| `disabled` | `false` | Disables the `haskell` module. |
|
||||
|
||||
|
||||
### Example
|
||||
|
||||
```toml
|
||||
# ~/.config/starship.toml
|
||||
|
||||
[haskell]
|
||||
symbol = " "
|
||||
```
|
||||
|
||||
## Hostname
|
||||
|
||||
|
@ -1,23 +0,0 @@
|
||||
use crate::config::{ModuleConfig, RootModuleConfig, SegmentConfig};
|
||||
|
||||
use ansi_term::{Color, Style};
|
||||
use starship_module_config_derive::ModuleConfig;
|
||||
|
||||
#[derive(Clone, ModuleConfig)]
|
||||
pub struct HaskellConfig<'a> {
|
||||
pub symbol: SegmentConfig<'a>,
|
||||
pub version: SegmentConfig<'a>,
|
||||
pub style: Style,
|
||||
pub disabled: bool,
|
||||
}
|
||||
|
||||
impl<'a> RootModuleConfig<'a> for HaskellConfig<'a> {
|
||||
fn new() -> Self {
|
||||
HaskellConfig {
|
||||
symbol: SegmentConfig::new("λ "),
|
||||
version: SegmentConfig::default(),
|
||||
style: Color::Red.bold(),
|
||||
disabled: false,
|
||||
}
|
||||
}
|
||||
}
|
@ -17,7 +17,6 @@ pub mod git_commit;
|
||||
pub mod git_state;
|
||||
pub mod git_status;
|
||||
pub mod go;
|
||||
pub mod haskell;
|
||||
pub mod hg_branch;
|
||||
pub mod hostname;
|
||||
pub mod java;
|
||||
|
@ -36,7 +36,6 @@ impl<'a> RootModuleConfig<'a> for StarshipRootConfig<'a> {
|
||||
"elm",
|
||||
"erlang",
|
||||
"golang",
|
||||
"haskell",
|
||||
"java",
|
||||
"julia",
|
||||
"nim",
|
||||
|
@ -28,7 +28,6 @@ pub const ALL_MODULES: &[&str] = &[
|
||||
"git_state",
|
||||
"git_status",
|
||||
"golang",
|
||||
"haskell",
|
||||
"hg_branch",
|
||||
"hostname",
|
||||
"java",
|
||||
|
@ -1,91 +0,0 @@
|
||||
use super::{Context, Module, RootModuleConfig, SegmentConfig};
|
||||
|
||||
use crate::configs::haskell::HaskellConfig;
|
||||
use crate::utils;
|
||||
|
||||
/// Creates a module with the current Haskell Stack version
|
||||
///
|
||||
/// Will display the Haskell version if any of the following criteria are met:
|
||||
/// - Current directory contains a `stack.yaml` file
|
||||
/// - Current directory contains a `.cabal` file
|
||||
/// - Current directory contains a `package.yaml` file
|
||||
pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
|
||||
let is_haskell_project = context
|
||||
.try_begin_scan()?
|
||||
.set_files(&["package.yaml", "stack.yaml", "package.yml", "stack.yml"])
|
||||
.set_extensions(&["cabal"])
|
||||
.is_match();
|
||||
|
||||
if !is_haskell_project {
|
||||
return None;
|
||||
}
|
||||
|
||||
let haskell_version = utils::exec_cmd(
|
||||
"stack",
|
||||
&[
|
||||
"--no-install-ghc",
|
||||
"--lock-file",
|
||||
"read-only",
|
||||
"ghc",
|
||||
"--",
|
||||
"--numeric-version",
|
||||
],
|
||||
)?
|
||||
.stdout;
|
||||
let formatted_version = Some(format!("v{}", haskell_version.trim()))?;
|
||||
|
||||
let mut module = context.new_module("haskell");
|
||||
let config: HaskellConfig = HaskellConfig::try_load(module.config);
|
||||
module.set_style(config.style);
|
||||
|
||||
module.create_segment("symbol", &config.symbol);
|
||||
module.create_segment("version", &SegmentConfig::new(&formatted_version));
|
||||
|
||||
Some(module)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::modules::utils::test::render_module;
|
||||
use ansi_term::Color;
|
||||
use std::fs::File;
|
||||
use std::io;
|
||||
|
||||
#[test]
|
||||
fn folder_without_stack_yaml() -> io::Result<()> {
|
||||
let dir = tempfile::tempdir()?;
|
||||
let actual = render_module("haskell", dir.path(), None);
|
||||
let expected = None;
|
||||
assert_eq!(expected, actual);
|
||||
dir.close()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn folder_with_hpack_file() -> io::Result<()> {
|
||||
let dir = tempfile::tempdir()?;
|
||||
File::create(dir.path().join("package.yaml"))?.sync_all()?;
|
||||
let actual = render_module("haskell", dir.path(), None);
|
||||
let expected = Some(format!("via {} ", Color::Red.bold().paint("λ v8.6.5")));
|
||||
assert_eq!(expected, actual);
|
||||
dir.close()
|
||||
}
|
||||
#[test]
|
||||
fn folder_with_cabal_file() -> io::Result<()> {
|
||||
let dir = tempfile::tempdir()?;
|
||||
File::create(dir.path().join("test.cabal"))?.sync_all()?;
|
||||
let actual = render_module("haskell", dir.path(), None);
|
||||
let expected = Some(format!("via {} ", Color::Red.bold().paint("λ v8.6.5")));
|
||||
assert_eq!(expected, actual);
|
||||
dir.close()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn folder_with_stack_yaml() -> io::Result<()> {
|
||||
let dir = tempfile::tempdir()?;
|
||||
File::create(dir.path().join("stack.yaml"))?.sync_all()?;
|
||||
let actual = render_module("haskell", dir.path(), None);
|
||||
let expected = Some(format!("via {} ", Color::Red.bold().paint("λ v8.6.5")));
|
||||
assert_eq!(expected, actual);
|
||||
dir.close()
|
||||
}
|
||||
}
|
@ -17,7 +17,6 @@ mod git_commit;
|
||||
mod git_state;
|
||||
mod git_status;
|
||||
mod golang;
|
||||
mod haskell;
|
||||
mod hg_branch;
|
||||
mod hostname;
|
||||
mod java;
|
||||
@ -72,7 +71,6 @@ pub fn handle<'a>(module: &str, context: &'a Context) -> Option<Module<'a>> {
|
||||
"git_state" => git_state::module(context),
|
||||
"git_status" => git_status::module(context),
|
||||
"golang" => golang::module(context),
|
||||
"haskell" => haskell::module(context),
|
||||
"hg_branch" => hg_branch::module(context),
|
||||
"hostname" => hostname::module(context),
|
||||
"java" => java::module(context),
|
||||
@ -124,7 +122,6 @@ pub fn description(module: &str) -> &'static str {
|
||||
"git_state" => "The current git operation, and it's progress",
|
||||
"git_status" => "Symbol representing the state of the repo",
|
||||
"golang" => "The currently installed version of Golang",
|
||||
"haskell" => "The currently used version of Haskell",
|
||||
"hg_branch" => "The active branch of the repo in your current directory",
|
||||
"hostname" => "The system hostname",
|
||||
"java" => "The currently installed version of Java",
|
||||
|
Loading…
Reference in New Issue
Block a user