chef-utils 16.4.41 → 16.8.9

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.
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: []