cli_spinnable 0.1 → 0.2
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 +4 -4
- data/examples/example1.rb +25 -19
- data/examples/example2.rb +7 -7
- data/examples/example3.rb +21 -10
- data/examples/example4.rb +35 -0
- data/lib/cli_spinnable.rb +19 -11
- data/lib/cli_spinnable/version.rb +1 -1
- data/lib/cli_spinnable/writer.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb9427d5e29feac4435264fc98494a1ec200a5f8
|
4
|
+
data.tar.gz: 88d98f350933a6fe8f4fc9e5e1e27f8090af2e41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c190c8978e80063e623dafa4d5113af7f094ee5a28d40f31ff95299f54cfe4efbe23289c52694c2b841d457107a3be81d224ff5c3cdd51dcfb329eb13b245bb3
|
7
|
+
data.tar.gz: 4354df4d30830b93081820d8c07acd8fc228326995750d7628b4509f9d264870a1ec4abd546d137a81bf7a683fb836ccbe0d7ff985c67428d7c012ccfb4c8825
|
data/examples/example1.rb
CHANGED
@@ -1,34 +1,40 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
2
|
|
3
|
+
## This example shows different ways of accessing the `.with_spinner` method.
|
4
|
+
|
3
5
|
require 'cli_spinnable'
|
4
6
|
|
5
|
-
|
7
|
+
# 1. Use `CliSpinnable.with_spinner` directly.
|
8
|
+
CliSpinnable.with_spinner do |cli|
|
9
|
+
cli.print 'Downloading something'
|
10
|
+
sleep 1
|
11
|
+
cli.tick
|
12
|
+
end
|
13
|
+
|
14
|
+
# 2. Create own module and extend it with CliSpinnable.
|
15
|
+
# This way you will have own namespace for `.with_spinner` method.
|
16
|
+
module Foo
|
17
|
+
extend CliSpinnable
|
18
|
+
end
|
19
|
+
|
20
|
+
Foo.with_spinner do |cli|
|
21
|
+
cli.print 'Downloading something'
|
22
|
+
sleep 1
|
23
|
+
cli.tick
|
24
|
+
end
|
25
|
+
|
26
|
+
# 3. Include CliSpinnable module in own class.
|
27
|
+
# This way you can access `with_spinner` method within that class.
|
28
|
+
class Bar
|
6
29
|
include CliSpinnable
|
7
30
|
|
8
31
|
def call
|
9
|
-
puts 'HAPPY RUN (ending with success):'
|
10
32
|
with_spinner do |cli|
|
11
33
|
cli.print 'Downloading something'
|
12
34
|
sleep 1
|
13
|
-
cli.print '...downloaded 1MB'
|
14
|
-
cli.tick
|
15
|
-
cli.print 'Processing data'
|
16
|
-
sleep 1
|
17
|
-
cli.tick
|
18
|
-
end
|
19
|
-
|
20
|
-
puts 'SAD RUN (ending with fail):'
|
21
|
-
with_spinner do |cli|
|
22
|
-
cli.print 'Downloading something'
|
23
|
-
sleep 1
|
24
|
-
cli.print '...downloaded 1MB'
|
25
|
-
cli.tick
|
26
|
-
cli.print 'Processing data'
|
27
|
-
sleep 1
|
28
|
-
1 / 0
|
29
35
|
cli.tick
|
30
36
|
end
|
31
37
|
end
|
32
38
|
end
|
33
39
|
|
34
|
-
|
40
|
+
Bar.new.call
|
data/examples/example2.rb
CHANGED
@@ -2,12 +2,12 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
2
2
|
|
3
3
|
require 'cli_spinnable'
|
4
4
|
|
5
|
-
module
|
5
|
+
module Cli
|
6
6
|
extend CliSpinnable
|
7
7
|
end
|
8
8
|
|
9
|
-
puts 'HAPPY RUN (
|
10
|
-
|
9
|
+
puts 'HAPPY RUN (should succeed):'
|
10
|
+
Cli.with_spinner do |cli|
|
11
11
|
cli.print 'Downloading something'
|
12
12
|
sleep 1
|
13
13
|
cli.print '...downloaded 1MB'
|
@@ -17,14 +17,14 @@ Foo.with_spinner do |cli|
|
|
17
17
|
cli.tick
|
18
18
|
end
|
19
19
|
|
20
|
-
puts 'SAD RUN (
|
21
|
-
|
20
|
+
puts 'SAD RUN (should fail):'
|
21
|
+
Cli.with_spinner do |cli|
|
22
22
|
cli.print 'Downloading something'
|
23
23
|
sleep 1
|
24
24
|
cli.print '...downloaded 1MB'
|
25
25
|
cli.tick
|
26
26
|
cli.print 'Processing data'
|
27
27
|
sleep 1
|
28
|
-
1 / 0
|
29
|
-
cli.tick
|
28
|
+
1 / 0 # produces exception
|
29
|
+
cli.tick # this will not be reached
|
30
30
|
end
|
data/examples/example3.rb
CHANGED
@@ -2,27 +2,38 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
2
2
|
|
3
3
|
require 'cli_spinnable'
|
4
4
|
|
5
|
-
|
5
|
+
module Cli
|
6
|
+
extend CliSpinnable
|
7
|
+
end
|
8
|
+
|
9
|
+
# Close the block before reading from input.
|
6
10
|
|
7
|
-
|
8
|
-
with_spinner do |cli|
|
11
|
+
# Good:
|
12
|
+
Cli.with_spinner do |cli|
|
9
13
|
cli.print 'Downloading something'
|
10
14
|
sleep 1
|
11
|
-
cli.print '...downloaded 1MB'
|
12
15
|
cli.tick
|
13
|
-
|
16
|
+
end
|
17
|
+
|
18
|
+
print 'Enter name: '
|
19
|
+
name = gets.chomp
|
20
|
+
|
21
|
+
Cli.with_spinner do |cli|
|
22
|
+
cli.print "Doing something with name #{name}"
|
14
23
|
sleep 1
|
15
24
|
cli.tick
|
16
25
|
end
|
17
26
|
|
18
|
-
|
19
|
-
with_spinner do |cli|
|
27
|
+
# Bad:
|
28
|
+
Cli.with_spinner do |cli|
|
20
29
|
cli.print 'Downloading something'
|
21
30
|
sleep 1
|
22
|
-
cli.print '...downloaded 1MB'
|
23
31
|
cli.tick
|
24
|
-
|
32
|
+
|
33
|
+
print 'Enter name: '
|
34
|
+
name = gets.chomp
|
35
|
+
|
36
|
+
cli.print "Doing something with name #{name}"
|
25
37
|
sleep 1
|
26
|
-
1 / 0
|
27
38
|
cli.tick
|
28
39
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'cli_spinnable'
|
4
|
+
|
5
|
+
module Cli
|
6
|
+
extend CliSpinnable
|
7
|
+
end
|
8
|
+
|
9
|
+
# Don't print multiline strings inside `with_spinner` block.
|
10
|
+
|
11
|
+
# Good:
|
12
|
+
Cli.with_spinner do |cli|
|
13
|
+
cli.print 'Downloading something'
|
14
|
+
sleep 1
|
15
|
+
cli.tick
|
16
|
+
end
|
17
|
+
|
18
|
+
print "Multiline\nstring"
|
19
|
+
|
20
|
+
# Bad:
|
21
|
+
Cli.with_spinner do |cli|
|
22
|
+
cli.print 'Downloading something'
|
23
|
+
sleep 1
|
24
|
+
cli.tick
|
25
|
+
print "Multiline\nstring"
|
26
|
+
end
|
27
|
+
s
|
28
|
+
# Bad:
|
29
|
+
|
30
|
+
Cli.with_spinner do |cli|
|
31
|
+
cli.print 'Downloading something'
|
32
|
+
sleep 1
|
33
|
+
cli.tick
|
34
|
+
cli.print "Multiline\nstring"
|
35
|
+
end
|
data/lib/cli_spinnable.rb
CHANGED
@@ -6,16 +6,24 @@ require 'cli_spinnable/line'
|
|
6
6
|
require 'cli_spinnable/writer'
|
7
7
|
|
8
8
|
module CliSpinnable
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
module Methods
|
10
|
+
def with_spinner
|
11
|
+
writer = Writer.new(STDOUT, Line.new)
|
12
|
+
yield writer
|
13
|
+
writer.finalize
|
14
|
+
self
|
15
|
+
rescue CliSpinnableError => e
|
16
|
+
raise e
|
17
|
+
rescue StandardError => e
|
18
|
+
writer.failure
|
19
|
+
writer.finalize
|
20
|
+
raise e
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
include Methods
|
25
|
+
|
26
|
+
class << self
|
27
|
+
include Methods
|
20
28
|
end
|
21
29
|
end
|
data/lib/cli_spinnable/writer.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cli_spinnable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Maicher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- examples/example1.rb
|
133
133
|
- examples/example2.rb
|
134
134
|
- examples/example3.rb
|
135
|
+
- examples/example4.rb
|
135
136
|
- lib/cli_spinnable.rb
|
136
137
|
- lib/cli_spinnable/cli_spinnable_error.rb
|
137
138
|
- lib/cli_spinnable/line.rb
|
@@ -159,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
160
|
version: '0'
|
160
161
|
requirements: []
|
161
162
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.
|
163
|
+
rubygems_version: 2.5.1
|
163
164
|
signing_key:
|
164
165
|
specification_version: 4
|
165
166
|
summary: CliSpinnable, a module that enriches ruby command line interface with rotating
|