Skip to content

Commit 9a09318

Browse files
MacFJAdreyfus92
andauthored
feat(prompts): Add progressbar (#290)
Co-authored-by: Paul Valladares <[email protected]>
1 parent fb55d6e commit 9a09318

File tree

8 files changed

+955
-22
lines changed

8 files changed

+955
-22
lines changed

.changeset/slimy-roses-own.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@clack/prompts": minor
3+
---
4+
5+
Adds new `progress` prompt to display a progess-bar

examples/basic/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"scripts": {
1212
"start": "jiti ./index.ts",
1313
"stream": "jiti ./stream.ts",
14+
"progress": "jiti ./progress.ts",
1415
"spinner": "jiti ./spinner.ts",
1516
"spinner-ci": "npx cross-env CI=\"true\" jiti ./spinner-ci.ts",
1617
"spinner-timer": "jiti ./spinner-timer.ts"

examples/basic/progress.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { setTimeout } from 'node:timers/promises';
2+
import * as p from '@clack/prompts';
3+
import type { ProgressResult } from '@clack/prompts';
4+
5+
async function fakeProgress(progressbar: ProgressResult): Promise<void> {
6+
await setTimeout(1000);
7+
for (const i in Array(10).fill(1)) {
8+
progressbar.advance();
9+
await setTimeout(100 + Math.random() * 500);
10+
}
11+
}
12+
13+
async function demo() {
14+
p.intro('progress start...');
15+
16+
const download = p.progress({ style: 'block', max: 10, size: 30 });
17+
download.start('Downloading package');
18+
await fakeProgress(download);
19+
download.stop('Download completed');
20+
21+
const unarchive = p.progress({ style: 'heavy', max: 10, size: 30, indicator: undefined });
22+
unarchive.start('Un-archiving');
23+
await fakeProgress(unarchive);
24+
unarchive.stop('Un-archiving completed');
25+
26+
const linking = p.progress({ style: 'light', max: 10, size: 30, indicator: 'timer' });
27+
linking.start('Linking');
28+
await fakeProgress(linking);
29+
linking.stop('Package linked');
30+
31+
p.outro('progress stop...');
32+
}
33+
34+
void demo();

0 commit comments

Comments
 (0)