simple-cli 0.2.23 → 0.2.28
Sign up to get free protection for your applications and to get access to all the features.
- 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/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)
|
@@ -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:
|