command_kit 0.1.0.pre1 → 0.2.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 +4 -4
- data/.github/workflows/ruby.yml +15 -0
- data/.rubocop.yml +138 -0
- data/ChangeLog.md +34 -2
- data/Gemfile +3 -0
- data/README.md +135 -214
- data/Rakefile +3 -2
- data/command_kit.gemspec +4 -4
- data/examples/colors.rb +30 -0
- data/examples/command.rb +65 -0
- data/examples/pager.rb +30 -0
- data/gemspec.yml +10 -2
- data/lib/command_kit/arguments/argument.rb +16 -44
- data/lib/command_kit/arguments/argument_value.rb +3 -30
- data/lib/command_kit/arguments.rb +66 -20
- data/lib/command_kit/colors.rb +253 -45
- data/lib/command_kit/command.rb +50 -3
- data/lib/command_kit/command_name.rb +9 -0
- data/lib/command_kit/commands/auto_load/subcommand.rb +3 -0
- data/lib/command_kit/commands/auto_load.rb +16 -0
- data/lib/command_kit/commands/auto_require.rb +16 -0
- data/lib/command_kit/commands/command.rb +3 -0
- data/lib/command_kit/commands/help.rb +2 -0
- data/lib/command_kit/commands/parent_command.rb +7 -0
- data/lib/command_kit/commands/subcommand.rb +15 -0
- data/lib/command_kit/commands.rb +40 -4
- data/lib/command_kit/description.rb +15 -2
- data/lib/command_kit/env/home.rb +9 -0
- data/lib/command_kit/env/path.rb +15 -0
- data/lib/command_kit/env.rb +4 -0
- data/lib/command_kit/examples.rb +15 -2
- data/lib/command_kit/exception_handler.rb +4 -0
- data/lib/command_kit/help/man.rb +74 -47
- data/lib/command_kit/help.rb +10 -1
- data/lib/command_kit/inflector.rb +49 -17
- data/lib/command_kit/interactive.rb +239 -0
- data/lib/command_kit/main.rb +20 -9
- data/lib/command_kit/man.rb +44 -0
- data/lib/command_kit/open_app.rb +69 -0
- data/lib/command_kit/options/option.rb +36 -9
- data/lib/command_kit/options/option_value.rb +42 -3
- data/lib/command_kit/options/parser.rb +44 -17
- data/lib/command_kit/options/quiet.rb +3 -0
- data/lib/command_kit/options/verbose.rb +5 -0
- data/lib/command_kit/options/version.rb +6 -0
- data/lib/command_kit/options.rb +59 -10
- data/lib/command_kit/os/linux.rb +157 -0
- data/lib/command_kit/os.rb +165 -11
- data/lib/command_kit/package_manager.rb +200 -0
- data/lib/command_kit/pager.rb +84 -9
- data/lib/command_kit/printing/indent.rb +25 -2
- data/lib/command_kit/printing.rb +23 -0
- data/lib/command_kit/program_name.rb +7 -0
- data/lib/command_kit/stdio.rb +24 -0
- data/lib/command_kit/sudo.rb +40 -0
- data/lib/command_kit/terminal.rb +159 -0
- data/lib/command_kit/usage.rb +14 -0
- data/lib/command_kit/version.rb +1 -1
- data/lib/command_kit/xdg.rb +21 -1
- data/lib/command_kit.rb +1 -0
- data/spec/arguments/argument_spec.rb +5 -41
- data/spec/arguments/argument_value_spec.rb +1 -61
- data/spec/arguments_spec.rb +8 -25
- data/spec/colors_spec.rb +277 -13
- data/spec/command_name_spec.rb +1 -1
- data/spec/command_spec.rb +4 -1
- data/spec/commands/auto_load/subcommand_spec.rb +1 -1
- data/spec/commands/auto_load_spec.rb +1 -1
- data/spec/commands/auto_require_spec.rb +2 -2
- data/spec/commands/help_spec.rb +1 -1
- data/spec/commands/parent_command_spec.rb +1 -1
- data/spec/commands/subcommand_spec.rb +1 -1
- data/spec/commands_spec.rb +2 -2
- data/spec/description_spec.rb +1 -25
- data/spec/env/home_spec.rb +1 -1
- data/spec/env/path_spec.rb +1 -1
- data/spec/examples_spec.rb +1 -25
- data/spec/exception_handler_spec.rb +1 -1
- data/spec/help/man_spec.rb +316 -0
- data/spec/help_spec.rb +0 -25
- data/spec/inflector_spec.rb +71 -9
- data/spec/interactive_spec.rb +415 -0
- data/spec/main_spec.rb +7 -7
- data/spec/man_spec.rb +46 -0
- data/spec/open_app_spec.rb +85 -0
- data/spec/options/option_spec.rb +48 -9
- data/spec/options/option_value_spec.rb +53 -4
- data/spec/options_spec.rb +1 -1
- data/spec/os/linux_spec.rb +154 -0
- data/spec/os_spec.rb +201 -14
- data/spec/package_manager_spec.rb +806 -0
- data/spec/pager_spec.rb +78 -15
- data/spec/printing/indent_spec.rb +1 -1
- data/spec/printing_spec.rb +10 -2
- data/spec/program_name_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -3
- data/spec/sudo_spec.rb +51 -0
- data/spec/{console_spec.rb → terminal_spec.rb} +65 -35
- data/spec/usage_spec.rb +2 -2
- data/spec/xdg_spec.rb +1 -1
- metadata +32 -13
- data/lib/command_kit/arguments/usage.rb +0 -6
- data/lib/command_kit/console.rb +0 -141
- data/lib/command_kit/options/usage.rb +0 -6
@@ -18,6 +18,9 @@ module CommandKit
|
|
18
18
|
module Verbose
|
19
19
|
include Options
|
20
20
|
|
21
|
+
#
|
22
|
+
# @api private
|
23
|
+
#
|
21
24
|
module ModuleMethods
|
22
25
|
#
|
23
26
|
# Defines a `-v, --verbose` option or extends {ModuleMethods}, depending
|
@@ -47,6 +50,8 @@ module CommandKit
|
|
47
50
|
#
|
48
51
|
# @return [Boolean]
|
49
52
|
#
|
53
|
+
# @api public
|
54
|
+
#
|
50
55
|
def verbose?
|
51
56
|
@verbose
|
52
57
|
end
|
@@ -35,6 +35,8 @@ module CommandKit
|
|
35
35
|
# @return [String, nil]
|
36
36
|
# The classes version string.
|
37
37
|
#
|
38
|
+
# @api public
|
39
|
+
#
|
38
40
|
def version(new_version=nil)
|
39
41
|
if new_version
|
40
42
|
@version = new_version
|
@@ -47,6 +49,8 @@ module CommandKit
|
|
47
49
|
#
|
48
50
|
# @see ClassMethods#version
|
49
51
|
#
|
52
|
+
# @api public
|
53
|
+
#
|
50
54
|
def version
|
51
55
|
self.class.version
|
52
56
|
end
|
@@ -54,6 +58,8 @@ module CommandKit
|
|
54
58
|
#
|
55
59
|
# Prints the version.
|
56
60
|
#
|
61
|
+
# @api public
|
62
|
+
#
|
57
63
|
def print_version
|
58
64
|
puts "#{command_name} #{version}"
|
59
65
|
end
|
data/lib/command_kit/options.rb
CHANGED
@@ -9,24 +9,28 @@ module CommandKit
|
|
9
9
|
#
|
10
10
|
# include CommandKit::Options
|
11
11
|
#
|
12
|
-
# option :foo,
|
13
|
-
#
|
14
|
-
# desc:
|
12
|
+
# option :foo, short: '-f',
|
13
|
+
# value: {type: String},
|
14
|
+
# desc: "Foo option"
|
15
15
|
#
|
16
|
-
# option :bar,
|
17
|
-
#
|
18
|
-
#
|
16
|
+
# option :bar, short: '-b',
|
17
|
+
# value: {
|
18
|
+
# type: String,
|
19
|
+
# usage: 'STR:STR:...'
|
20
|
+
# },
|
19
21
|
# desc: "Bar option" do |arg|
|
20
22
|
# @bar = arg.split(':')
|
21
23
|
# end
|
24
|
+
#
|
25
|
+
# ### initialize and using instance variables
|
22
26
|
#
|
23
|
-
# option :number, type: Integer,
|
27
|
+
# option :number, value: {type: Integer},
|
24
28
|
# desc: 'Numbers' do |num|
|
25
29
|
# @numbers << num
|
26
30
|
# end
|
27
31
|
#
|
28
|
-
# def initialize
|
29
|
-
# super
|
32
|
+
# def initialize(**kwargs)
|
33
|
+
# super(**kwargs)
|
30
34
|
#
|
31
35
|
# @numbers = []
|
32
36
|
# end
|
@@ -34,6 +38,9 @@ module CommandKit
|
|
34
38
|
module Options
|
35
39
|
include Parser
|
36
40
|
|
41
|
+
#
|
42
|
+
# @api private
|
43
|
+
#
|
37
44
|
module ModuleMethods
|
38
45
|
#
|
39
46
|
# Extends {ClassMethods} or {ModuleMethods}, depending on whether
|
@@ -64,6 +71,8 @@ module CommandKit
|
|
64
71
|
#
|
65
72
|
# @return [Hash{Symbol => Option}]
|
66
73
|
#
|
74
|
+
# @api semipublic
|
75
|
+
#
|
67
76
|
def options
|
68
77
|
@options ||= if superclass.kind_of?(ClassMethods)
|
69
78
|
superclass.options.dup
|
@@ -78,6 +87,31 @@ module CommandKit
|
|
78
87
|
# @param [Symbol] name
|
79
88
|
# The option name.
|
80
89
|
#
|
90
|
+
# @param [Hash{Symbol => Object}] kwargs
|
91
|
+
# Keyword arguments.
|
92
|
+
#
|
93
|
+
# @option kwargs [String, nil] short
|
94
|
+
# Optional short-flag for the option.
|
95
|
+
#
|
96
|
+
# @option kwargs [String, nil] long
|
97
|
+
# Optional explicit long-flag for the option.
|
98
|
+
#
|
99
|
+
# @option kwargs [Boolean] equals
|
100
|
+
# Specifies whether the option is of the form (`--opt=value`).
|
101
|
+
#
|
102
|
+
# @option kwargs [Hash{Symbol => Object}, true, false, nil] value
|
103
|
+
# Keyword arguments for {OptionValue#initialize}, or `nil` if the option
|
104
|
+
# has no additional value.
|
105
|
+
#
|
106
|
+
# @option value [Class, Hash, Array, Regexp] type
|
107
|
+
# The type of the option's value.
|
108
|
+
#
|
109
|
+
# @option value [String, nil] usage
|
110
|
+
# The usage string for the option's value.
|
111
|
+
#
|
112
|
+
# @option kwargs [String] desc
|
113
|
+
# The description for the option.
|
114
|
+
#
|
81
115
|
# @yield [(value)]
|
82
116
|
# If a block is given, it will be passed the parsed option value.
|
83
117
|
#
|
@@ -86,6 +120,10 @@ module CommandKit
|
|
86
120
|
#
|
87
121
|
# @return [Option]
|
88
122
|
#
|
123
|
+
# @raise [TypeError]
|
124
|
+
# The `value` keyword argument was not a `Hash`, `true`, `false`, or
|
125
|
+
# `nil`.
|
126
|
+
#
|
89
127
|
# @example Define an option:
|
90
128
|
# option :foo, desc: "Foo option"
|
91
129
|
#
|
@@ -139,6 +177,8 @@ module CommandKit
|
|
139
177
|
# # ...
|
140
178
|
# end
|
141
179
|
#
|
180
|
+
# @api public
|
181
|
+
#
|
142
182
|
def option(name,**kwargs,&block)
|
143
183
|
options[name] = Option.new(name,**kwargs,&block)
|
144
184
|
end
|
@@ -147,6 +187,9 @@ module CommandKit
|
|
147
187
|
# Hash of parsed option values.
|
148
188
|
#
|
149
189
|
# @return [Hash{Symbol => Object}]
|
190
|
+
#
|
191
|
+
# @api semipublic
|
192
|
+
#
|
150
193
|
attr_reader :options
|
151
194
|
|
152
195
|
#
|
@@ -154,7 +197,13 @@ module CommandKit
|
|
154
197
|
# {Parser#option_parser option parser}.
|
155
198
|
#
|
156
199
|
# @param [Hash{Symbol => Object}] options
|
157
|
-
# Optional
|
200
|
+
# Optional prepopulated options hash.
|
201
|
+
#
|
202
|
+
# @note
|
203
|
+
# The {#option_parser} will populate {#options} and also call any
|
204
|
+
# {ClassMethods#option option} blocks with the parsed option values.
|
205
|
+
#
|
206
|
+
# @api public
|
158
207
|
#
|
159
208
|
def initialize(options: {}, **kwargs)
|
160
209
|
@options = options
|
@@ -0,0 +1,157 @@
|
|
1
|
+
require 'command_kit/os'
|
2
|
+
|
3
|
+
module CommandKit
|
4
|
+
module OS
|
5
|
+
#
|
6
|
+
# Provides methods for determining the specific type of Linux.
|
7
|
+
#
|
8
|
+
# ## Example
|
9
|
+
#
|
10
|
+
# require 'command_kit/command'
|
11
|
+
# require 'command_kit/os/linux'
|
12
|
+
#
|
13
|
+
# class Command < CommandKit::Command
|
14
|
+
#
|
15
|
+
# include CommandKit::OS::Linux
|
16
|
+
#
|
17
|
+
# def run
|
18
|
+
# if debian_linux?
|
19
|
+
# # ...
|
20
|
+
# elsif redhat_linux?
|
21
|
+
# # ...
|
22
|
+
# elsif suse_linux?
|
23
|
+
# # ...
|
24
|
+
# elsif arch_linux?
|
25
|
+
# # ...
|
26
|
+
# end
|
27
|
+
# end
|
28
|
+
# end
|
29
|
+
#
|
30
|
+
# @since 0.2.0
|
31
|
+
#
|
32
|
+
module Linux
|
33
|
+
#
|
34
|
+
# @api private
|
35
|
+
#
|
36
|
+
module ModuleMethods
|
37
|
+
#
|
38
|
+
# Extends {ClassMethods} or {ModuleMethods}, depending on whether
|
39
|
+
# {OS} is being included into a class or a module..
|
40
|
+
#
|
41
|
+
# @param [Class, Module] context
|
42
|
+
# The class or module which is including {OS}.
|
43
|
+
#
|
44
|
+
def included(context)
|
45
|
+
super(context)
|
46
|
+
|
47
|
+
if context.class == Module
|
48
|
+
context.extend ModuleMethods
|
49
|
+
else
|
50
|
+
context.extend ClassMethods
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
extend ModuleMethods
|
56
|
+
|
57
|
+
module ClassMethods
|
58
|
+
#
|
59
|
+
# Determines the specific Linux distro.
|
60
|
+
#
|
61
|
+
# @return [:fedora, :redhat, :debian, :suse, :arch, nil]
|
62
|
+
# Returns the type of Linux distro or `nil` if the Linux distro could
|
63
|
+
# not be determined.
|
64
|
+
#
|
65
|
+
# @api semipublic
|
66
|
+
#
|
67
|
+
def linux_distro
|
68
|
+
if File.file?('/etc/fedora-release') then :fedora
|
69
|
+
elsif File.file?('/etc/redhat-release') then :redhat
|
70
|
+
elsif File.file?('/etc/debian_version') then :debian
|
71
|
+
elsif File.file?('/etc/SuSE-release') then :suse
|
72
|
+
elsif File.file?('/etc/arch-release') then :arch
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# The Linux distro.
|
78
|
+
#
|
79
|
+
# @return [:fedora, :redhat, :debian, :suse, :arch, nil]
|
80
|
+
#
|
81
|
+
# @api public
|
82
|
+
attr_reader :linux_distro
|
83
|
+
|
84
|
+
#
|
85
|
+
# Initializes the command.
|
86
|
+
#
|
87
|
+
# @param [:fedora, :redhat, :debian, :suse, :arch, nil] linux_distro
|
88
|
+
# Overrides the default detected Linux distro.
|
89
|
+
#
|
90
|
+
# @param [Hash{Symbol => Object}] kwargs
|
91
|
+
# Additional keyword arguments.
|
92
|
+
#
|
93
|
+
# @api public
|
94
|
+
#
|
95
|
+
def initialize(linux_distro: self.class.linux_distro, **kwargs)
|
96
|
+
super(**kwargs)
|
97
|
+
|
98
|
+
@linux_distro = linux_distro
|
99
|
+
end
|
100
|
+
|
101
|
+
#
|
102
|
+
# Determines if the current OS is RedHat Linux based distro.
|
103
|
+
#
|
104
|
+
# @return [Boolean]
|
105
|
+
#
|
106
|
+
# @api public
|
107
|
+
#
|
108
|
+
def redhat_linux?
|
109
|
+
@linux_distro == :redhat
|
110
|
+
end
|
111
|
+
|
112
|
+
#
|
113
|
+
# Determines if the current OS is Fedora Linux based distro.
|
114
|
+
#
|
115
|
+
# @return [Boolean]
|
116
|
+
#
|
117
|
+
# @api public
|
118
|
+
#
|
119
|
+
def fedora_linux?
|
120
|
+
@linux_distro == :fedora
|
121
|
+
end
|
122
|
+
|
123
|
+
#
|
124
|
+
# Determines if the current OS is Debian Linux based distro.
|
125
|
+
#
|
126
|
+
# @return [Boolean]
|
127
|
+
#
|
128
|
+
# @api public
|
129
|
+
#
|
130
|
+
def debian_linux?
|
131
|
+
@linux_distro == :debian
|
132
|
+
end
|
133
|
+
|
134
|
+
#
|
135
|
+
# Determines if the current OS is SUSE Linux based distro.
|
136
|
+
#
|
137
|
+
# @return [Boolean]
|
138
|
+
#
|
139
|
+
# @api public
|
140
|
+
#
|
141
|
+
def suse_linux?
|
142
|
+
@linux_distro == :suse
|
143
|
+
end
|
144
|
+
|
145
|
+
#
|
146
|
+
# Determines if the current OS is Arch Linux based distro.
|
147
|
+
#
|
148
|
+
# @return [Boolean]
|
149
|
+
#
|
150
|
+
# @api public
|
151
|
+
#
|
152
|
+
def arch_linux?
|
153
|
+
@linux_distro == :arch
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
data/lib/command_kit/os.rb
CHANGED
@@ -4,26 +4,111 @@ module CommandKit
|
|
4
4
|
#
|
5
5
|
# ## Examples
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# require 'command_kit/command'
|
8
|
+
# require 'command_kit/os'
|
8
9
|
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
10
|
+
# class Command < CommandKit::Command
|
11
|
+
#
|
12
|
+
# include CommandKit::OS
|
13
|
+
#
|
14
|
+
# def main(*argv)
|
15
|
+
# if linux?
|
16
|
+
# # ...
|
17
|
+
# elsif macos?
|
18
|
+
# # ...
|
19
|
+
# elsif freebsd?
|
20
|
+
# # ...
|
21
|
+
# elsif windows?
|
22
|
+
# # ...
|
23
|
+
# end
|
16
24
|
# end
|
25
|
+
#
|
17
26
|
# end
|
18
27
|
#
|
19
28
|
module OS
|
29
|
+
#
|
30
|
+
# @api private
|
31
|
+
#
|
32
|
+
module ModuleMethods
|
33
|
+
#
|
34
|
+
# Extends {ClassMethods} or {ModuleMethods}, depending on whether
|
35
|
+
# {OS} is being included into a class or a module..
|
36
|
+
#
|
37
|
+
# @param [Class, Module] context
|
38
|
+
# The class or module which is including {OS}.
|
39
|
+
#
|
40
|
+
def included(context)
|
41
|
+
super(context)
|
42
|
+
|
43
|
+
if context.class == Module
|
44
|
+
context.extend ModuleMethods
|
45
|
+
else
|
46
|
+
context.extend ClassMethods
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
extend ModuleMethods
|
52
|
+
|
53
|
+
module ClassMethods
|
54
|
+
#
|
55
|
+
# Determines the current OS.
|
56
|
+
#
|
57
|
+
# @return [:linux, :macos, :freebsd, :openbsd, :netbsd, :windows, nil]
|
58
|
+
# The OS type or `nil` if the OS could not be determined.
|
59
|
+
#
|
60
|
+
# @api semipublic
|
61
|
+
#
|
62
|
+
# @since 0.2.0
|
63
|
+
#
|
64
|
+
def os
|
65
|
+
if RUBY_PLATFORM.include?('linux') then :linux
|
66
|
+
elsif RUBY_PLATFORM.include?('darwin') then :macos
|
67
|
+
elsif RUBY_PLATFORM.include?('freebsd') then :freebsd
|
68
|
+
elsif RUBY_PLATFORM.include?('openbsd') then :openbsd
|
69
|
+
elsif RUBY_PLATFORM.include?('netbsd') then :netbsd
|
70
|
+
elsif Gem.win_platform? then :windows
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# The current OS.
|
76
|
+
#
|
77
|
+
# @return [:linux, :macos, :freebsd, :openbsd, :netbsd, :windows, nil]
|
78
|
+
#
|
79
|
+
# @api public
|
80
|
+
#
|
81
|
+
# @since 0.2.0
|
82
|
+
attr_reader :os
|
83
|
+
|
84
|
+
#
|
85
|
+
# Initializes the command.
|
86
|
+
#
|
87
|
+
# @param [:linux, :macos, :freebsd, :openbsd, :netbsd, :windows, nil] os
|
88
|
+
# Overrides the default OS.
|
89
|
+
#
|
90
|
+
# @param [Hash{Symbol => Object}] kwargs
|
91
|
+
# Additional keyword arguments.
|
92
|
+
#
|
93
|
+
# @api public
|
94
|
+
#
|
95
|
+
# @since 0.2.0
|
96
|
+
#
|
97
|
+
def initialize(os: self.class.os, **kwargs)
|
98
|
+
super(**kwargs)
|
99
|
+
|
100
|
+
@os = os
|
101
|
+
end
|
102
|
+
|
20
103
|
#
|
21
104
|
# Determines if the current OS is Linux.
|
22
105
|
#
|
23
106
|
# @return [Boolean]
|
24
107
|
#
|
108
|
+
# @api public
|
109
|
+
#
|
25
110
|
def linux?
|
26
|
-
|
111
|
+
@os == :linux
|
27
112
|
end
|
28
113
|
|
29
114
|
#
|
@@ -31,8 +116,75 @@ module CommandKit
|
|
31
116
|
#
|
32
117
|
# @return [Boolean]
|
33
118
|
#
|
119
|
+
# @api public
|
120
|
+
#
|
34
121
|
def macos?
|
35
|
-
|
122
|
+
@os == :macos
|
123
|
+
end
|
124
|
+
|
125
|
+
#
|
126
|
+
# Determines if the current OS is FreeBSD.
|
127
|
+
#
|
128
|
+
# @return [Boolean]
|
129
|
+
#
|
130
|
+
# @api public
|
131
|
+
#
|
132
|
+
# @since 0.2.0
|
133
|
+
#
|
134
|
+
def freebsd?
|
135
|
+
@os == :freebsd
|
136
|
+
end
|
137
|
+
|
138
|
+
#
|
139
|
+
# Determines if the current OS is OpenBSD.
|
140
|
+
#
|
141
|
+
# @return [Boolean]
|
142
|
+
#
|
143
|
+
# @api public
|
144
|
+
#
|
145
|
+
# @since 0.2.0
|
146
|
+
#
|
147
|
+
def openbsd?
|
148
|
+
@os == :openbsd
|
149
|
+
end
|
150
|
+
|
151
|
+
#
|
152
|
+
# Determines if the current OS is NetBSD.
|
153
|
+
#
|
154
|
+
# @return [Boolean]
|
155
|
+
#
|
156
|
+
# @api public
|
157
|
+
#
|
158
|
+
# @since 0.2.0
|
159
|
+
#
|
160
|
+
def netbsd?
|
161
|
+
@os == :netbsd
|
162
|
+
end
|
163
|
+
|
164
|
+
#
|
165
|
+
# Determines if the current OS is BSD based.
|
166
|
+
#
|
167
|
+
# @return [Boolean]
|
168
|
+
#
|
169
|
+
# @since 0.2.0
|
170
|
+
#
|
171
|
+
# @api public
|
172
|
+
#
|
173
|
+
def bsd?
|
174
|
+
freebsd? || openbsd? || netbsd?
|
175
|
+
end
|
176
|
+
|
177
|
+
#
|
178
|
+
# Determines if the current OS is UNIX based.
|
179
|
+
#
|
180
|
+
# @return [Boolean]
|
181
|
+
#
|
182
|
+
# @since 0.2.0
|
183
|
+
#
|
184
|
+
# @api public
|
185
|
+
#
|
186
|
+
def unix?
|
187
|
+
linux? || macos? || bsd?
|
36
188
|
end
|
37
189
|
|
38
190
|
#
|
@@ -40,8 +192,10 @@ module CommandKit
|
|
40
192
|
#
|
41
193
|
# @return [Boolean]
|
42
194
|
#
|
195
|
+
# @api public
|
196
|
+
#
|
43
197
|
def windows?
|
44
|
-
|
198
|
+
@os == :windows
|
45
199
|
end
|
46
200
|
end
|
47
201
|
end
|