rfix 2.0.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/exe/rfix +11 -90
  3. data/lib/rfix.rb +10 -9
  4. data/lib/rfix/branch/reference.rb +2 -2
  5. data/lib/rfix/branch/upstream.rb +2 -4
  6. data/lib/rfix/cli/command.rb +14 -1
  7. data/lib/rfix/cli/command/all.rb +21 -0
  8. data/lib/rfix/cli/command/base.rb +30 -19
  9. data/lib/rfix/cli/command/branch.rb +2 -0
  10. data/lib/rfix/cli/command/help.rb +2 -0
  11. data/lib/rfix/cli/command/info.rb +6 -1
  12. data/lib/rfix/cli/command/local.rb +2 -0
  13. data/lib/rfix/cli/command/origin.rb +2 -0
  14. data/lib/rfix/cli/command/setup.rb +2 -0
  15. data/lib/rfix/cli/command/status.rb +39 -0
  16. data/lib/rfix/collector.rb +69 -0
  17. data/lib/rfix/diff.rb +69 -0
  18. data/lib/rfix/extension/comment_config.rb +15 -0
  19. data/lib/rfix/extension/offense.rb +17 -14
  20. data/lib/rfix/extension/pastel.rb +7 -4
  21. data/lib/rfix/extension/progresbar.rb +15 -0
  22. data/lib/rfix/extension/strings.rb +10 -2
  23. data/lib/rfix/file.rb +5 -3
  24. data/lib/rfix/file/base.rb +21 -14
  25. data/lib/rfix/file/deleted.rb +2 -0
  26. data/lib/rfix/file/ignored.rb +2 -0
  27. data/lib/rfix/file/null.rb +17 -0
  28. data/lib/rfix/file/tracked.rb +39 -23
  29. data/lib/rfix/file/undefined.rb +17 -0
  30. data/lib/rfix/file/untracked.rb +3 -1
  31. data/lib/rfix/formatter.rb +67 -71
  32. data/lib/rfix/highlighter.rb +1 -3
  33. data/lib/rfix/rake/gemfile.rb +26 -23
  34. data/lib/rfix/repository.rb +59 -96
  35. data/lib/rfix/types.rb +24 -14
  36. data/lib/rfix/version.rb +1 -1
  37. data/rfix.gemspec +11 -3
  38. data/vendor/cli-ui/Gemfile +17 -0
  39. data/vendor/cli-ui/Gemfile.lock +60 -0
  40. data/vendor/cli-ui/LICENSE.txt +21 -0
  41. data/vendor/cli-ui/README.md +224 -0
  42. data/vendor/cli-ui/Rakefile +20 -0
  43. data/vendor/cli-ui/bin/console +14 -0
  44. data/vendor/cli-ui/cli-ui.gemspec +25 -0
  45. data/vendor/cli-ui/dev.yml +14 -0
  46. data/vendor/cli-ui/lib/cli/ui.rb +233 -0
  47. data/vendor/cli-ui/lib/cli/ui/ansi.rb +157 -0
  48. data/vendor/cli-ui/lib/cli/ui/color.rb +84 -0
  49. data/vendor/cli-ui/lib/cli/ui/formatter.rb +192 -0
  50. data/vendor/cli-ui/lib/cli/ui/frame.rb +269 -0
  51. data/vendor/cli-ui/lib/cli/ui/frame/frame_stack.rb +98 -0
  52. data/vendor/cli-ui/lib/cli/ui/frame/frame_style.rb +120 -0
  53. data/vendor/cli-ui/lib/cli/ui/frame/frame_style/box.rb +166 -0
  54. data/vendor/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +139 -0
  55. data/vendor/cli-ui/lib/cli/ui/glyph.rb +84 -0
  56. data/vendor/cli-ui/lib/cli/ui/os.rb +67 -0
  57. data/vendor/cli-ui/lib/cli/ui/printer.rb +59 -0
  58. data/vendor/cli-ui/lib/cli/ui/progress.rb +90 -0
  59. data/vendor/cli-ui/lib/cli/ui/prompt.rb +297 -0
  60. data/vendor/cli-ui/lib/cli/ui/prompt/interactive_options.rb +484 -0
  61. data/vendor/cli-ui/lib/cli/ui/prompt/options_handler.rb +29 -0
  62. data/vendor/cli-ui/lib/cli/ui/spinner.rb +66 -0
  63. data/vendor/cli-ui/lib/cli/ui/spinner/async.rb +40 -0
  64. data/vendor/cli-ui/lib/cli/ui/spinner/spin_group.rb +263 -0
  65. data/vendor/cli-ui/lib/cli/ui/stdout_router.rb +232 -0
  66. data/vendor/cli-ui/lib/cli/ui/terminal.rb +46 -0
  67. data/vendor/cli-ui/lib/cli/ui/truncater.rb +102 -0
  68. data/vendor/cli-ui/lib/cli/ui/version.rb +5 -0
  69. data/vendor/cli-ui/lib/cli/ui/widgets.rb +77 -0
  70. data/vendor/cli-ui/lib/cli/ui/widgets/base.rb +27 -0
  71. data/vendor/cli-ui/lib/cli/ui/widgets/status.rb +61 -0
  72. data/vendor/cli-ui/lib/cli/ui/wrap.rb +56 -0
  73. data/vendor/cli-ui/test/cli/ui/ansi_test.rb +32 -0
  74. data/vendor/cli-ui/test/cli/ui/cli_ui_test.rb +23 -0
  75. data/vendor/cli-ui/test/cli/ui/color_test.rb +40 -0
  76. data/vendor/cli-ui/test/cli/ui/formatter_test.rb +79 -0
  77. data/vendor/cli-ui/test/cli/ui/glyph_test.rb +68 -0
  78. data/vendor/cli-ui/test/cli/ui/printer_test.rb +103 -0
  79. data/vendor/cli-ui/test/cli/ui/progress_test.rb +46 -0
  80. data/vendor/cli-ui/test/cli/ui/prompt/options_handler_test.rb +39 -0
  81. data/vendor/cli-ui/test/cli/ui/prompt_test.rb +348 -0
  82. data/vendor/cli-ui/test/cli/ui/spinner/spin_group_test.rb +39 -0
  83. data/vendor/cli-ui/test/cli/ui/spinner_test.rb +141 -0
  84. data/vendor/cli-ui/test/cli/ui/stdout_router_test.rb +32 -0
  85. data/vendor/cli-ui/test/cli/ui/terminal_test.rb +26 -0
  86. data/vendor/cli-ui/test/cli/ui/truncater_test.rb +31 -0
  87. data/vendor/cli-ui/test/cli/ui/widgets/status_test.rb +49 -0
  88. data/vendor/cli-ui/test/cli/ui/widgets_test.rb +15 -0
  89. data/vendor/cli-ui/test/test_helper.rb +53 -0
  90. data/vendor/cli-ui/tmp/cache/bootsnap/compile-cache/d9/c036af0f3dc494 +0 -0
  91. data/vendor/cli-ui/tmp/cache/bootsnap/load-path-cache +0 -0
  92. data/vendor/dry-cli/lib/dry/cli/command.rb +2 -1
  93. data/vendor/dry-cli/tmp/cache/bootsnap/compile-cache/ff/a22a5daafbd74c +0 -0
  94. data/vendor/dry-cli/tmp/cache/bootsnap/load-path-cache +0 -0
  95. data/vendor/strings-ansi/tmp/cache/bootsnap/compile-cache/79/49cf49407b370e +0 -0
  96. data/vendor/strings-ansi/tmp/cache/bootsnap/load-path-cache +0 -0
  97. metadata +170 -9
  98. data/lib/rfix/extension/string.rb +0 -12
  99. data/lib/rfix/indicator.rb +0 -19
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+
3
+ module CLI
4
+ module UI
5
+ module Spinner
6
+ class SpinGroupTest < MiniTest::Test
7
+ def test_spin_group
8
+ _out, err = capture_io do
9
+ CLI::UI::StdoutRouter.ensure_activated
10
+
11
+ sg = SpinGroup.new
12
+ sg.add('s') do
13
+ true
14
+ end
15
+
16
+ assert(sg.wait)
17
+ end
18
+
19
+ assert_equal('', err)
20
+ end
21
+
22
+ def test_spin_group_auto_debrief_false
23
+ _out, err = capture_io do
24
+ CLI::UI::StdoutRouter.ensure_activated
25
+
26
+ sg = SpinGroup.new(auto_debrief: false)
27
+ sg.add('s') do
28
+ true
29
+ end
30
+
31
+ assert(sg.wait)
32
+ end
33
+
34
+ assert_equal('', err)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,141 @@
1
+ require 'test_helper'
2
+
3
+ module CLI
4
+ module UI
5
+ class SpinnerTest < MiniTest::Test
6
+ def test_spinner
7
+ out, err = capture_io do
8
+ CLI::UI::StdoutRouter.ensure_activated
9
+ CLI::UI::Spinner.spin('sleeping') do
10
+ end
11
+ end
12
+
13
+ assert_equal('', err)
14
+ assert_match(/sleeping/, out)
15
+ end
16
+
17
+ def test_async
18
+ out, err = capture_io do
19
+ CLI::UI::StdoutRouter.ensure_activated
20
+ spinner = CLI::UI::Spinner::Async.start('sleeping')
21
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
22
+ spinner.stop
23
+ end
24
+
25
+ assert_equal('', err)
26
+ assert_match(/sleeping/, out)
27
+ end
28
+
29
+ def test_updating_title
30
+ out, err = capture_io do
31
+ CLI::UI::StdoutRouter.ensure_activated
32
+ CLI::UI::Spinner.spin('私') do |task|
33
+ assert(task)
34
+ assert_respond_to(task, :update_title)
35
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
36
+ task.update_title('今日')
37
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
38
+ task.update_title('疲れたんだ')
39
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
40
+ end
41
+ end
42
+
43
+ assert_empty(err)
44
+ assert_match(/私/, out)
45
+ assert_match(/今日/, out)
46
+ assert_match(/疲れたんだ/, out)
47
+ end
48
+
49
+ def test_spinner_without_emojis
50
+ with_os_mock_test do
51
+ out, err = capture_io do
52
+ CLI::UI::StdoutRouter.ensure_activated
53
+ spinner = CLI::UI::Spinner::Async.start('sleeping')
54
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
55
+ spinner.stop
56
+ end
57
+
58
+ assert_equal('', err)
59
+ assert_match(/sleeping/, out)
60
+ assert_match(/[\|\\\/]/, out)
61
+ refute_match(/[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]/, out)
62
+ end
63
+ end
64
+
65
+ def test_updating_title_without_emojis
66
+ with_os_mock_test do
67
+ out, err = capture_io do
68
+ CLI::UI::StdoutRouter.ensure_activated
69
+ CLI::UI::Spinner.spin('私') do |task|
70
+ assert(task)
71
+ assert_respond_to(task, :update_title)
72
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
73
+ task.update_title('今日')
74
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
75
+ task.update_title('疲れたんだ')
76
+ sleep(CLI::UI::Spinner::PERIOD * 2.5)
77
+ end
78
+ end
79
+
80
+ assert_empty(err)
81
+ assert_match(/私/, out)
82
+ assert_match(/今日/, out)
83
+ assert_match(/疲れたんだ/, out)
84
+ assert_match(/[\|\\\/]/, out)
85
+ refute_match(/[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]/, out)
86
+ end
87
+ end
88
+
89
+ def test_spinner_task_error_through_raising_exception
90
+ out, err = capture_io do
91
+ CLI::UI::StdoutRouter.ensure_activated
92
+ CLI::UI::Spinner.spin('broken') do
93
+ sleep(CLI::UI::Spinner::PERIOD * 0.5)
94
+ $stderr.puts 'not empty'
95
+ raise 'some error'
96
+ end
97
+ end
98
+
99
+ assert_equal('', err)
100
+ assert_match(/✗/, out)
101
+ assert_match(/RuntimeError: some error/, out)
102
+ assert_match(/STDERR[^\n]*\n[^\n]*not empty/, out)
103
+ assert_match(/STDOUT[^\n]*\n[^\n]*\(empty\)/, out)
104
+ end
105
+
106
+ def test_spinner_task_error_through_returning_error
107
+ out, _ = capture_io do
108
+ CLI::UI::StdoutRouter.ensure_activated
109
+ CLI::UI::Spinner.spin('broken') do
110
+ $stderr.puts 'not empty'
111
+ sleep(CLI::UI::Spinner::PERIOD * 0.5)
112
+ CLI::UI::Spinner::TASK_FAILED
113
+ end
114
+ end
115
+
116
+ assert_match(/✗/, out)
117
+ assert_match(/Task Failed: broken/, out)
118
+ assert_match(/STDERR[^\n]*\n[^\n]*not empty/, out)
119
+ assert_match(/STDOUT[^\n]*\n[^\n]*\(empty\)/, out)
120
+ end
121
+
122
+ private
123
+
124
+ def with_os_mock_test
125
+ classes = [:Spinner, :Glyph]
126
+
127
+ root_path = File.join(File.dirname(__FILE__), '../../../lib/cli/ui')
128
+ files = [
129
+ File.join(root_path, 'spinner.rb'),
130
+ File.join(root_path, 'glyph.rb'),
131
+ ]
132
+
133
+ Dir.glob(File.join(root_path, 'spinner', '*')).each do |file|
134
+ files << file
135
+ end
136
+
137
+ with_os_mock_and_reload(CLI::UI::OS::Windows, classes, files) { yield }
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ module CLI
4
+ module UI
5
+ class StdoutRouterTest < MiniTest::Test
6
+ def test_with_id
7
+ out, _ = capture_io do
8
+ StdoutRouter.with_enabled do
9
+ StdoutRouter.with_id(on_streams: [$stdout]) do
10
+ $stdout.puts 'hello'
11
+ end
12
+ end
13
+ end
14
+ assert_match(/\[\d{5}\] hello/, out)
15
+ end
16
+
17
+ def test_with_id_with_argument_errors
18
+ assert_raises(ArgumentError) do
19
+ StdoutRouter.with_id(on_streams: ['a']) do
20
+ $stdout.puts 'hello'
21
+ end
22
+ end
23
+ end
24
+
25
+ def test_current_id
26
+ StdoutRouter.with_id(on_streams: [$stdout]) do |id|
27
+ assert_equal({ id: id, streams: [$stdout] }, StdoutRouter.current_id)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ module CLI
4
+ module UI
5
+ class TerminalTest < MiniTest::Test
6
+ def test_width
7
+ skip('flaky')
8
+
9
+ obj = Object.new
10
+ class << obj
11
+ def winsize
12
+ [10, 70]
13
+ end
14
+ end
15
+
16
+ IO.expects(:respond_to?).with(:console).twice.returns(true)
17
+
18
+ IO.expects(:console).returns(obj)
19
+ assert_equal(70, Terminal.width)
20
+
21
+ IO.expects(:console).returns(nil)
22
+ assert_equal(80, Terminal.width)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ module CLI
4
+ module UI
5
+ class TruncaterTest < MiniTest::Test
6
+ MAN = "\u{1f468}" # width=2
7
+ COOKING = "\u{1f373}" # width=2
8
+ ZWJ = "\u{200d}" # width=complicated
9
+
10
+ MAN_COOKING = MAN + ZWJ + COOKING # width=2
11
+
12
+ def test_truncate
13
+ assert_example(3, 'foobar', "fo\x1b[0m…")
14
+ assert_example(5, 'foobar', "foob\x1b[0m…")
15
+ assert_example(6, 'foobar', 'foobar')
16
+ assert_example(6, "foo\x1b[31mbar\x1b[0m", "foo\x1b[31mbar\x1b[0m")
17
+ assert_example(6, "\x1b[31mfoobar", "\x1b[31mfoobar")
18
+ assert_example(3, MAN_COOKING * 2, MAN_COOKING + Truncater::TRUNCATED)
19
+ assert_example(3, 'A' + MAN_COOKING, 'A' + MAN_COOKING)
20
+ assert_example(3, 'AB' + MAN_COOKING, 'AB' + Truncater::TRUNCATED)
21
+ end
22
+
23
+ private
24
+
25
+ def assert_example(width, from, to)
26
+ truncated = CLI::UI::Truncater.call(from, width)
27
+ assert_equal(to.codepoints.map { |c| c.to_s(16) }, truncated.codepoints.map { |c| c.to_s(16) })
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,49 @@
1
+ require('test_helper')
2
+
3
+ module CLI
4
+ module UI
5
+ module Widgets
6
+ class StatusTest < MiniTest::Test
7
+ def setup
8
+ Spinner.index = 0
9
+ end
10
+
11
+ CASES = {
12
+ '1:2:3:4' =>
13
+ "\e[0m\e[1m[\e[0m\e[32m1✓\e[0m\e[38;5;244m,\e[0m\e[31m2✗\e[0m\e[38;5;244m◂\e[0m\e[94m3%s\e[0m" \
14
+ "\e[38;5;244m◂\e[0m\e[97m4\u231b\ufe0e\e[0m\e[1m]\e[0m",
15
+ '0:0:0:1' =>
16
+ "\e[0m\e[1m[\e[0m\e[38;5;244m0✓\e[0m\e[38;5;244m,\e[0m\e[38;5;244m0✗\e[0m\e[38;5;244m◂\e[0m" \
17
+ "\e[38;5;244m0%s\e[0m\e[38;5;244m◂\e[0m\e[97m1\u231b\ufe0e\e[0m\e[1m]\e[0m",
18
+ '0:0:0:0' => "\e[0m\e[1m∅\e[0m",
19
+ }
20
+
21
+ def test_status_widget
22
+ assert_equal(CASES['0:0:0:0'], Widgets::Status.call('0:0:0:0'))
23
+
24
+ assert_equal(
25
+ format(CASES['1:2:3:4'], '⠋'),
26
+ Widgets::Status.call('1:2:3:4'),
27
+ )
28
+
29
+ assert_equal(
30
+ format(CASES['0:0:0:1'], '⠿'),
31
+ Widgets::Status.call('0:0:0:1'),
32
+ )
33
+
34
+ Spinner.index = 1
35
+
36
+ assert_equal(
37
+ format(CASES['0:0:0:1'], '⠿'),
38
+ Widgets::Status.call('0:0:0:1'),
39
+ )
40
+
41
+ assert_equal(
42
+ format(CASES['1:2:3:4'], '⠙'),
43
+ Widgets::Status.call('1:2:3:4'),
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,15 @@
1
+ require('test_helper')
2
+
3
+ module CLI
4
+ module UI
5
+ class WidgetsTest < MiniTest::Test
6
+ def test_widgets
7
+ assert_equal(Widgets::Status, Widgets.lookup('status'))
8
+
9
+ assert_raises(Widgets::InvalidWidgetHandle) do
10
+ Widgets.lookup('nope')
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,53 @@
1
+ addpath = lambda do |p|
2
+ path = File.expand_path("../../#{p}", __FILE__)
3
+ $LOAD_PATH.unshift(path) unless $LOAD_PATH.include?(path)
4
+ end
5
+ addpath.call('lib')
6
+
7
+ require 'cli/ui'
8
+
9
+ # Otherwise, results will vary depending on the context in which we run tests.
10
+ CLI::UI.enable_color = true
11
+
12
+ module CLI
13
+ module UI
14
+ module OS
15
+ # Default to Mac behaviour so running the tests in different environments doesn't lead to different outputs
16
+ def current
17
+ CLI::UI::OS::Mac
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ # Unloads the given classes from CLI::UI, reloads them and stubs the OS to the given one. This is used to run tests
24
+ # on classes with variables that depend on the OS (e.g. Glyph), so that we can mock their state in the context of this
25
+ # block.
26
+ def with_os_mock_and_reload(os, class_names = [], files = [])
27
+ class_names = Array(class_names)
28
+ files = Array(files)
29
+
30
+ CLI::UI::OS.stubs(:current).returns(os)
31
+ class_names.each { |classname| CLI::UI.send(:remove_const, classname) }
32
+ files.each { |file| load(file) }
33
+
34
+ yield
35
+ ensure
36
+ CLI::UI::OS.unstub(:current)
37
+ class_names.each { |classname| CLI::UI.send(:remove_const, classname) }
38
+ files.each { |file| load(file) }
39
+ end
40
+
41
+ require 'fileutils'
42
+ require 'tmpdir'
43
+ require 'tempfile'
44
+
45
+ require 'rubygems'
46
+ require 'bundler/setup'
47
+
48
+ if RUBY_ENGINE !~ /jruby/
49
+ require 'byebug'
50
+ end
51
+
52
+ require 'minitest/autorun'
53
+ require 'mocha/minitest'
@@ -45,10 +45,11 @@ module Dry
45
45
 
46
46
  # @since x.x.x
47
47
  # @api private
48
- attr_accessor :subcommands
48
+ attr_reader :subcommands
49
49
 
50
50
  # @since x.x.x
51
51
  # @api private
52
+ attr_writer :subcommands
52
53
  end
53
54
 
54
55
  # Set the description of the command
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfix
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Linus Oleander
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-03 00:00:00.000000000 Z
11
+ date: 2021-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bootsnap
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: concurrent-ruby
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: dry-cli
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -185,7 +213,7 @@ dependencies:
185
213
  - !ruby/object:Gem::Version
186
214
  version: 0.85.0
187
215
  - !ruby/object:Gem::Dependency
188
- name: rubocop-ast
216
+ name: rugged
189
217
  requirement: !ruby/object:Gem::Requirement
190
218
  requirements:
191
219
  - - ">="
@@ -199,7 +227,7 @@ dependencies:
199
227
  - !ruby/object:Gem::Version
200
228
  version: '0'
201
229
  - !ruby/object:Gem::Dependency
202
- name: rugged
230
+ name: strings
203
231
  requirement: !ruby/object:Gem::Requirement
204
232
  requirements:
205
233
  - - ">="
@@ -213,7 +241,7 @@ dependencies:
213
241
  - !ruby/object:Gem::Version
214
242
  version: '0'
215
243
  - !ruby/object:Gem::Dependency
216
- name: strings
244
+ name: strings-ansi
217
245
  requirement: !ruby/object:Gem::Requirement
218
246
  requirements:
219
247
  - - ">="
@@ -254,6 +282,34 @@ dependencies:
254
282
  - - ">="
255
283
  - !ruby/object:Gem::Version
256
284
  version: '0'
285
+ - !ruby/object:Gem::Dependency
286
+ name: tty-logger
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - ">="
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ type: :runtime
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - ">="
297
+ - !ruby/object:Gem::Version
298
+ version: '0'
299
+ - !ruby/object:Gem::Dependency
300
+ name: tty-progressbar
301
+ requirement: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ">="
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ type: :runtime
307
+ prerelease: false
308
+ version_requirements: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - ">="
311
+ - !ruby/object:Gem::Version
312
+ version: '0'
257
313
  - !ruby/object:Gem::Dependency
258
314
  name: tty-prompt
259
315
  requirement: !ruby/object:Gem::Requirement
@@ -282,6 +338,48 @@ dependencies:
282
338
  - - ">="
283
339
  - !ruby/object:Gem::Version
284
340
  version: '0'
341
+ - !ruby/object:Gem::Dependency
342
+ name: tty-table
343
+ requirement: !ruby/object:Gem::Requirement
344
+ requirements:
345
+ - - ">="
346
+ - !ruby/object:Gem::Version
347
+ version: '0'
348
+ type: :runtime
349
+ prerelease: false
350
+ version_requirements: !ruby/object:Gem::Requirement
351
+ requirements:
352
+ - - ">="
353
+ - !ruby/object:Gem::Version
354
+ version: '0'
355
+ - !ruby/object:Gem::Dependency
356
+ name: tty-tree
357
+ requirement: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - ">="
360
+ - !ruby/object:Gem::Version
361
+ version: '0'
362
+ type: :runtime
363
+ prerelease: false
364
+ version_requirements: !ruby/object:Gem::Requirement
365
+ requirements:
366
+ - - ">="
367
+ - !ruby/object:Gem::Version
368
+ version: '0'
369
+ - !ruby/object:Gem::Dependency
370
+ name: xdg
371
+ requirement: !ruby/object:Gem::Requirement
372
+ requirements:
373
+ - - ">="
374
+ - !ruby/object:Gem::Version
375
+ version: '0'
376
+ type: :runtime
377
+ prerelease: false
378
+ version_requirements: !ruby/object:Gem::Requirement
379
+ requirements:
380
+ - - ">="
381
+ - !ruby/object:Gem::Version
382
+ version: '0'
285
383
  - !ruby/object:Gem::Dependency
286
384
  name: zeitwerk
287
385
  requirement: !ruby/object:Gem::Requirement
@@ -319,6 +417,7 @@ files:
319
417
  - lib/rfix/branch/reference.rb
320
418
  - lib/rfix/branch/upstream.rb
321
419
  - lib/rfix/cli/command.rb
420
+ - lib/rfix/cli/command/all.rb
322
421
  - lib/rfix/cli/command/base.rb
323
422
  - lib/rfix/cli/command/branch.rb
324
423
  - lib/rfix/cli/command/config.rb
@@ -329,20 +428,25 @@ files:
329
428
  - lib/rfix/cli/command/local.rb
330
429
  - lib/rfix/cli/command/origin.rb
331
430
  - lib/rfix/cli/command/setup.rb
431
+ - lib/rfix/cli/command/status.rb
432
+ - lib/rfix/collector.rb
433
+ - lib/rfix/diff.rb
332
434
  - lib/rfix/error.rb
435
+ - lib/rfix/extension/comment_config.rb
333
436
  - lib/rfix/extension/offense.rb
334
437
  - lib/rfix/extension/pastel.rb
335
- - lib/rfix/extension/string.rb
438
+ - lib/rfix/extension/progresbar.rb
336
439
  - lib/rfix/extension/strings.rb
337
440
  - lib/rfix/file.rb
338
441
  - lib/rfix/file/base.rb
339
442
  - lib/rfix/file/deleted.rb
340
443
  - lib/rfix/file/ignored.rb
444
+ - lib/rfix/file/null.rb
341
445
  - lib/rfix/file/tracked.rb
446
+ - lib/rfix/file/undefined.rb
342
447
  - lib/rfix/file/untracked.rb
343
448
  - lib/rfix/formatter.rb
344
449
  - lib/rfix/highlighter.rb
345
- - lib/rfix/indicator.rb
346
450
  - lib/rfix/log.rb
347
451
  - lib/rfix/rake/gemfile.rb
348
452
  - lib/rfix/rake/paths.rb
@@ -351,6 +455,60 @@ files:
351
455
  - lib/rfix/types.rb
352
456
  - lib/rfix/version.rb
353
457
  - rfix.gemspec
458
+ - vendor/cli-ui/Gemfile
459
+ - vendor/cli-ui/Gemfile.lock
460
+ - vendor/cli-ui/LICENSE.txt
461
+ - vendor/cli-ui/README.md
462
+ - vendor/cli-ui/Rakefile
463
+ - vendor/cli-ui/bin/console
464
+ - vendor/cli-ui/cli-ui.gemspec
465
+ - vendor/cli-ui/dev.yml
466
+ - vendor/cli-ui/lib/cli/ui.rb
467
+ - vendor/cli-ui/lib/cli/ui/ansi.rb
468
+ - vendor/cli-ui/lib/cli/ui/color.rb
469
+ - vendor/cli-ui/lib/cli/ui/formatter.rb
470
+ - vendor/cli-ui/lib/cli/ui/frame.rb
471
+ - vendor/cli-ui/lib/cli/ui/frame/frame_stack.rb
472
+ - vendor/cli-ui/lib/cli/ui/frame/frame_style.rb
473
+ - vendor/cli-ui/lib/cli/ui/frame/frame_style/box.rb
474
+ - vendor/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb
475
+ - vendor/cli-ui/lib/cli/ui/glyph.rb
476
+ - vendor/cli-ui/lib/cli/ui/os.rb
477
+ - vendor/cli-ui/lib/cli/ui/printer.rb
478
+ - vendor/cli-ui/lib/cli/ui/progress.rb
479
+ - vendor/cli-ui/lib/cli/ui/prompt.rb
480
+ - vendor/cli-ui/lib/cli/ui/prompt/interactive_options.rb
481
+ - vendor/cli-ui/lib/cli/ui/prompt/options_handler.rb
482
+ - vendor/cli-ui/lib/cli/ui/spinner.rb
483
+ - vendor/cli-ui/lib/cli/ui/spinner/async.rb
484
+ - vendor/cli-ui/lib/cli/ui/spinner/spin_group.rb
485
+ - vendor/cli-ui/lib/cli/ui/stdout_router.rb
486
+ - vendor/cli-ui/lib/cli/ui/terminal.rb
487
+ - vendor/cli-ui/lib/cli/ui/truncater.rb
488
+ - vendor/cli-ui/lib/cli/ui/version.rb
489
+ - vendor/cli-ui/lib/cli/ui/widgets.rb
490
+ - vendor/cli-ui/lib/cli/ui/widgets/base.rb
491
+ - vendor/cli-ui/lib/cli/ui/widgets/status.rb
492
+ - vendor/cli-ui/lib/cli/ui/wrap.rb
493
+ - vendor/cli-ui/test/cli/ui/ansi_test.rb
494
+ - vendor/cli-ui/test/cli/ui/cli_ui_test.rb
495
+ - vendor/cli-ui/test/cli/ui/color_test.rb
496
+ - vendor/cli-ui/test/cli/ui/formatter_test.rb
497
+ - vendor/cli-ui/test/cli/ui/glyph_test.rb
498
+ - vendor/cli-ui/test/cli/ui/printer_test.rb
499
+ - vendor/cli-ui/test/cli/ui/progress_test.rb
500
+ - vendor/cli-ui/test/cli/ui/prompt/options_handler_test.rb
501
+ - vendor/cli-ui/test/cli/ui/prompt_test.rb
502
+ - vendor/cli-ui/test/cli/ui/spinner/spin_group_test.rb
503
+ - vendor/cli-ui/test/cli/ui/spinner_test.rb
504
+ - vendor/cli-ui/test/cli/ui/stdout_router_test.rb
505
+ - vendor/cli-ui/test/cli/ui/terminal_test.rb
506
+ - vendor/cli-ui/test/cli/ui/truncater_test.rb
507
+ - vendor/cli-ui/test/cli/ui/widgets/status_test.rb
508
+ - vendor/cli-ui/test/cli/ui/widgets_test.rb
509
+ - vendor/cli-ui/test/test_helper.rb
510
+ - vendor/cli-ui/tmp/cache/bootsnap/compile-cache/d9/c036af0f3dc494
511
+ - vendor/cli-ui/tmp/cache/bootsnap/load-path-cache
354
512
  - vendor/dry-cli/CHANGELOG.md
355
513
  - vendor/dry-cli/CODEOWNERS
356
514
  - vendor/dry-cli/CODE_OF_CONDUCT.md
@@ -422,6 +580,8 @@ files:
422
580
  - vendor/dry-cli/spec/unit/dry/cli/inflector_spec.rb
423
581
  - vendor/dry-cli/spec/unit/dry/cli/registry_spec.rb
424
582
  - vendor/dry-cli/spec/unit/dry/cli/version_spec.rb
583
+ - vendor/dry-cli/tmp/cache/bootsnap/compile-cache/ff/a22a5daafbd74c
584
+ - vendor/dry-cli/tmp/cache/bootsnap/load-path-cache
425
585
  - vendor/strings-ansi/CHANGELOG.md
426
586
  - vendor/strings-ansi/CODE_OF_CONDUCT.md
427
587
  - vendor/strings-ansi/Gemfile
@@ -445,6 +605,8 @@ files:
445
605
  - vendor/strings-ansi/tasks/console.rake
446
606
  - vendor/strings-ansi/tasks/coverage.rake
447
607
  - vendor/strings-ansi/tasks/spec.rake
608
+ - vendor/strings-ansi/tmp/cache/bootsnap/compile-cache/79/49cf49407b370e
609
+ - vendor/strings-ansi/tmp/cache/bootsnap/load-path-cache
448
610
  homepage: https://github.com/oleander/rfix-rb
449
611
  licenses:
450
612
  - MIT
@@ -464,8 +626,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
464
626
  - - ">="
465
627
  - !ruby/object:Gem::Version
466
628
  version: '0'
467
- requirements:
468
- - git >= 2
629
+ requirements: []
469
630
  rubygems_version: 3.1.2
470
631
  signing_key:
471
632
  specification_version: 4