lino 0.1.0 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20eb6e2b8594c3261c3800bb7cca393d9fa55ed3
4
- data.tar.gz: 1c6c9be281476348c146a8b8aa3cda314da0406c
3
+ metadata.gz: f9f6cf4b79d9262b01413a60d6f0fa83bce2f831
4
+ data.tar.gz: 9f88a2482f3cb2d6bee52b173d7a59cbc2af4b76
5
5
  SHA512:
6
- metadata.gz: 46a0add9fb8eda70f19ef8469278dc51ca75dfccc3ef991dee60e46ca2aff83120489ea23b1c9777ccdf3261b1e373a8fc7d7733f05411263473c40a951bfb6b
7
- data.tar.gz: beed732e75c3804d18d2b693ba3641c49e76a4f449b3bbd7f208058e56fc54e958656e8cf8d271211b05a0c63a5ded9f906dd3f58f3d57fc2901982158b0e6c1
6
+ metadata.gz: df1cb5b66c36b08d91d0a4ef851b7c3eb527cba980347a0855b64d132f5f451a0c98b24f8bd03edb49fac4142f76a541976bb3c055115bf6bb799d8fe09059d8
7
+ data.tar.gz: b6557f3d7038e507165a5c34af7924c00ef72ad9d71693fb5d61f34b5ff66a29edc7bbcba7ec0ea257efc3d304887c8eca840c429ffa73c5ad0cb7a03c2a672f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lino (0.1.0)
4
+ lino (1.0.0)
5
5
  hamster (~> 3.0)
6
6
  open4 (~> 1.3)
7
7
 
@@ -10,6 +10,7 @@ GEM
10
10
  specs:
11
11
  concurrent-ruby (1.0.2)
12
12
  diff-lcs (1.3)
13
+ gem-release (0.7.4)
13
14
  hamster (3.0.0)
14
15
  concurrent-ruby (~> 1.0)
15
16
  open4 (1.3.4)
@@ -33,6 +34,7 @@ PLATFORMS
33
34
 
34
35
  DEPENDENCIES
35
36
  bundler (~> 1.14)
37
+ gem-release (~> 0.7)
36
38
  lino!
37
39
  rake (~> 10.0)
38
40
  rspec (~> 3.0)
data/README.md CHANGED
@@ -20,7 +20,141 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ Lino allows commands to be built and executed:
24
+
25
+ ```ruby
26
+ require 'lino'
27
+
28
+ command_line = Lino::CommandLineBuilder.for_command('ruby')
29
+ .with_flag('-v')
30
+ .with_option('-e', 'puts "Hello"')
31
+ .build
32
+
33
+ puts command_line.to_s
34
+ # => ruby -v -e puts "Hello"
35
+
36
+ command_line.execute
37
+ # ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
38
+ # Hello
39
+ ```
40
+
41
+ ### `Lino::CommandLineBuilder`
42
+
43
+ The `CommandLineBuilder` allows a number of different styles of commands to be built:
44
+
45
+ ```ruby
46
+ # commands with flags
47
+ Lino::CommandLineBuilder.for_command('ls')
48
+ .with_flag('-l')
49
+ .with_flag('-a')
50
+ .build
51
+ .to_s
52
+
53
+ # => ls -l -a
54
+
55
+ # commands with options
56
+ Lino::CommandLineBuilder.for_command('gpg')
57
+ .with_option('--recipient', 'tobyclemson@gmail.com')
58
+ .with_option('--sign', './doc.txt')
59
+ .build
60
+ .to_s
61
+
62
+ # => gpg --recipient tobyclemson@gmail.com --sign ./doc.txt
63
+
64
+ # commands with arguments
65
+ Lino::CommandLineBuilder.for_command('diff')
66
+ .with_argument('./file1.txt')
67
+ .with_argument('./file2.txt')
68
+ .build
69
+ .to_s
70
+
71
+ # => diff ./file1.txt ./file2.txt
72
+
73
+ # commands with custom option separator
74
+ Lino::CommandLineBuilder.for_command('java')
75
+ .with_option_separator(':')
76
+ .with_option('-splash', './images/splash.jpg')
77
+ .with_argument('./application.jar')
78
+ .build
79
+ .to_s
80
+
81
+ # => java -splash:./images/splash.jpg ./application.jar
82
+
83
+ # commands using a subcommand style
84
+ Lino::CommandLineBuilder.for_command('git')
85
+ .with_flag('--no-pager')
86
+ .with_subcommand('log') do |sub|
87
+ sub.with_option('--since', '2016-01-01')
88
+ end
89
+ .build
90
+ .to_s
91
+
92
+ # => git --no-pager log --since 2016-01-01
93
+
94
+ # commands with multiple levels of subcommand
95
+ Lino::CommandLineBuilder.for_command('gcloud')
96
+ .with_subcommand('sql')
97
+ .with_subcommand('instances')
98
+ .with_subcommand('set-root-password')
99
+ .with_subcommand('some-database') do |sub|
100
+ sub.with_option('--password', 'super-secure')
101
+ end
102
+ .build
103
+ .to_s
104
+
105
+ # => gcloud sql instances set-root-password some-database --password super-secure
106
+
107
+ # commands controlled by environment variables
108
+ Lino::CommandLineBuilder.for_command('node')
109
+ .with_environment_variable('PORT', '3030')
110
+ .with_environment_variable('LOG_LEVEL', 'debug')
111
+ .with_argument('./server.js')
112
+ .build
113
+ .to_s
114
+
115
+ # => PORT=3030 LOG_LEVEL=debug node ./server.js
116
+ ```
117
+
118
+ ### `Lino::CommandLine`
119
+
120
+ A `CommandLine` can be executed using the `#execute` method:
121
+
122
+ ```ruby
123
+ command_line = Lino::CommandLineBuilder.for_command('ls')
124
+ .with_flag('-l')
125
+ .with_flag('-a')
126
+ .with_argument('/')
127
+ .build
128
+
129
+ command_line.execute
130
+
131
+ # => <contents of / directory>
132
+ ```
133
+
134
+ By default, the standard input stream is empty and the process writes to the standard output and error streams.
135
+
136
+ To populate standard input:
137
+
138
+ ```ruby
139
+ command_line.execute(stdin: 'something to be passed to standard input')
140
+ ```
141
+
142
+ The `stdin` option supports any object that responds to `each`, `read` or `to_s`.
143
+
144
+ To provide custom streams for standard output or standard error:
145
+
146
+ ```ruby
147
+ require 'stringio'
148
+
149
+ stdout = StringIO.new
150
+ stderr = StringIO.new
151
+
152
+ command_line.execute(stdout: stdout, stderr: stderr)
153
+
154
+ puts "[output: #{stdout.string}, error: #{stderr.string}]"
155
+ ```
156
+
157
+ The `stdout` and `stderr` options support any object that responds to `<<`.
24
158
 
25
159
  ## Development
26
160
 
data/lib/lino/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lino
2
- VERSION = '0.1.0'
2
+ VERSION = '1.0.0'
3
3
  end
data/lino.gemspec CHANGED
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'bundler', '~> 1.14'
31
31
  spec.add_development_dependency 'rake', '~> 10.0'
32
32
  spec.add_development_dependency 'rspec', '~> 3.0'
33
+ spec.add_development_dependency 'gem-release', '~> 0.7'
33
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: gem-release
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '0.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '0.7'
83
97
  description: Command line builders and executors.
84
98
  email:
85
99
  - tobyclemson@gmail.com