progress_bar_none_overload_3000 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +250 -0
- data/lib/cockpit3000.rb +1 -0
- data/lib/progressbarnone.rb +1 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/ansi/360/237/246/253.rb +426 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/bar/360/237/246/253.rb +234 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/download_thread_state/360/237/246/253.rb +249 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/enumerable_extension/360/237/246/253.rb +115 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/frames/360/237/246/253.rb +224 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/gantt/360/237/246/253.rb +356 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/graphics/360/237/246/253.rb +315 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/metrics/360/237/246/253.rb +150 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/multi_bar/360/237/246/253.rb +379 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/progressbar_compat/360/237/246/253.rb +132 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/renderer/360/237/246/253.rb +473 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/sparkline/360/237/246/253.rb +158 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none/version/360/237/246/253.rb +5 -0
- data/lib/progress/360/237/246/253bar/360/237/246/253none.rb +108 -0
- metadata +139 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 719f7523aadebfd84b5272fa56fd14853b224a1b7e2f0468296c0370ac9660a3
|
|
4
|
+
data.tar.gz: d4628bc971a432526985a25985f4851298aa4a2c46769c2b6ce19b56e356459d
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 98fde7f1c59ad16e7c3c9145bb67c3ffdef172362b4113862b30af8bc2a07d8f325bf892b5a782a9771d12e18697fcfb27dbf4d448f3b6fa5d6911c823f6fe1e
|
|
7
|
+
data.tar.gz: 3d3439f3a568b8d74835e7ee23269e28d3cde012e0f8315751d9b4f7d62efe5273e7be6f40f7015006fca0f68505c710212f26b26b0b3341f095f59dd18e56b8
|
data/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Licensing
|
|
2
|
+
|
|
3
|
+
This project is governed by multiple terms and policies:
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Free Art License 1.1
|
|
7
|
+
|
|
8
|
+
<https://artlibre.org/licence/lal/en/>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Protein Database Terms of Service
|
|
12
|
+
|
|
13
|
+
<https://www.rcsb.org/pages/policies>
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Anna's Archive Privacy Policy
|
|
17
|
+
|
|
18
|
+
<https://annas-archive.org/privacy>
|
|
19
|
+
|
|
20
|
+
SPDX-License-Identifier: CC0-1.0
|
data/README.md
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# PROGRESSπ¦«BARπ¦«NONE
|
|
2
|
+
|
|
3
|
+
Animated progress bars for Ruby CLI applications with 15+ color palettes, 20+ bar styles, real-time metrics, sparkline graphs, Gantt charts, and terminal graphics support.
|
|
4
|
+
|
|
5
|
+
Brand name: `PROGRESSπ¦«BARπ¦«NONE`. Ruby API aliases: `Cockpit3000`, `PROGRESSBARNONE`, `ProgressBarNone` -- all equivalent.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Add to your Gemfile:
|
|
10
|
+
|
|
11
|
+
~~~ruby
|
|
12
|
+
gem "progress_bar_none_overload_3000"
|
|
13
|
+
~~~
|
|
14
|
+
|
|
15
|
+
Or install directly:
|
|
16
|
+
|
|
17
|
+
~~~bash
|
|
18
|
+
gem install progress_bar_none_overload_3000
|
|
19
|
+
~~~
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
- **Color gradients** -- 15+ palettes with true-color RGB interpolation (crystal, fire, ocean, neon, synthwave, vaporwave, acid, matrix, and more)
|
|
24
|
+
- **Bar styles** -- 20+ styles including crystal, blocks, dots, fire, nyan, matrix, glitch, electric, cyberpunk
|
|
25
|
+
- **Spinners** -- 27 spinner animations (braille, moon, clock, arrows, rocket, etc.)
|
|
26
|
+
- **Real-time metrics** -- Automatic avg/min/max/cumulative tracking with sparkline graphs
|
|
27
|
+
- **Gantt charts** -- Task timeline rendering with SVG export and Tufte-inspired defaults
|
|
28
|
+
- **Multi-bar** -- Nested progress bars with automatic palette/style cycling
|
|
29
|
+
- **Terminal graphics** -- Kitty and iTerm2 inline image protocol support
|
|
30
|
+
- **Decorative frames** -- ASCII borders, banners, and title frames
|
|
31
|
+
- **Simple API** -- `.with_progress` on any Enumerable
|
|
32
|
+
- **Zero dependencies** -- Pure Ruby
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
~~~ruby
|
|
37
|
+
require "cockpit3000"
|
|
38
|
+
|
|
39
|
+
(1..100).with_progress.each do |i|
|
|
40
|
+
sleep(0.01)
|
|
41
|
+
end
|
|
42
|
+
~~~
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
### Basic progress bar
|
|
47
|
+
|
|
48
|
+
~~~ruby
|
|
49
|
+
# Simple progress
|
|
50
|
+
items.with_progress.each { |item| process(item) }
|
|
51
|
+
|
|
52
|
+
# With title
|
|
53
|
+
items.with_progress(title: "Processing").each { |item| process(item) }
|
|
54
|
+
|
|
55
|
+
# Custom style and palette
|
|
56
|
+
items.with_progress(
|
|
57
|
+
title: "Loading",
|
|
58
|
+
style: :blocks,
|
|
59
|
+
palette: :fire,
|
|
60
|
+
width: 50
|
|
61
|
+
).each { |item| load(item) }
|
|
62
|
+
~~~
|
|
63
|
+
|
|
64
|
+
### Tracking custom metrics
|
|
65
|
+
|
|
66
|
+
Return a hash from your block to automatically track metrics:
|
|
67
|
+
|
|
68
|
+
~~~ruby
|
|
69
|
+
files.with_progress(title: "Analyzing Files").each do |file|
|
|
70
|
+
content = File.read(file)
|
|
71
|
+
|
|
72
|
+
# Return metrics -- they are tracked and displayed
|
|
73
|
+
{
|
|
74
|
+
size_kb: content.bytesize / 1024.0,
|
|
75
|
+
lines: content.lines.count,
|
|
76
|
+
words: content.split.count
|
|
77
|
+
}
|
|
78
|
+
end
|
|
79
|
+
~~~
|
|
80
|
+
|
|
81
|
+
This displays real-time sparkline graphs for each metric showing:
|
|
82
|
+
|
|
83
|
+
- **avg** -- Running average
|
|
84
|
+
- **min** -- Minimum value seen
|
|
85
|
+
- **max** -- Maximum value seen
|
|
86
|
+
- **sum** -- Cumulative sum
|
|
87
|
+
|
|
88
|
+
### Direct API
|
|
89
|
+
|
|
90
|
+
For more control, use the `Bar` class directly:
|
|
91
|
+
|
|
92
|
+
~~~ruby
|
|
93
|
+
bar = ProgressBarNone::Bar.new(
|
|
94
|
+
total: items.count,
|
|
95
|
+
title: "Processing",
|
|
96
|
+
palette: :ocean
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
bar.start
|
|
100
|
+
|
|
101
|
+
items.each do |item|
|
|
102
|
+
result = process(item)
|
|
103
|
+
bar.increment(metrics: { duration: result.time, size: result.bytes })
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
bar.finish
|
|
107
|
+
~~~
|
|
108
|
+
|
|
109
|
+
### Multi-bar (nested progress)
|
|
110
|
+
|
|
111
|
+
~~~ruby
|
|
112
|
+
multi = ProgressBarNone::MultiBar.new(title: "Build pipeline")
|
|
113
|
+
|
|
114
|
+
phases = [
|
|
115
|
+
{ name: "Compile", units: 10, palette: :forest, style: :blocks },
|
|
116
|
+
{ name: "Link", units: 6, palette: :sunset, style: :crystal },
|
|
117
|
+
{ name: "Package", units: 4, palette: :ocean, style: :dots }
|
|
118
|
+
]
|
|
119
|
+
|
|
120
|
+
phases.each do |phase|
|
|
121
|
+
(1..phase[:units]).with_progress(
|
|
122
|
+
title: phase[:name],
|
|
123
|
+
palette: phase[:palette],
|
|
124
|
+
style: phase[:style]
|
|
125
|
+
).each { |_i| sleep(0.05) }
|
|
126
|
+
end
|
|
127
|
+
~~~
|
|
128
|
+
|
|
129
|
+
### Terminal presets
|
|
130
|
+
|
|
131
|
+
~~~ruby
|
|
132
|
+
# Light terminal (higher contrast)
|
|
133
|
+
(1..30).with_progress(
|
|
134
|
+
title: "Day shift",
|
|
135
|
+
palette: :ocean,
|
|
136
|
+
style: :blocks,
|
|
137
|
+
spinner: :clock
|
|
138
|
+
).each { sleep(0.03) }
|
|
139
|
+
|
|
140
|
+
# Dark terminal (neon aesthetics)
|
|
141
|
+
(1..30).with_progress(
|
|
142
|
+
title: "Night shift",
|
|
143
|
+
palette: :matrix,
|
|
144
|
+
style: :cyberpunk,
|
|
145
|
+
rainbow_mode: true,
|
|
146
|
+
spinner: :sparkle,
|
|
147
|
+
glow: true
|
|
148
|
+
).each { sleep(0.03) }
|
|
149
|
+
~~~
|
|
150
|
+
|
|
151
|
+
### ProgressBar compatibility
|
|
152
|
+
|
|
153
|
+
Drop-in replacement for the `ruby-progressbar` API:
|
|
154
|
+
|
|
155
|
+
~~~ruby
|
|
156
|
+
bar = ProgressBar.create(total: 100, title: "Working")
|
|
157
|
+
100.times { bar.increment }
|
|
158
|
+
bar.finish
|
|
159
|
+
~~~
|
|
160
|
+
|
|
161
|
+
## Styles
|
|
162
|
+
|
|
163
|
+
| Style | Characters | Best for |
|
|
164
|
+
| ------- | --------- | -------- |
|
|
165
|
+
| `:crystal` | `β¨βββββββββ©` | Modern terminals |
|
|
166
|
+
| `:blocks` | `[ββββββββ]` | Standard look |
|
|
167
|
+
| `:dots` | `(ββββββββ)` | Minimal |
|
|
168
|
+
| `:arrows` | `Β«βΆβΆβΆβΆβΉβΉβΉβΉΒ»` | Directional |
|
|
169
|
+
| `:ascii` | `[####----]` | Maximum compatibility |
|
|
170
|
+
|
|
171
|
+
## Color palettes
|
|
172
|
+
|
|
173
|
+
| Palette | Colors | Mood |
|
|
174
|
+
| --------- | ------ | ------ |
|
|
175
|
+
| `:crystal` | Cyan to Purple to Pink | Elegant, modern |
|
|
176
|
+
| `:fire` | Orange to Yellow | Warm, energetic |
|
|
177
|
+
| `:ocean` | Deep blue to Turquoise | Calm, professional |
|
|
178
|
+
| `:forest` | Deep green to Light green | Natural, growth |
|
|
179
|
+
| `:sunset` | Purple to Orange to Yellow | Vibrant, dramatic |
|
|
180
|
+
| `:rainbow` | Full spectrum | Colorful |
|
|
181
|
+
| `:mono` | Grayscale | Subtle, accessible |
|
|
182
|
+
|
|
183
|
+
## Display elements
|
|
184
|
+
|
|
185
|
+
~~~text
|
|
186
|
+
Processing Items
|
|
187
|
+
45.0% β¨βββββββββββββββββββββββββββββββββββββββ©
|
|
188
|
+
β Ή 45/100 4.5/s 10.0s ETA 12.2s
|
|
189
|
+
|
|
190
|
+
latency_ms βββββ
βββββ
ββββ avg:45.2 min:12 max:89 sum:2034
|
|
191
|
+
throughput βββ
ββββββββ
βββ avg:1.2K min:800 max:2.1K sum:54K
|
|
192
|
+
~~~
|
|
193
|
+
|
|
194
|
+
Elements shown: progress percentage, animated progress bar, spinner, items completed/total, processing rate, elapsed time, ETA, and custom metrics with sparkline graphs.
|
|
195
|
+
|
|
196
|
+
## Requirements
|
|
197
|
+
|
|
198
|
+
- Ruby 4.0+
|
|
199
|
+
- Terminal with Unicode support (for best results)
|
|
200
|
+
- True color support recommended (falls back gracefully)
|
|
201
|
+
|
|
202
|
+
## Demo
|
|
203
|
+
|
|
204
|
+
Run the interactive demo:
|
|
205
|
+
|
|
206
|
+
~~~bash
|
|
207
|
+
ruby bin/demo
|
|
208
|
+
~~~
|
|
209
|
+
|
|
210
|
+
## Benchmarks
|
|
211
|
+
|
|
212
|
+
Run locally:
|
|
213
|
+
|
|
214
|
+
~~~bash
|
|
215
|
+
ruby test/benchmarkπ¦«_test.rb # human-readable table
|
|
216
|
+
ruby test/benchmarkπ¦«_test.rb --json # JSON for CI ingestion
|
|
217
|
+
BENCH_JSON=1 ruby test/benchmarkπ¦«_test.rb --compare prior.json # compare against a prior run
|
|
218
|
+
~~~
|
|
219
|
+
|
|
220
|
+
CI runs the full matrix (Ruby versions x OS x shell) on every push to main and archives results in `docs/benchmarks/`. The collation script (`bin/collate_benchmarks.rb`) generates comparison tables across environments.
|
|
221
|
+
|
|
222
|
+
### Local baseline (CRuby 4.0.2 / macOS / zsh)
|
|
223
|
+
|
|
224
|
+
| Benchmark | Wall (s) | CPU (s) | Mem delta (KB) | Objects |
|
|
225
|
+
| --- | ---: | ---: | ---: | ---: |
|
|
226
|
+
| `ansi_strip_10k_calls` | 0.4458 | 0.4420 | 21,392 | 30,023 |
|
|
227
|
+
| `sparkline_1000_values` | 0.0644 | 0.0638 | 2,496 | 150,042 |
|
|
228
|
+
| `memory_stress_100_bars` | 0.0150 | 0.0149 | 1,408 | 64,524 |
|
|
229
|
+
| `ansi_color_18_palettes_x_1000` | 0.0111 | 0.0111 | 672 | 61,001 |
|
|
230
|
+
| `frames_all_styles` | 0.0054 | 0.0053 | 0 | 44,832 |
|
|
231
|
+
| `basic_progress_5000` | 0.0037 | 0.0037 | 32 | 15,362 |
|
|
232
|
+
| `direct_bar_api_5000` | 0.0035 | 0.0035 | 0 | 15,372 |
|
|
233
|
+
| `all_28_spinners` | 0.0030 | 0.0030 | 336 | 13,714 |
|
|
234
|
+
| `all_21_styles` | 0.0022 | 0.0022 | 32 | 10,405 |
|
|
235
|
+
| `all_18_palettes` | 0.0021 | 0.0021 | 576 | 8,335 |
|
|
236
|
+
| **Total (20 benchmarks)** | **0.564** | **0.559** | **peak: 49 MB** | **433,728** |
|
|
237
|
+
|
|
238
|
+
## License
|
|
239
|
+
|
|
240
|
+
This project is governed by multiple terms and policies:
|
|
241
|
+
|
|
242
|
+
- [Free Art License 1.1](https://artlibre.org/licence/lal/en/)
|
|
243
|
+
- [Protein Database Terms of Service](https://www.rcsb.org/pages/policies)
|
|
244
|
+
- [Anna's Archive Privacy Policy](https://annas-archive.org/privacy)
|
|
245
|
+
|
|
246
|
+
SPDX: CC0-1.0. See `LICENSE` for details.
|
|
247
|
+
|
|
248
|
+
## Author
|
|
249
|
+
|
|
250
|
+
Karl Amort -- [Bluesky](https://bsky.app/profile/amort.berlin) / [X](https://x.com/amortberlin)
|
data/lib/cockpit3000.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require_relative "progressbarnone"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require_relative "progressπ¦«barπ¦«none"
|