chef-utils 16.4.41 → 16.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -0
  3. data/chef-utils.gemspec +5 -5
  4. data/lib/chef-utils.rb +1 -0
  5. data/lib/chef-utils/dist.rb +98 -0
  6. data/lib/chef-utils/dsl/architecture.rb +1 -0
  7. data/lib/chef-utils/dsl/cloud.rb +1 -0
  8. data/lib/chef-utils/dsl/default_paths.rb +1 -0
  9. data/lib/chef-utils/dsl/introspection.rb +1 -0
  10. data/lib/chef-utils/dsl/os.rb +1 -0
  11. data/lib/chef-utils/dsl/path_sanity.rb +1 -0
  12. data/lib/chef-utils/dsl/platform.rb +1 -13
  13. data/lib/chef-utils/dsl/platform_family.rb +2 -1
  14. data/lib/chef-utils/dsl/platform_version.rb +1 -0
  15. data/lib/chef-utils/dsl/service.rb +1 -0
  16. data/lib/chef-utils/dsl/train_helpers.rb +26 -2
  17. data/lib/chef-utils/dsl/virtualization.rb +1 -0
  18. data/lib/chef-utils/dsl/which.rb +8 -3
  19. data/lib/chef-utils/dsl/windows.rb +1 -0
  20. data/lib/chef-utils/internal.rb +1 -0
  21. data/lib/chef-utils/mash.rb +1 -0
  22. data/lib/chef-utils/version.rb +2 -1
  23. data/lib/chef-utils/version_string.rb +2 -1
  24. data/spec/spec_helper.rb +1 -0
  25. data/spec/unit/dsl/architecture_spec.rb +1 -0
  26. data/spec/unit/dsl/cloud_spec.rb +1 -0
  27. data/spec/unit/dsl/dsl_spec.rb +1 -0
  28. data/spec/unit/dsl/introspection_spec.rb +1 -0
  29. data/spec/unit/dsl/os_spec.rb +1 -0
  30. data/spec/unit/dsl/path_sanity_spec.rb +1 -0
  31. data/spec/unit/dsl/platform_family_spec.rb +1 -0
  32. data/spec/unit/dsl/platform_spec.rb +1 -0
  33. data/spec/unit/dsl/service_spec.rb +1 -0
  34. data/spec/unit/dsl/virtualization_spec.rb +1 -0
  35. data/spec/unit/dsl/which_spec.rb +4 -1
  36. data/spec/unit/dsl/windows_spec.rb +1 -0
  37. data/spec/unit/mash_spec.rb +1 -0
  38. metadata +7 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22e9368674749d297f6ddc69f87aad6871229b4e6cad5deb6bd54d8629d1afc3
4
- data.tar.gz: 7a79e8318c6a952cea65281de9bc89e0ab21464d60cf48c498e46cbb34f54b6b
3
+ metadata.gz: 03f8f0fc1ebf2fc1eff0929b7c2661b9317d86ac2c9ea040cda4529324975020
4
+ data.tar.gz: 00a2c20fbaee0e10c1b39d7de50ac172034453a6b08894c8e8049a75f05e68df
5
5
  SHA512:
6
- metadata.gz: c9fb960d89c2b0457083ac9464e67d0562cb261a6d119332f9ea9fc2d5f5f7f636ea86834bf66f7082fb919bb58145887e311d07695be2fdf4cab38c2c787718
7
- data.tar.gz: 84958551d7464979a536f9b352b8849820212f1425cc599395d4acb3355b14fb01ff37a30ec146444888f70e09a2ae53b98aeb355144ed62d1922afab3f91bb5
6
+ metadata.gz: 5aac3637b017c7238a8b1ba1441ee689c8eda83a645334cd044413fc6706d0a1b6ba301f6aa4239e456b820a9d9ac02a1dccde1479f8fa7607cb337ea3988d84
7
+ data.tar.gz: 8ce954861b4e9fa28f5882900ce665344730ffc398a8abe3a332fe7ef3c63af012fd00802049159fca09e1371729ea4ed1a720a70a5bb0f2ce84db342b5e8e3a
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "bundler/gem_tasks"
2
3
 
3
4
  task default: :spec
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  lib = File.expand_path("lib", __dir__)
2
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
4
  require "chef-utils/version"
@@ -8,13 +9,15 @@ Gem::Specification.new do |spec|
8
9
  spec.authors = ["Chef Software, Inc"]
9
10
  spec.email = ["oss@chef.io"]
10
11
 
11
- spec.summary = %q{Basic utility functions for Core Chef development}
12
+ spec.summary = %q{Basic utility functions for Core Chef Infra development}
12
13
  spec.homepage = "https://github.com/chef/chef/tree/master/chef-utils"
13
14
  spec.license = "Apache-2.0"
14
15
 
16
+ spec.required_ruby_version = ">= 2.6.0"
17
+
15
18
  spec.metadata = {
16
19
  "bug_tracker_uri" => "https://github.com/chef/chef/issues",
17
- "changelog_uri" => "https://github.com/chef/chef/CHANGELOG.md",
20
+ "changelog_uri" => "https://github.com/chef/chef/blob/master/CHANGELOG.md",
18
21
  "documentation_uri" => "https://github.com/chef/chef/tree/master/chef-utils/README.md",
19
22
  "homepage_uri" => "https://github.com/chef/chef/tree/master/chef-utils",
20
23
  "source_code_uri" => "https://github.com/chef/chef/tree/master/chef-utils",
@@ -40,7 +43,4 @@ Gem::Specification.new do |spec|
40
43
 
41
44
  spec.files = %w{Rakefile LICENSE} + Dir.glob("*.gemspec") +
42
45
  Dir.glob("{lib,spec}/**/*", File::FNM_DOTMATCH).reject { |f| File.directory?(f) }
43
-
44
- spec.bindir = "bin"
45
- spec.executables = []
46
46
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+ module ChefUtils
3
+ # This class is not fully implemented, depending on it is not recommended!
4
+ module Dist
5
+ class Apply
6
+ # The chef-apply product name
7
+ PRODUCT = "Chef Infra Apply"
8
+
9
+ # The chef-apply binary
10
+ EXEC = "chef-apply"
11
+ end
12
+
13
+ class Automate
14
+ # name of the automate product
15
+ PRODUCT = "Chef Automate"
16
+ end
17
+
18
+ class Infra
19
+ # When referencing a product directly, like Chef (Now Chef Infra)
20
+ PRODUCT = "Chef Infra Client"
21
+
22
+ # A short designation for the product, used in Windows event logs
23
+ # and some nomenclature.
24
+ SHORT = "chef"
25
+
26
+ # The client's alias (chef-client)
27
+ CLIENT = "chef-client"
28
+
29
+ # The chef executable, as in `chef gem install` or `chef generate cookbook`
30
+ EXEC = "chef"
31
+
32
+ # The chef-shell executable
33
+ SHELL = "chef-shell"
34
+
35
+ # Configuration related constants
36
+ # The chef-shell configuration file
37
+ SHELL_CONF = "chef_shell.rb"
38
+
39
+ # The user's configuration directory
40
+ USER_CONF_DIR = ".chef"
41
+
42
+ # The suffix for Chef's /etc/chef, /var/chef and C:\\Chef directories
43
+ # "chef" => /etc/cinc, /var/cinc, C:\\cinc
44
+ DIR_SUFFIX = "chef"
45
+ end
46
+
47
+ class Org
48
+ # product Website address
49
+ WEBSITE = "https://chef.io"
50
+
51
+ # The downloads site
52
+ DOWNLOADS_URL = "downloads.chef.io"
53
+
54
+ # The legacy conf folder: C:/opscode/chef. Specifically the "opscode" part
55
+ # DIR_SUFFIX is appended to it in code where relevant
56
+ LEGACY_CONF_DIR = "opscode"
57
+
58
+ # Enable forcing Chef EULA
59
+ ENFORCE_LICENSE = true
60
+
61
+ # product patents page
62
+ PATENTS = "https://www.chef.io/patents"
63
+
64
+ # knife documentation page
65
+ KNIFE_DOCS = "https://docs.chef.io/workstation/knife/"
66
+ end
67
+
68
+ class Server
69
+ # The name of the server product
70
+ PRODUCT = "Chef Infra Server"
71
+
72
+ # The server's configuration directory
73
+ CONF_DIR = "/etc/chef-server"
74
+
75
+ # The servers's alias (chef-server)
76
+ SERVER = "chef-server"
77
+
78
+ # The server's configuration utility
79
+ SERVER_CTL = "chef-server-ctl"
80
+ end
81
+
82
+ class Solo
83
+ # Chef-Solo's product name
84
+ PRODUCT = "Chef Infra Solo"
85
+
86
+ # The chef-solo executable (legacy local mode)
87
+ EXEC = "chef-solo"
88
+ end
89
+
90
+ class Zero
91
+ # chef-zero executable
92
+ PRODUCT = "Chef Infra Zero"
93
+
94
+ # The chef-zero executable (local mode)
95
+ EXEC = "chef-zero"
96
+ end
97
+ end
98
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -235,19 +236,6 @@ module ChefUtils
235
236
  # chef-sugar backcompat method
236
237
  alias_method :openindiana?, :openindiana_platform?
237
238
 
238
- # Determine if the current node is Nexenta Core Platform aka Nexenta OS.
239
- #
240
- # @param [Chef::Node] node the node to check
241
- # @since 15.5
242
- #
243
- # @return [Boolean]
244
- #
245
- def nexentacore_platform?(node = __getnode)
246
- node["platform"] == "nexentacore"
247
- end
248
- # chef-sugar backcompat method
249
- alias_method :nexentacore?, :nexentacore_platform?
250
-
251
239
  # Determine if the current node is AIX.
252
240
  #
253
241
  # @param [Chef::Node] node the node to check
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -320,7 +321,7 @@ module ChefUtils
320
321
  # @return [Boolean]
321
322
  #
322
323
  def solaris_based?(node = __getnode)
323
- %w{solaris2 smartos omnios openindiana opensolaris nexentacore}.include?(node["platform"])
324
+ %w{solaris2 smartos omnios openindiana}.include?(node["platform"])
324
325
  end
325
326
 
326
327
  # All of the BSD-lineage.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -25,8 +26,13 @@ module ChefUtils
25
26
  #
26
27
  # FIXME: generally these helpers all use the pattern of checking for target_mode?
27
28
  # and then if it is we use train. That approach should likely be flipped so that
28
- # even when we're running without target mode we still use inspec in its local
29
- # mode.
29
+ # even when we're running without target mode we still use train in its local
30
+ # mode. A prerequisite for that will be better CI testing of train against
31
+ # chef-client though, and ensuring that the APIs are entirely compatible. This
32
+ # will be particularly problematic for shell_out APIs and eventual file-creating
33
+ # APIs which are unlikely to be as sophisticated as the exiting code in chef-client
34
+ # for locally shelling out and creating files, and just dropping inspec local mode
35
+ # into chef-client would break the world.
30
36
  #
31
37
 
32
38
  # Train wrapper around File.exist? to make it local mode aware.
@@ -57,6 +63,24 @@ module ChefUtils
57
63
  end
58
64
  end
59
65
 
66
+ # Alias to easily convert IO.read / File.read to file_read
67
+ def file_read(path)
68
+ file_open(path).read
69
+ end
70
+
71
+ def file_directory?(path)
72
+ if __transport_connection
73
+ __transport_connection.file(filename).directory?
74
+ else
75
+ File.directory?(path)
76
+ end
77
+ end
78
+
79
+ # Alias to easily convert Dir.exist to dir_exist
80
+ def dir_exist?(path)
81
+ file_directory?(path)
82
+ end
83
+
60
84
  extend self
61
85
  end
62
86
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -79,11 +80,15 @@ module ChefUtils
79
80
  extra_path ||= __extra_path
80
81
  paths = __env_path.split(File::PATH_SEPARATOR) + Array(extra_path)
81
82
  paths.uniq!
83
+ exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : []
84
+ exts.unshift("")
82
85
  cmds.map do |cmd|
83
86
  paths.map do |path|
84
- filename = File.join(path, cmd)
85
- filename if __valid_executable?(filename, &block)
86
- end.compact
87
+ exts.map do |ext|
88
+ filename = File.join(path, "#{cmd}#{ext}")
89
+ filename if __valid_executable?(filename, &block)
90
+ end.compact
91
+ end
87
92
  end.flatten
88
93
  end
89
94
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # Copyright 2009-2016, Dan Kubb
2
3
 
3
4
  # Permission is hereby granted, free of charge, to any person obtaining
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # Copyright:: Copyright (c) Chef Software Inc.
2
3
  # License:: Apache License, Version 2.0
3
4
  #
@@ -15,5 +16,5 @@
15
16
 
16
17
  module ChefUtils
17
18
  CHEFUTILS_ROOT = File.expand_path("..", __dir__)
18
- VERSION = "16.4.41".freeze
19
+ VERSION = "16.8.9"
19
20
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # Copyright:: Copyright 2017, Noah Kantrowitz
2
3
  # License:: Apache License, Version 2.0
3
4
  #
@@ -27,7 +28,7 @@ module ChefUtils
27
28
  #
28
29
  # @param val [String] Version string to parse.
29
30
  def initialize(val)
30
- val = "" unless val
31
+ val ||= ""
31
32
  super(val)
32
33
  begin
33
34
  @parsed_version = ::Gem::Version.create(self)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "chef-utils"
2
3
 
3
4
  # FIXME: dynamically generate this for accuracy
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -30,6 +31,7 @@ RSpec.describe ChefUtils::DSL::Which do
30
31
  it description do
31
32
  # stub the ENV['PATH']
32
33
  expect(ENV).to receive(:[]).with("PATH").and_return(path)
34
+ expect(ENV).to receive(:[]).with("PATHEXT").and_return(nil)
33
35
 
34
36
  # most files should not be found
35
37
  allow(File).to receive(:executable?).and_return(false)
@@ -93,7 +95,7 @@ RSpec.describe ChefUtils::DSL::Which do
93
95
  end
94
96
 
95
97
  test_which("arrays with blocks", "foo1", "foo2", finds: "/dir2/foo1", others: [ "/dir1/foo2" ]) do |f|
96
- raise "bad arg to block" unless f == "/dir2/foo1" || f == "/dir1/foo2"
98
+ raise "bad arg to block" unless ["/dir2/foo1", "/dir1/foo2"].include?(f)
97
99
 
98
100
  true
99
101
  end
@@ -109,6 +111,7 @@ RSpec.describe ChefUtils::DSL::Which do
109
111
  it description do
110
112
  # stub the ENV['PATH']
111
113
  expect(ENV).to receive(:[]).with("PATH").and_return(path)
114
+ expect(ENV).to receive(:[]).with("PATHEXT").and_return(nil)
112
115
 
113
116
  # most files should not be found
114
117
  allow(File).to receive(:executable?).and_return(false)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # License:: Apache License, Version 2.0
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Author:: Matthew Kent (<mkent@magoazul.com>)
3
4
  # Copyright:: Copyright (c) Chef Software Inc.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.4.41
4
+ version: 16.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef Software, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-19 00:00:00.000000000 Z
11
+ date: 2020-12-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -21,6 +21,7 @@ files:
21
21
  - Rakefile
22
22
  - chef-utils.gemspec
23
23
  - lib/chef-utils.rb
24
+ - lib/chef-utils/dist.rb
24
25
  - lib/chef-utils/dsl/architecture.rb
25
26
  - lib/chef-utils/dsl/cloud.rb
26
27
  - lib/chef-utils/dsl/default_paths.rb
@@ -58,7 +59,7 @@ licenses:
58
59
  - Apache-2.0
59
60
  metadata:
60
61
  bug_tracker_uri: https://github.com/chef/chef/issues
61
- changelog_uri: https://github.com/chef/chef/CHANGELOG.md
62
+ changelog_uri: https://github.com/chef/chef/blob/master/CHANGELOG.md
62
63
  documentation_uri: https://github.com/chef/chef/tree/master/chef-utils/README.md
63
64
  homepage_uri: https://github.com/chef/chef/tree/master/chef-utils
64
65
  source_code_uri: https://github.com/chef/chef/tree/master/chef-utils
@@ -70,15 +71,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
72
  - - ">="
72
73
  - !ruby/object:Gem::Version
73
- version: '0'
74
+ version: 2.6.0
74
75
  required_rubygems_version: !ruby/object:Gem::Requirement
75
76
  requirements:
76
77
  - - ">="
77
78
  - !ruby/object:Gem::Version
78
79
  version: '0'
79
80
  requirements: []
80
- rubygems_version: 3.1.2
81
+ rubygems_version: 3.1.4
81
82
  signing_key:
82
83
  specification_version: 4
83
- summary: Basic utility functions for Core Chef development
84
+ summary: Basic utility functions for Core Chef Infra development
84
85
  test_files: []