Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion crates/vite_select/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ workspace = true
anyhow = { workspace = true }
crossterm = { workspace = true }
nucleo-matcher = { workspace = true }
owo-colors = { workspace = true }
vite_str = { path = "../vite_str" }

[dev-dependencies]
Expand Down
84 changes: 73 additions & 11 deletions crates/vite_select/src/interactive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@ use std::io::{Write, stdout};
use crossterm::{
cursor::{self, MoveToColumn},
event::{self, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers},
style::{Attribute, SetAttribute},
style::{Attribute, Color, ResetColor, SetAttribute, SetForegroundColor},
terminal::{self, Clear, ClearType},
};
use owo_colors::{OwoColorize, Stream};

use crate::{RenderState, SelectItem, fuzzy::fuzzy_match};

Expand Down Expand Up @@ -144,21 +143,21 @@ pub fn render_items(writer: &mut impl Write, params: &RenderParams<'_>) -> anyho
lines += 1;
}

let is_interactive = query.is_some();

// Prompt line (interactive only)
if let Some(q) = query {
let bold = SetAttribute(Attribute::Bold);
let reset = SetAttribute(Attribute::Reset);
// Print ": " separator before query only when query is non-empty,
// to avoid a trailing space that Windows ConPTY would strip.
if q.is_empty() {
write!(
writer,
"{bold}Search task{reset} (\u{2191}/\u{2193} to move, enter to select):{line_ending}",
"Select a task (\u{2191}/\u{2193}, Enter to run, Esc to clear):{line_ending}",
)?;
} else {
write!(
writer,
"{bold}Search task{reset} (\u{2191}/\u{2193} to move, enter to select): {q}{line_ending}",
"Select a task (\u{2191}/\u{2193}, Enter to run, Esc to clear): {q}{line_ending}",
)?;
}
lines += 1;
Expand All @@ -171,8 +170,12 @@ pub fn render_items(writer: &mut impl Write, params: &RenderParams<'_>) -> anyho
let is_selected = *selected_in_filtered == Some(vi);

// Truncate description to prevent line wrapping.
// Line layout: prefix (2: "> " or " ") + label + ": " (2) + description
let prefix_and_label_width = 2 + item.label.chars().count() + 2;
// Line layout:
// - interactive prefix is " › " or " " (4 chars)
// - non-interactive prefix is " " (2 chars)
// then label + ": " + description
let prefix_width = if is_interactive { 4 } else { 2 };
let prefix_and_label_width = prefix_width + item.label.chars().count() + 2;
let max_desc_chars = params.max_line_width.saturating_sub(prefix_and_label_width);
let desc_str = item.description.as_str();
let desc_char_count = desc_str.chars().count();
Expand All @@ -186,18 +189,37 @@ pub fn render_items(writer: &mut impl Write, params: &RenderParams<'_>) -> anyho
} else {
desc_str
};
let desc = display_desc.if_supports_color(Stream::Stdout, |s| s.cyan());

if is_selected {
if is_selected && is_interactive {
write!(
writer,
"{blue}{bold} \u{203a} {label}: {desc}{reset}{line_ending}",
blue = SetForegroundColor(Color::Blue),
bold = SetAttribute(Attribute::Bold),
label = item.label,
desc = display_desc,
reset = SetAttribute(Attribute::Reset),
)?;
} else if is_interactive {
write!(
writer,
"{marker_color} {reset_color}{}:{command_color} {display_desc}{reset_color}{line_ending}",
item.label,
marker_color = SetForegroundColor(Color::DarkGrey),
command_color = SetForegroundColor(Color::Grey),
reset_color = ResetColor,
)?;
} else if is_selected {
write!(
writer,
"{bold}> {label}: {desc}{reset}{line_ending}",
bold = SetAttribute(Attribute::Bold),
label = item.label,
desc = display_desc,
reset = SetAttribute(Attribute::Reset),
)?;
} else {
write!(writer, " {}: {desc}{line_ending}", item.label)?;
write!(writer, " {}: {display_desc}{line_ending}", item.label)?;
}
lines += 1;
}
Expand Down Expand Up @@ -401,6 +423,33 @@ mod tests {
strip_ansi(&String::from_utf8(buf).unwrap())
}

#[expect(clippy::disallowed_types, reason = "test helper building arbitrary output string")]
fn render_interactive_to_string(
items: &[SelectItem],
query: &str,
max_line_width: usize,
) -> String {
let filtered: Vec<usize> = (0..items.len()).collect();
let len = filtered.len();
let mut buf = Vec::new();
render_items(
&mut buf,
&RenderParams {
items,
filtered: &filtered,
selected_in_filtered: Some(0),
visible_range: 0..len,
hidden_count: 0,
header: None,
query: Some(query),
line_ending: "\n",
max_line_width,
},
)
.unwrap();
strip_ansi(&String::from_utf8(buf).unwrap())
}

#[test]
fn truncates_long_description() {
let items = make_items(&[("build", "a]really long command that exceeds the width limit")]);
Expand Down Expand Up @@ -463,4 +512,17 @@ mod tests {
let line = output.lines().next().unwrap();
assert!(line.contains("my-task"), "label should always be preserved: {line:?}");
}

#[test]
fn interactive_style_matches_vp_selector_marker_and_indent() {
let items = make_items(&[("build", "echo build"), ("lint", "echo lint")]);
let output = render_interactive_to_string(&items, "", 80);
let mut lines = output.lines();
let prompt = lines.next().unwrap();
let selected = lines.next().unwrap();
let unselected = lines.next().unwrap();
assert_eq!(prompt, "Select a task (↑/↓, Enter to run, Esc to clear):");
assert_eq!(selected, " › build: echo build");
assert_eq!(unselected, " lint: echo lint");
}
}
2 changes: 1 addition & 1 deletion crates/vite_task/src/session/reporter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ impl<T: owo_colors::OwoColorize> ColorizeExt for T {
}
}

const COMMAND_STYLE: Style = Style::new().cyan();
const COMMAND_STYLE: Style = Style::new().blue();
const CACHE_MISS_STYLE: Style = Style::new().purple();

/// Format the display's cwd as a string relative to the workspace root.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
---
source: crates/vite_task_bin/tests/e2e_snapshots/main.rs
assertion_line: 460
expression: e2e_outputs
---
> vp run list-tasks
@ expect-milestone: task-select::0
$ vp run ⊘ cache disabled
Search task (↑/↓ to move, enter to select):
> hello: echo hello from root
list-tasks: vp run
app#build: echo build app
app#lint: echo lint app
app#test: echo test app
lib#build: echo build lib
Select a task (↑/↓, Enter to run, Esc to clear):
hello: echo hello from root
list-tasks: vp run
app#build: echo build app
app#lint: echo lint app
app#test: echo test app
lib#build: echo build lib
@ write-key: enter
$ vp run ⊘ cache disabled
Selected task: hello
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,39 @@ info:
---
> vp run
@ expect-milestone: task-select::0
Search task (↑/↓ to move, enter to select):
> build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
@ write-key: down
@ expect-milestone: task-select::1
Search task (↑/↓ to move, enter to select):
build: echo build app
> lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
@ write-key: down
@ expect-milestone: task-select::2
Search task (↑/↓ to move, enter to select):
build: echo build app
lint: echo lint app
> long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
@ write-key: down
@ expect-milestone: task-select::3
Search task (↑/↓ to move, enter to select):
build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
> test: echo test app
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
@ write-key: up
@ expect-milestone: task-select::2
Search task (↑/↓ to move, enter to select):
build: echo build app
lint: echo lint app
> long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
long-cmd: echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
test: echo test app
@ write-key: enter
Selected task: long-cmd
~/packages/app$ echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ⊘ cache disabled
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,40 @@ info:
---
> vp run
@ expect-milestone: task-select::0
Search task (↑/↓ to move, enter to select):
> build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
(…3 more)
@ write: zzzzz
@ expect-milestone: task-select:zzzzz:0
Search task (↑/↓ to move, enter to select): zzzzz
Select a task (↑/↓, Enter to run, Esc to clear): zzzzz
No matching tasks.
@ write-key: enter
@ write-key: escape
@ expect-milestone: task-select::0
Search task (↑/↓ to move, enter to select):
> build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
(…3 more)
@ write-key: enter
Selected task: build
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,40 @@ info:
---
> vp run
@ expect-milestone: task-select::0
Search task (↑/↓ to move, enter to select):
> build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
(…3 more)
@ write: lin
@ expect-milestone: task-select:lin:0
Search task (↑/↓ to move, enter to select): lin
> lint: echo lint app
lib#lint: echo lint lib
Select a task (↑/↓, Enter to run, Esc to clear): lin
lint: echo lint app
lib#lint: echo lint lib
@ write-key: escape
@ expect-milestone: task-select::0
Search task (↑/↓ to move, enter to select):
> build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
Select a task (↑/↓, Enter to run, Esc to clear):
build: echo build app
lint: echo lint app
test: echo test app
lib#build: echo build lib
lib#lint: echo lint lib
lib#test: echo test lib
lib#typecheck: echo typecheck lib
task-select-test#check: echo check root
task-select-test#clean: echo clean root
task-select-test#deploy: echo deploy root
task-select-test#docs: echo docs root
task-select-test#format: echo format root
(…3 more)
@ write-key: enter
Selected task: build
Expand Down
Loading