Skip to content

Commit 3a98682

Browse files
committed
refactor: remove interact subcommand and increase task select page size to 12
Remove the vp interact subcommand and interactions-no-vp test fixture as they are no longer needed. Remove crossterm and pty_terminal_test_client dependencies from vite_task_bin that were only used by the interact command. Increase interactive task select page_size from 8 to 12. Add extra tasks to the task-select fixture to ensure paging behavior is still tested.
1 parent e2dfe1a commit 3a98682

20 files changed

Lines changed: 87 additions & 266 deletions

Cargo.lock

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/vite_task/src/session/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ impl<'a> Session<'a> {
356356
items: &select_items,
357357
query: not_found_name,
358358
header: header.as_deref(),
359-
page_size: 8,
359+
page_size: 12,
360360
};
361361

362362
vite_select::select_list(

crates/vite_task_bin/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ path = "src/main.rs"
1414
anyhow = { workspace = true }
1515
async-trait = { workspace = true }
1616
clap = { workspace = true, features = ["derive"] }
17-
crossterm = { workspace = true }
1817
jsonc-parser = { workspace = true }
19-
pty_terminal_test_client = { workspace = true }
2018
rustc-hash = { workspace = true }
2119
serde_json = { workspace = true }
2220
tokio = { workspace = true, features = ["full"] }

crates/vite_task_bin/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ pub enum Args {
8484
name: Str,
8585
value: Str,
8686
},
87-
Interact,
8887
#[command(flatten)]
8988
Task(Command),
9089
}
@@ -131,7 +130,6 @@ impl vite_task::CommandHandler for CommandHandler {
131130
envs: Arc::new(envs),
132131
}))
133132
}
134-
Args::Interact => Ok(HandledCommand::Verbatim),
135133
Args::Task(cli_command) => Ok(HandledCommand::ViteTaskCommand(cli_command)),
136134
}
137135
}

crates/vite_task_bin/src/main.rs

Lines changed: 1 addition & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
use std::{
2-
io::{IsTerminal, Read, Write},
3-
process::ExitCode,
4-
sync::Arc,
5-
};
1+
use std::{process::ExitCode, sync::Arc};
62

73
use clap::Parser;
84
use vite_str::Str;
@@ -25,7 +21,6 @@ async fn run() -> anyhow::Result<ExitStatus> {
2521
let mut owned_callbacks = OwnedSessionCallbacks::default();
2622
let session = Session::init(owned_callbacks.as_callbacks())?;
2723
match args {
28-
Args::Interact => run_interact(),
2924
Args::Task(command) => {
3025
#[expect(clippy::large_futures, reason = "session.main produces a large future")]
3126
{
@@ -67,155 +62,3 @@ async fn run() -> anyhow::Result<ExitStatus> {
6762
}
6863
}
6964
}
70-
71-
fn write_line(stdout: &mut impl Write, line: &[u8]) -> anyhow::Result<()> {
72-
stdout.write_all(line)?;
73-
stdout.write_all(b"\r\n")?;
74-
stdout.flush()?;
75-
Ok(())
76-
}
77-
78-
fn write_milestone(stdout: &mut impl Write, name: &str) -> anyhow::Result<()> {
79-
stdout.write_all(&pty_terminal_test_client::encoded_milestone(name))?;
80-
stdout.flush()?;
81-
Ok(())
82-
}
83-
84-
struct RawModeGuard {
85-
enabled: bool,
86-
}
87-
88-
impl RawModeGuard {
89-
fn new(enabled: bool) -> anyhow::Result<Self> {
90-
if enabled {
91-
crossterm::terminal::enable_raw_mode()?;
92-
}
93-
Ok(Self { enabled })
94-
}
95-
96-
fn disable(&mut self) -> anyhow::Result<()> {
97-
if self.enabled {
98-
crossterm::terminal::disable_raw_mode()?;
99-
self.enabled = false;
100-
}
101-
Ok(())
102-
}
103-
}
104-
105-
impl Drop for RawModeGuard {
106-
fn drop(&mut self) {
107-
if self.enabled {
108-
let _ = crossterm::terminal::disable_raw_mode();
109-
}
110-
}
111-
}
112-
113-
fn run_interact() -> anyhow::Result<ExitStatus> {
114-
let stdin_is_tty = std::io::stdin().is_terminal();
115-
let enable_raw_mode = if cfg!(windows) { true } else { stdin_is_tty };
116-
let mut raw_mode = RawModeGuard::new(enable_raw_mode)?;
117-
118-
let mut stdin = std::io::stdin();
119-
let mut stdout = std::io::stdout();
120-
let mut text_buffer = Vec::<u8>::new();
121-
let mut ansi_escape_pending = false;
122-
let mut ansi_csi_pending = false;
123-
let mut windows_extended_key_pending = false;
124-
125-
write_line(&mut stdout, b"START")?;
126-
write_milestone(&mut stdout, "ready")?;
127-
128-
loop {
129-
let mut byte = [0u8; 1];
130-
let read_count = stdin.read(&mut byte)?;
131-
if read_count == 0 {
132-
break;
133-
}
134-
135-
let byte = byte[0];
136-
if ansi_escape_pending {
137-
ansi_escape_pending = false;
138-
139-
if byte == b'[' || byte == b'O' {
140-
ansi_csi_pending = true;
141-
continue;
142-
}
143-
}
144-
145-
if ansi_csi_pending {
146-
ansi_csi_pending = false;
147-
148-
if byte == b'A' {
149-
write_milestone(&mut stdout, "after-up")?;
150-
continue;
151-
}
152-
153-
if byte == b'B' {
154-
write_milestone(&mut stdout, "after-down")?;
155-
continue;
156-
}
157-
}
158-
159-
if windows_extended_key_pending {
160-
windows_extended_key_pending = false;
161-
162-
if byte == 72 {
163-
write_milestone(&mut stdout, "after-up")?;
164-
continue;
165-
}
166-
167-
if byte == 80 {
168-
write_milestone(&mut stdout, "after-down")?;
169-
continue;
170-
}
171-
}
172-
173-
if byte == 0x1b {
174-
ansi_escape_pending = true;
175-
continue;
176-
}
177-
178-
if byte == 0x00 || byte == 0xe0 {
179-
windows_extended_key_pending = true;
180-
continue;
181-
}
182-
183-
if byte == b'\r' {
184-
if text_buffer.is_empty() {
185-
write_line(&mut stdout, b"KEY:ENTER")?;
186-
raw_mode.disable()?;
187-
write_line(&mut stdout, b"DONE")?;
188-
write_milestone(&mut stdout, "after-enter")?;
189-
return Ok(ExitStatus::SUCCESS);
190-
}
191-
192-
stdout.write_all(b"LINE:")?;
193-
stdout.write_all(&text_buffer)?;
194-
stdout.write_all(b"\r\n")?;
195-
stdout.flush()?;
196-
text_buffer.clear();
197-
write_milestone(&mut stdout, "after-line")?;
198-
continue;
199-
}
200-
201-
if byte == b'\n' {
202-
if !text_buffer.is_empty() {
203-
stdout.write_all(b"LINE:")?;
204-
stdout.write_all(&text_buffer)?;
205-
stdout.write_all(b"\r\n")?;
206-
stdout.flush()?;
207-
text_buffer.clear();
208-
write_milestone(&mut stdout, "after-line")?;
209-
}
210-
continue;
211-
}
212-
213-
text_buffer.push(byte);
214-
stdout.write_all(b"CHAR:")?;
215-
stdout.write_all(&[byte])?;
216-
stdout.write_all(b"\r\n")?;
217-
stdout.flush()?;
218-
}
219-
220-
Ok(ExitStatus::SUCCESS)
221-
}

crates/vite_task_bin/tests/e2e_snapshots/fixtures/interactions-no-vp/package.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

crates/vite_task_bin/tests/e2e_snapshots/fixtures/interactions-no-vp/snapshots.toml

Lines changed: 0 additions & 6 deletions
This file was deleted.

crates/vite_task_bin/tests/e2e_snapshots/fixtures/interactions-no-vp/snapshots/interactions without vp.snap

Lines changed: 0 additions & 77 deletions
This file was deleted.

crates/vite_task_bin/tests/e2e_snapshots/fixtures/task-select/snapshots/interactive escape clears query.snap

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ Search task (↑/↓ to move, enter to select):
1313
lib#test: echo test lib
1414
lib#typecheck: echo typecheck lib
1515
task-select-test#check: echo check root
16-
(…4 more)
16+
task-select-test#clean: echo clean root
17+
task-select-test#deploy: echo deploy root
18+
task-select-test#docs: echo docs root
19+
task-select-test#format: echo format root
20+
(…3 more)
1721
@ write: lin
1822
@ expect-milestone: task-select:lin:0
1923
Search task (↑/to move, enter to select): lin
@@ -30,7 +34,11 @@ Search task (↑/↓ to move, enter to select):
3034
lib#test: echo test lib
3135
lib#typecheck: echo typecheck lib
3236
task-select-test#check: echo check root
33-
(…4 more)
37+
task-select-test#clean: echo clean root
38+
task-select-test#deploy: echo deploy root
39+
task-select-test#docs: echo docs root
40+
task-select-test#format: echo format root
41+
(…3 more)
3442
@ write-key: enter
3543
~/packages/app$ echo build appcache disabled: built-in command
3644
build app

crates/vite_task_bin/tests/e2e_snapshots/fixtures/task-select/snapshots/interactive scroll long list.snap

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ Search task (↑/↓ to move, enter to select):
1313
lib#test: echo test lib
1414
lib#typecheck: echo typecheck lib
1515
task-select-test#check: echo check root
16-
(…4 more)
16+
task-select-test#clean: echo clean root
17+
task-select-test#deploy: echo deploy root
18+
task-select-test#docs: echo docs root
19+
task-select-test#format: echo format root
20+
(…3 more)
1721
@ write-key: down
1822
@ write-key: down
1923
@ write-key: down
@@ -24,14 +28,18 @@ Search task (↑/↓ to move, enter to select):
2428
@ write-key: down
2529
@ expect-milestone: task-select::8
2630
Search task (↑/to move, enter to select):
31+
build: echo build app
2732
lint: echo lint app
2833
test: echo test app
2934
lib#build: echo build lib
3035
lib#lint: echo lint lib
3136
lib#test: echo test lib
3237
lib#typecheck: echo typecheck lib
3338
task-select-test#check: echo check root
34-
> task-select-test#format: echo format root
39+
> task-select-test#clean: echo clean root
40+
task-select-test#deploy: echo deploy root
41+
task-select-test#docs: echo docs root
42+
task-select-test#format: echo format root
3543
(…3 more)
3644
@ write-key: up
3745
@ write-key: up
@@ -51,7 +59,11 @@ Search task (↑/↓ to move, enter to select):
5159
lib#test: echo test lib
5260
lib#typecheck: echo typecheck lib
5361
task-select-test#check: echo check root
54-
(…4 more)
62+
task-select-test#clean: echo clean root
63+
task-select-test#deploy: echo deploy root
64+
task-select-test#docs: echo docs root
65+
task-select-test#format: echo format root
66+
(…3 more)
5567
@ write-key: enter
5668
~/packages/app$ echo build appcache disabled: built-in command
5769
build app

0 commit comments

Comments
 (0)