simple-cli 0.2.20 → 0.2.28
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/.ruby-version +1 -0
- data/README.md +32 -0
- data/doc/examples/ex1/ex1 +2 -0
- data/doc/examples/ex1/ex1.rb +40 -0
- data/lib/simple/cli/helpers.rb +5 -2
- data/lib/simple/cli/logger/colored_logger.rb +18 -3
- data/lib/simple/cli/version.rb +1 -1
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba16419e4dc2f0fe2dc47fe0a5cb29a6de15a57d2b221ef3aa8c3ed7455c0556
|
4
|
+
data.tar.gz: 6293877fe62faaaf2718745c94ebb1ea798e1500330f75095c0363f151047fe4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dc54fc73aa56d28485023047df277663cdf0b0edeaacde994c772fd908934e7994bf84d4f9e216cc55573df2b3ad128d800ab217f268dfdbee731fd48e0db93
|
7
|
+
data.tar.gz: b9ee91e8c0aae8d0586b90dcbebe7476d9c34338ecc45bbdd08a685548f539c519db6412e99de13a65acac5538d0c151fe2dd76b9c3966126d1c91b910ada533
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.2
|
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# simple-cli
|
2
|
+
|
3
|
+
Building Ruby CLIs with easy.
|
4
|
+
|
5
|
+
## Philosophy
|
6
|
+
|
7
|
+
Building a command line could be much easier than what ruby provides with its standard library. In general, between the invocation of a tool from the command line and the actual running of whatever code the user intends to run really should disappear.
|
8
|
+
|
9
|
+
Ideally a developer would only have to build the implementation of whatever logic should be provided by the tool; everything else - parsing arguments, calling the tool's implementation, printing help - should happen automatically.
|
10
|
+
|
11
|
+
This is roughly what sinmple-sql provides.
|
12
|
+
|
13
|
+
## On versions
|
14
|
+
|
15
|
+
`simple-cli` is still on a 0.x.x version, and, generally, a 0.x.y version is not compatible with a 0.x+1.y version.
|
16
|
+
|
17
|
+
These are the follow
|
18
|
+
|
19
|
+
- The 0.2.x versions are tracked in the [`stable`](https://github.com/radiospiel/simple-cli/tree/stable) branch
|
20
|
+
- The 0.3.x versions are tracked in the [`master`](https://github.com/radiospiel/simple-cli/tree/stable) branch
|
21
|
+
|
22
|
+
## Basic features
|
23
|
+
|
24
|
+
- build command line features in a number of modules;
|
25
|
+
- public methods in these modules provide a subcommand for the CLI;
|
26
|
+
- `"_"` in the method name are being mapped to `":"` in the CLI;
|
27
|
+
- CLI provides a help subcommand. help texts are derived from the methods over a subcommand implementation:
|
28
|
+
- The first line determines the "short help" message, to be included in the `$CMD help` command list;
|
29
|
+
- The remaining lines determines the full help message, to be included in the `$CMD help subcommand` message.
|
30
|
+
|
31
|
+
## Example
|
32
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'bundler/inline'
|
3
|
+
|
4
|
+
gemfile do
|
5
|
+
source 'https://rubygems.org'
|
6
|
+
gem "simple-cli", '~> 0.2', path: "../../.."
|
7
|
+
end
|
8
|
+
|
9
|
+
module Ex1; end
|
10
|
+
module Ex1::CLI
|
11
|
+
include Simple::CLI
|
12
|
+
|
13
|
+
# Command without arguments
|
14
|
+
#
|
15
|
+
# Example:
|
16
|
+
#
|
17
|
+
# ./ex1 hello:world
|
18
|
+
#
|
19
|
+
def hello_world
|
20
|
+
puts "Hello from #{__FILE__}"
|
21
|
+
end
|
22
|
+
|
23
|
+
# Command with arguments
|
24
|
+
#
|
25
|
+
# This implements a command with arguments
|
26
|
+
#
|
27
|
+
# Examples:
|
28
|
+
#
|
29
|
+
# ./ex1 hello --name=user "what's up"
|
30
|
+
#
|
31
|
+
def hello(message, name: nil)
|
32
|
+
if name
|
33
|
+
puts "Hello #{name}: #{message}!"
|
34
|
+
else
|
35
|
+
puts "Hello, #{message}!"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
Ex1::CLI.run!(*ARGV)
|
data/lib/simple/cli/helpers.rb
CHANGED
@@ -18,14 +18,17 @@ module Simple::CLI::Helpers
|
|
18
18
|
::Simple::CLI.logger
|
19
19
|
end
|
20
20
|
|
21
|
-
def confirm(msg)
|
21
|
+
def confirm!(msg)
|
22
22
|
STDERR.puts <<~MSG
|
23
|
-
#{msg}
|
23
|
+
#{msg.chomp}
|
24
24
|
|
25
25
|
Press return to continue, ^C to cancel...
|
26
26
|
MSG
|
27
27
|
|
28
28
|
STDIN.gets
|
29
|
+
rescue Interrupt
|
30
|
+
logger.error "Cancelled by user"
|
31
|
+
exit 1
|
29
32
|
end
|
30
33
|
|
31
34
|
SSH = "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
|
@@ -118,10 +118,25 @@ module Simple::CLI::Logger::ColoredLogger
|
|
118
118
|
STDERR.puts msg
|
119
119
|
end
|
120
120
|
|
121
|
-
# The heuristic used to determine the caller is not perfect
|
122
|
-
#
|
121
|
+
# [TODO] The heuristic used to determine the caller is not perfect.
|
122
|
+
# Maybe we'll find a better solution; but for now this has to do.
|
123
123
|
def source_from_caller
|
124
|
-
source = caller.find
|
124
|
+
source = caller.find do |loc|
|
125
|
+
# skip this gem
|
126
|
+
next false if loc =~ /\/lib\/simple\/cli\//
|
127
|
+
|
128
|
+
# skip forwardable from Ruby stdlib
|
129
|
+
next false if loc =~ /\/forwardable.rb\:/
|
130
|
+
|
131
|
+
# skip simple-sql
|
132
|
+
next false if loc =~ /\/lib\/simple\/sql\b/
|
133
|
+
|
134
|
+
# skip lib/postjob/queue/postgres/checked_sql.rb
|
135
|
+
next false if loc =~ %r{lib/postjob/queue/postgres/checked_sql.rb}
|
136
|
+
|
137
|
+
true
|
138
|
+
end
|
139
|
+
|
125
140
|
source ||= caller[2]
|
126
141
|
source = source[(wd.length + 1)..-1] if source.start_with?(wd)
|
127
142
|
source
|
data/lib/simple/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- radiospiel
|
8
8
|
- mediapeers GmbH
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-07-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -75,9 +75,13 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- ".gitignore"
|
77
77
|
- ".rubocop.yml"
|
78
|
+
- ".ruby-version"
|
78
79
|
- Gemfile
|
80
|
+
- README.md
|
79
81
|
- Rakefile
|
80
82
|
- bin/rake
|
83
|
+
- doc/examples/ex1/ex1
|
84
|
+
- doc/examples/ex1/ex1.rb
|
81
85
|
- lib/simple-cli.rb
|
82
86
|
- lib/simple/cli.rb
|
83
87
|
- lib/simple/cli/adapter.rb
|
@@ -99,7 +103,7 @@ files:
|
|
99
103
|
homepage: http://github.com/radiospiel/simple-cli
|
100
104
|
licenses: []
|
101
105
|
metadata: {}
|
102
|
-
post_install_message:
|
106
|
+
post_install_message:
|
103
107
|
rdoc_options: []
|
104
108
|
require_paths:
|
105
109
|
- lib
|
@@ -114,8 +118,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
118
|
- !ruby/object:Gem::Version
|
115
119
|
version: '0'
|
116
120
|
requirements: []
|
117
|
-
rubygems_version: 3.
|
118
|
-
signing_key:
|
121
|
+
rubygems_version: 3.1.4
|
122
|
+
signing_key:
|
119
123
|
specification_version: 4
|
120
124
|
summary: Simple CLI builder for ruby
|
121
125
|
test_files:
|