kanrisuru 0.16.13 → 0.16.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 247c662cf0cedccfd41d702e372cc536958fbfd16c583643201e13e528c3c049
4
- data.tar.gz: 8d6256b6b5dfcf84793851432e0dfedfd352222bebb04bc530bb15bc9cdcd0d5
3
+ metadata.gz: e31b687d1a4fbd77c62a502ffe4e3ec6e7c314c9e8335fc1964e8fcaca75f554
4
+ data.tar.gz: e36de3bb37966123d08c25aa6023be77f932705e49d005590f63a45d6a8c2d1b
5
5
  SHA512:
6
- metadata.gz: 31bde2ec4894d4e6962ff99b438b67502687446918d59180693d11275e25944c1af1e22ad923e799c4208e7fff62ad93e9867082765b956d213b12eb5a950092
7
- data.tar.gz: b69992182e95c7f3cf3061cd4f25d875ff6095ee7e18580a39f24a6be8c6978401d9023e55be01bbb0aac92b74ec904a016abdf60a4302c9fc1cfdd32df276b2
6
+ metadata.gz: fb5549794cf62990bd0026c315b5c9828884b814f28ea82a7e04f944d12d2d52a77131d72b64e1d2c3d9d9c525f3bd468d020d69f0539304818f78b8b070b5ef
7
+ data.tar.gz: dd58f2d707f62615d4a7cc997dea5f27ca0a1678e6d60478f5548c4953685b469f61f8928c879b4965a56c51de4ec8ddb722980bd14cb9f1793355b001f60678
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## Kanrisuru 0.16.17 (January 10, 2022) ##
2
+ * Add additional options to `wget` command.
3
+ * Rename some options to better reflect options from wget program.
4
+
5
+ ## Kanrisuru 0.16.16 (January 08, 2022) ##
6
+ * Fix issue with `download` command when downloading directories from remote server.
7
+
8
+ ## Kanrisuru 0.16.15 (January 07, 2022) ##
9
+ * Add recursive and all_targets opts to `umount` command.
10
+
11
+ ## Kanrisuru 0.16.14 (January 02, 2022) ##
12
+ * Fix `get_user` command by parsing output to get user name if uid is passed in.
13
+
1
14
  ## Kanrisuru 0.16.13 (January 01, 2022) ##
2
15
  * Add `non_unique` and `system` opts to `create_group` command
3
16
 
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <h1>
2
- <img src="./logo/kanrisuru-logo.png" alt="Kanrisuru" width="400" height="100%"/>
2
+ <img src="https://s3.us-east-2.amazonaws.com/kanrisuru.com/kanrisuru-logo.png" alt="Kanrisuru" width="400" height="100%"/>
3
3
  </h1>
4
4
 
5
5
  <p>
@@ -126,8 +126,7 @@ module Kanrisuru
126
126
  field = field.downcase
127
127
  field = field.gsub(/\s/, '_')
128
128
  field = field.gsub('-', '_')
129
- field = field.gsub(':', '')
130
- field
129
+ field.gsub(':', '')
131
130
  end
132
131
 
133
132
  def dmi_type_to_struct(type)
@@ -16,6 +16,9 @@ module Kanrisuru
16
16
 
17
17
  command.append_flag('-l', opts[:lazy])
18
18
  command.append_flag('-f', opts[:force])
19
+
20
+ command.append_flag('--all-targets', opts[:all_targets])
21
+ command.append_flag('--recursive', opts[:recursive])
19
22
 
20
23
  if Kanrisuru::Util.present?(all)
21
24
  command.append_flag('-a')
@@ -4,21 +4,41 @@ module Kanrisuru
4
4
  module Core
5
5
  module Transfer
6
6
  def download(remote_path, local_path = nil, opts = {})
7
+ recursive = opts[:recursive] || false
8
+
9
+ remote_path += '/' if !remote_path.end_with?('/') && recursive
10
+ local_path += '/' if !local_path.nil? && !local_path.end_with?('/') && recursive
11
+
7
12
  if local_path.instance_of?(Hash)
8
13
  opts = local_path
9
14
  local_path = nil
10
15
  end
11
16
 
12
- tmp_path = "/tmp/kanrisuru-tmp-#{Time.now.to_i}-#{object_id}"
17
+ tmp_name = "kanrisuru-tmp-#{Time.now.to_i}-#{object_id}"
18
+ tmp_path = "/tmp/#{tmp_name}"
13
19
 
14
20
  begin
15
- result = cp(remote_path, tmp_path, force: true)
21
+ result = cp(remote_path, tmp_path, force: true, follow: true, recursive: recursive)
16
22
  raise 'Unable to copy remote file to temp path' unless result.success?
17
23
 
24
+ result = chown(tmp_path, owner: @username, group: @username, recursive: recursive)
25
+ raise 'Unable to update owner or group for temp path' unless result.success?
26
+
27
+ result = chmod(tmp_path, 'u+r', recursive: true)
28
+ raise 'Unable to update owner permission read access' unless result.success?
29
+
30
+ local_path = ::File.expand_path(local_path) if local_path
18
31
  result = ssh.scp.download!(tmp_path, local_path, opts)
19
- Kanrisuru::Util.blank?(local_path) ? result : local_path
32
+ return false unless result
33
+
34
+ if Kanrisuru::Util.present?(local_path) && recursive
35
+ remote_dirname = remote_path.split('/').last
36
+ FileUtils.mv("#{local_path}/#{tmp_name}", "#{local_path}/#{remote_dirname}")
37
+ else
38
+ result
39
+ end
20
40
  ensure
21
- rm(tmp_path, force: true) if inode?(tmp_path)
41
+ rm(tmp_path, force: true, recursive: recursive) if inode?(tmp_path)
22
42
  end
23
43
  end
24
44
  end
@@ -12,9 +12,7 @@ module Kanrisuru
12
12
 
13
13
  ## Need to copy internal dir contents, not the tmp dir itself
14
14
  if opts[:recursive]
15
- unless dir?(remote_path)
16
- mkdir(remote_path, silent: true)
17
- end
15
+ mkdir(remote_path, silent: true) unless dir?(remote_path)
18
16
 
19
17
  result = cp("#{tmp_path}/*", remote_path, recursive: true)
20
18
  else
@@ -22,6 +20,7 @@ module Kanrisuru
22
20
  end
23
21
 
24
22
  raise "Unable to move file to remote path - #{result.command.raw_result}" unless result.success?
23
+
25
24
  stat(remote_path)
26
25
  ensure
27
26
  rm(tmp_path, force: true) if inode?(tmp_path)
@@ -105,7 +105,12 @@ module Kanrisuru
105
105
  end
106
106
 
107
107
  command.append_arg('--post-file', opts[:post_file])
108
+ command.append_arg('--method', opts[:method])
109
+
108
110
  command.append_flag('--content-disposition', opts[:content_disposition])
111
+ command.append_flag('--content-on-error', opts[:content_on_error])
112
+ command.append_flag('--trust-server-names', opts[:trust_server_names])
113
+ command.append_flag('--retry-on-host-error', opts[:retry_on_host_error])
109
114
 
110
115
  ## SSL / TLS
111
116
  if Kanrisuru::Util.present?(opts[:secure_protocol])
@@ -123,18 +128,24 @@ module Kanrisuru
123
128
  command.append_arg('--ca-directory', opts[:ca_directory])
124
129
  command.append_arg('--random-file', opts[:random_file])
125
130
  command.append_arg('--egd-file', opts[:egd_file])
131
+ command.append_flag('--https-only', opts[:https_only])
126
132
 
127
- ## FTP
133
+ ## FTP / FTPS
128
134
  command.append_arg('--ftp-user', opts[:ftp_user])
129
135
  command.append_arg('--ftp-password', opts[:ftp_password])
130
136
  command.append_flag('--no-remove-listing', opts[:no_remove_listing])
131
137
  command.append_flag('--no-glob', opts[:no_glob])
132
138
  command.append_flag('--no-passive-ftp', opts[:no_passive_ftp])
133
139
  command.append_flag('--retr-symlinks', opts[:retr_symlinks])
140
+ command.append_flag('--preserve-permissions', opts[:preserve_permissions])
141
+ command.append_flag('--ftps-implicit', opts[:ftps_implicit])
142
+ command.append_flag('--no-ftps-resume-ssl', opts[:no_ftps_resume_ssl])
143
+ command.append_flag('--ftps-clear-data-connection', opts[:ftps_clear_data_connection])
144
+ command.append_flag('--ftps-fallback-to-ftp', opts[:ftps_fallback_to_ftp])
134
145
 
135
146
  ## Recursive Retrieval
136
147
  command.append_flag('--recursive', opts[:recursive])
137
- command.append_arg('--level', opts[:depth])
148
+ command.append_arg('--level', opts[:level])
138
149
  command.append_flag('--delete-after', opts[:delete_after])
139
150
  command.append_flag('--convert-links', opts[:convert_links])
140
151
  command.append_flag('--backup-converted', opts[:backup_converted])
@@ -143,10 +154,13 @@ module Kanrisuru
143
154
  command.append_flag('--strict-comments', opts[:strict_comments])
144
155
 
145
156
  ## Recursive Accept/Reject
146
- command.append_arg('--accept', Kanrisuru::Util.array_join_string(opts[:accept_list]))
147
- command.append_arg('--reject', Kanrisuru::Util.array_join_string(opts[:reject_list]))
148
- command.append_arg('--domains', Kanrisuru::Util.array_join_string(opts[:domain_list]))
149
- command.append_arg('--exclude-domains', Kanrisuru::Util.array_join_string(opts[:exclude_domain_list]))
157
+ command.append_arg('--accept', Kanrisuru::Util.array_join_string(opts[:accept]))
158
+ command.append_arg('--reject', Kanrisuru::Util.array_join_string(opts[:reject]))
159
+ command.append_arg('--accept-regex', opts[:accept_regex])
160
+ command.append_arg('--reject-regex', opts[:reject_regex])
161
+ command.append_arg('--regex_type', opts[:regex_type])
162
+ command.append_arg('--domains', Kanrisuru::Util.array_join_string(opts[:domains]))
163
+ command.append_arg('--exclude-domains', Kanrisuru::Util.array_join_string(opts[:exclude_domains]))
150
164
  command.append_arg('--follow-tags', Kanrisuru::Util.array_join_string(opts[:follow_tags]))
151
165
  command.append_arg('--ignore-tags', Kanrisuru::Util.array_join_string(opts[:ignore_tags]))
152
166
  command.append_arg('--include-directories', Kanrisuru::Util.array_join_string(opts[:include_directories]))
@@ -8,11 +8,16 @@ module Kanrisuru
8
8
  execute_shell(command)
9
9
 
10
10
  Kanrisuru::Result.new(command) do |cmd|
11
- ## Get user id
12
- result = get_uid(user)
13
- break if result.failure?
14
-
15
- uid = result.to_i
11
+ if Kanrisuru::Util.numeric?(user)
12
+ uid = user.to_i
13
+ user = Parser::User.parse(cmd)
14
+ else
15
+ ## Get user id
16
+ result = get_uid(user)
17
+ break if result.failure?
18
+
19
+ uid = result.to_i
20
+ end
16
21
 
17
22
  ## Get all groups for the user, with gid and group name
18
23
  array = Parser::Groups.parse(cmd)
@@ -24,12 +29,12 @@ module Kanrisuru
24
29
  end
25
30
 
26
31
  ## Get home / shell path information
27
- cmd = Kanrisuru::Command.new("getent passwd #{user}")
28
- cmd | "awk -F: '{print $6, $7}'"
32
+ command2 = Kanrisuru::Command.new("getent passwd #{user}")
33
+ command2 | "awk -F: '{print $6, $7}'"
29
34
 
30
- execute(cmd)
35
+ execute(command2)
31
36
 
32
- result = Kanrisuru::Result.new(cmd) do |cmd2|
37
+ result = Kanrisuru::Result.new(command2) do |cmd2|
33
38
  Parser::Getent.parse(cmd2)
34
39
  end
35
40
 
@@ -2,3 +2,4 @@
2
2
 
3
3
  require_relative 'parsers/getent'
4
4
  require_relative 'parsers/groups'
5
+ require_relative 'parsers/user'
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanrisuru
4
+ module Core
5
+ module User
6
+ module Parser
7
+ class User
8
+ def self.parse(command)
9
+ string = command.to_s
10
+ string = string.split[0]
11
+
12
+ matches = string.match(/uid=\d+\((.+)\)/)
13
+ return if !matches || !matches.captures
14
+
15
+ matches.captures.first
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kanrisuru
4
- VERSION = '0.16.13'
4
+ VERSION = '0.16.17'
5
5
  end
@@ -68,7 +68,7 @@ RSpec.describe Kanrisuru::Core::Find do
68
68
  paths: '/dev',
69
69
  iname: 'tty*'
70
70
  ),
71
- "find /dev -iname tty*")
71
+ 'find /dev -iname tty*')
72
72
 
73
73
  expect_command(host.find(
74
74
  paths: '/dev',
@@ -22,11 +22,9 @@ RSpec.describe Kanrisuru::Core::Group do
22
22
  it 'prepares create_group command' do
23
23
  expect_command(host.create_group('admin'), 'groupadd admin')
24
24
  expect_command(host.create_group('admin',
25
- gid: 9000,
26
- non_unique: true
27
- ),
28
- 'groupadd admin -g 9000 -o'
29
- )
25
+ gid: 9000,
26
+ non_unique: true),
27
+ 'groupadd admin -g 9000 -o')
30
28
 
31
29
  expect_command(host.create_group('admin', gid: 12, system: true), 'groupadd admin -g 12 -r')
32
30
  end
@@ -95,6 +95,8 @@ RSpec.describe Kanrisuru::Core::Mount do
95
95
 
96
96
  it 'prepares umount command' do
97
97
  expect_command(host.umount, 'umount')
98
+ expect_command(host.umount(recursive: true, all_targets: true), 'umount --all-targets --recursive')
99
+
98
100
  expect_command(host.umount(
99
101
  fake: true,
100
102
  no_canonicalize: true,
@@ -97,8 +97,11 @@ RSpec.describe Kanrisuru::Core::Stat do
97
97
  },
98
98
  content_disposition: true,
99
99
  secure_protocol: 'SSLv3',
100
+ content_on_error: true,
101
+ trust_server_names: true,
102
+ retry_on_host_error: true,
100
103
  no_check_certificate: true),
101
- "wget --post-data url=https%3A%2F%2Fexample.com%3Fparam%3D123 --content-disposition --secure-protocol SSLv3 --no-check-certificate #{url}")
104
+ "wget --post-data url=https%3A%2F%2Fexample.com%3Fparam%3D123 --content-disposition --content-on-error --trust-server-names --retry-on-host-error --secure-protocol SSLv3 --no-check-certificate #{url}")
102
105
 
103
106
  expect do
104
107
  host.wget(url, secure_protocol: 'SSL')
@@ -115,27 +118,37 @@ RSpec.describe Kanrisuru::Core::Stat do
115
118
 
116
119
  expect_command(host.wget(url,
117
120
  certificate: '~/cert.pem',
121
+ https_only: true,
118
122
  certificate_type: 'PEM',
119
123
  private_key: '~/key.pem',
120
124
  private_key_type: 'PEM',
121
125
  ca_certificate: '~/ca.pem',
122
126
  random_file: '~/random'),
123
- "wget --certificate ~/cert.pem --certificate-type PEM --private-key ~/key.pem --private-key-type PEM --ca-certificate ~/ca.pem --random-file ~/random #{url}")
127
+ "wget --certificate ~/cert.pem --certificate-type PEM --private-key ~/key.pem --private-key-type PEM --ca-certificate ~/ca.pem --random-file ~/random --https-only #{url}")
124
128
 
125
129
  ## FTP
126
- expect_command(host.wget(url,
130
+ expect_command(host.wget("ftp.example.com",
127
131
  ftp_user: 'admin',
128
132
  ftp_password: '12345678',
129
133
  no_remove_listing: true,
130
134
  no_glob: true,
131
135
  no_passive_ftp: true,
132
- retr_symlinks: true),
133
- "wget --ftp-user admin --ftp-password 12345678 --no-remove-listing --no-glob --no-passive-ftp --retr-symlinks #{url}")
136
+ retr_symlinks: true,
137
+ preserve_permissions: true),
138
+ "wget --ftp-user admin --ftp-password 12345678 --no-remove-listing --no-glob --no-passive-ftp --retr-symlinks --preserve-permissions ftp.example.com")
139
+
140
+ expect_command(host.wget("ftps.example.com",
141
+ ftp_user: 'admin',
142
+ ftp_password: '12345678',
143
+ ftps_implicit: true,
144
+ no_ftps_resume_ssl: true,
145
+ ftps_fallback_to_ftp: true,
146
+ ftps_clear_data_connection: true), "wget --ftp-user admin --ftp-password 12345678 --ftps-implicit --no-ftps-resume-ssl --ftps-clear-data-connection --ftps-fallback-to-ftp ftps.example.com")
134
147
 
135
148
  ## Recursive Retrieval
136
149
  expect_command(host.wget(url,
137
150
  recursive: true,
138
- depth: 10,
151
+ level: 10,
139
152
  delete_after: true,
140
153
  convert_links: true,
141
154
  backup_converted: true,
@@ -146,10 +159,13 @@ RSpec.describe Kanrisuru::Core::Stat do
146
159
 
147
160
  ## Recursive Accept/Reject
148
161
  expect_command(host.wget(url,
149
- accept_list: ['.txt', '.html'],
150
- reject_list: ['.csv'],
151
- domain_list: ['example.com'],
152
- exclude_domain_list: ['hackernews.com'],
162
+ accept: ['.txt', '.html'],
163
+ reject: ['.csv'],
164
+ accept_regex: 'https://*',
165
+ regect_regex: 'ftp*',
166
+ regex_type: 'posix',
167
+ domains: ['example.com'],
168
+ exclude_domains: ['hackernews.com'],
153
169
  follow_tags: %w[a div span],
154
170
  ignore_tags: %w[area link],
155
171
  include_directories: ['/gems'],
@@ -159,6 +175,6 @@ RSpec.describe Kanrisuru::Core::Stat do
159
175
  span_hosts: true,
160
176
  relative: true,
161
177
  no_parent: true),
162
- "wget --accept .txt,.html --reject .csv --domains example.com --exclude-domains hackernews.com --follow-tags a,div,span --ignore-tags area,link --include-directories /gems --exclude-directories /releases --follow-ftp --ignore-case --span-hosts --relative --no-parent #{url}")
178
+ "wget --accept .txt,.html --reject .csv --accept-regex https://* --regex_type posix --domains example.com --exclude-domains hackernews.com --follow-tags a,div,span --ignore-tags area,link --include-directories /gems --exclude-directories /releases --follow-ftp --ignore-case --span-hosts --relative --no-parent #{url}")
163
179
  end
164
180
  end
@@ -85,9 +85,9 @@ RSpec.describe Kanrisuru::Remote::Cluster do
85
85
  expect(command.prepared_command).to eq('sudo -u root /bin/bash -c "ls"')
86
86
  expect(cloned_command.prepared_command).to eq('sudo -u root /bin/bash -c "ls"')
87
87
 
88
- expect {
88
+ expect do
89
89
  cluster.send(:create_command, 1)
90
- }.to raise_error(ArgumentError)
90
+ end.to raise_error(ArgumentError)
91
91
  end
92
92
 
93
93
  it 'runs execute for a command on a cluster' do
@@ -178,8 +178,8 @@ RSpec.describe Kanrisuru::Remote::Cluster do
178
178
 
179
179
  cluster.cd('/etc')
180
180
  cluster.each do |host|
181
- expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
182
- end
181
+ expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
182
+ end
183
183
 
184
184
  StubNetwork.unstub_command!(:pwd)
185
185
  StubNetwork.unstub_command!(:realpath)
@@ -198,18 +198,18 @@ RSpec.describe Kanrisuru::Remote::Cluster do
198
198
 
199
199
  cluster.chdir('/etc')
200
200
  cluster.each do |host|
201
- expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
202
- end
201
+ expect(host.instance_variable_get(:@current_dir)).to eq('/etc')
202
+ end
203
203
 
204
204
  StubNetwork.unstub_command!(:pwd)
205
205
  StubNetwork.unstub_command!(:realpath)
206
206
  end
207
-
207
+
208
208
  it 'fails to remove a host from a cluster' do
209
209
  cluster = described_class.new(host1, host2)
210
210
 
211
- expect {
211
+ expect do
212
212
  cluster.delete(1)
213
- }.to raise_error(ArgumentError)
213
+ end.to raise_error(ArgumentError)
214
214
  end
215
215
  end
@@ -34,6 +34,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
34
34
  keys: [host_json['ssh_key']]
35
35
  )
36
36
 
37
+ FileUtils.rm_rf("../test-output-#{os_name}")
37
38
  host.rmdir(spec_dir)
38
39
  host.disconnect
39
40
  end
@@ -80,7 +81,7 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
80
81
  src_path = '/etc/hosts'
81
82
 
82
83
  result = host.download(src_path, path)
83
- expect(result).to eq(path)
84
+ expect(result).to be_truthy
84
85
  FileUtils.rm(path)
85
86
  end
86
87
 
@@ -93,6 +94,22 @@ RSpec.shared_examples 'transfer' do |os_name, host_json, spec_dir|
93
94
  expect(lines.length).to be >= 1
94
95
  end
95
96
 
97
+ it 'downloads a dir' do
98
+ remote_path = '/var/log'
99
+ local_path = "../test-output-#{os_name}"
100
+ FileUtils.mkdir(local_path)
101
+
102
+ host.su('root')
103
+ result = host.download(remote_path, local_path, recursive: true)
104
+ expect(result).not_to be nil
105
+
106
+ paths = host.ls(path: '/var/log').map(&:path)
107
+ Dir.glob("#{local_path}/log/*").each do |file|
108
+ name = File.basename(file)
109
+ expect(paths).to include(name)
110
+ end
111
+ end
112
+
96
113
  it 'wgets url' do
97
114
  result = host.wget('https://example.com', directory_prefix: spec_dir)
98
115
  expect(result).to be_success
@@ -35,7 +35,7 @@ RSpec.shared_examples 'user' do |os_name, host_json, _spec_dir|
35
35
  expect(host.get_uid('asdf').to_i).to eq(nil)
36
36
  end
37
37
 
38
- it 'gets a user details' do
38
+ it 'gets a user details by name' do
39
39
  result = host.get_user(host_json['username'])
40
40
  expect(result.uid).to eq(1000)
41
41
  expect(result.name).to eq(host_json['username'])
@@ -49,6 +49,20 @@ RSpec.shared_examples 'user' do |os_name, host_json, _spec_dir|
49
49
  end
50
50
  end
51
51
 
52
+ it 'gets a user details by uid' do
53
+ result = host.get_user(1000)
54
+ expect(result.uid).to eq(1000)
55
+ expect(result.name).to eq(host_json['username'])
56
+ expect(result.home.path).to eq(host_json['home'])
57
+
58
+ case os_name
59
+ when 'opensuse', 'sles'
60
+ expect(result.groups[0]).to have_attributes(gid: 100, name: 'users')
61
+ else
62
+ expect(result.groups[0]).to have_attributes(gid: 1000, name: host_json['username'])
63
+ end
64
+ end
65
+
52
66
  it 'manages a user' do
53
67
  ## Need priviledge escalation to manage group
54
68
  host.su('root')
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.shared_examples 'cluster' do |os_name, host_json, spec_dir|
5
+ RSpec.shared_examples 'cluster' do |os_name, host_json, _spec_dir|
6
6
  context "with #{os_name}" do
7
7
  let(:host1) do
8
8
  Kanrisuru::Remote::Host.new(
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanrisuru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.13
4
+ version: 0.16.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Mammina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-01 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel_tests
@@ -347,6 +347,7 @@ files:
347
347
  - lib/kanrisuru/core/user/parser.rb
348
348
  - lib/kanrisuru/core/user/parsers/getent.rb
349
349
  - lib/kanrisuru/core/user/parsers/groups.rb
350
+ - lib/kanrisuru/core/user/parsers/user.rb
350
351
  - lib/kanrisuru/core/user/types.rb
351
352
  - lib/kanrisuru/core/yum.rb
352
353
  - lib/kanrisuru/core/yum/commands.rb