This repository was archived by the owner on Jan 22, 2026. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1111require_relative "pkgs/ecosystems"
1212require_relative "pkgs/osv_client"
1313require_relative "pkgs/ecosystems_client"
14+ require_relative "pkgs/spinner"
1415
1516require_relative "pkgs/purl_helper"
1617require_relative "pkgs/models/branch"
Original file line number Diff line number Diff line change @@ -201,7 +201,9 @@ def enrich_packages(purls)
201201
202202 client = EcosystemsClient . new
203203 begin
204- results = client . bulk_lookup ( stale_purls )
204+ results = Spinner . with_spinner ( "Fetching package metadata..." ) do
205+ client . bulk_lookup ( stale_purls )
206+ end
205207 results . each do |purl , data |
206208 packages_by_purl [ purl ] &.enrich_from_api ( data )
207209 end
Original file line number Diff line number Diff line change @@ -158,7 +158,9 @@ def enrich_packages(purls)
158158
159159 client = EcosystemsClient . new
160160 begin
161- results = client . bulk_lookup ( stale_purls )
161+ results = Spinner . with_spinner ( "Fetching package metadata..." ) do
162+ client . bulk_lookup ( stale_purls )
163+ end
162164 results . each do |purl , data |
163165 packages_by_purl [ purl ] &.enrich_from_api ( data )
164166 end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ module Git
4+ module Pkgs
5+ class Spinner
6+ FRAMES = %w[ ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏ ] . freeze
7+ INTERVAL = 0.08
8+
9+ def initialize ( message )
10+ @message = message
11+ @running = false
12+ @thread = nil
13+ end
14+
15+ def start
16+ return unless $stdout. tty? && !Git ::Pkgs . quiet
17+
18+ @running = true
19+ @frame_index = 0
20+ @thread = Thread . new do
21+ while @running
22+ print "\r #{ FRAMES [ @frame_index ] } #{ @message } "
23+ @frame_index = ( @frame_index + 1 ) % FRAMES . length
24+ sleep INTERVAL
25+ end
26+ end
27+ end
28+
29+ def stop
30+ return unless @thread
31+
32+ @running = false
33+ @thread . join
34+ print "\r #{ " " * ( @message . length + 3 ) } \r "
35+ end
36+
37+ def self . with_spinner ( message )
38+ spinner = new ( message )
39+ spinner . start
40+ yield
41+ ensure
42+ spinner . stop
43+ end
44+ end
45+ end
46+ end
You can’t perform that action at this time.
0 commit comments