Class: Cask::Config Private
Overview
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Configuration for installing casks.
Constant Summary collapse
- DEFAULT_DIRS =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
{ appdir: "/Applications", keyboard_layoutdir: "/Library/Keyboard Layouts", colorpickerdir: "~/Library/ColorPickers", prefpanedir: "~/Library/PreferencePanes", qlplugindir: "~/Library/QuickLook", mdimporterdir: "~/Library/Spotlight", dictionarydir: "~/Library/Dictionaries", fontdir: "~/Library/Fonts", servicedir: "~/Library/Services", input_methoddir: "~/Library/Input Methods", internet_plugindir: "~/Library/Internet Plug-Ins", audio_unit_plugindir: "~/Library/Audio/Plug-Ins/Components", vst_plugindir: "~/Library/Audio/Plug-Ins/VST", vst3_plugindir: "~/Library/Audio/Plug-Ins/VST3", screen_saverdir: "~/Library/Screen Savers", }.freeze
Instance Attribute Summary collapse
Class Method Summary collapse
-
.canonicalize(config) ⇒ Hash{Symbol => String, Pathname, Array<String>}
private
-
.defaults ⇒ Object
private
-
.from_args(args) ⇒ T.attached_class
private
-
.from_json(json, ignore_invalid_keys: false) ⇒ T.attached_class
private
Instance Method Summary collapse
-
#binarydir ⇒ Pathname
private
-
#default ⇒ Hash{Symbol => String, Pathname, Array<String>}
private
-
#env ⇒ Hash{Symbol => String, Pathname, Array<String>}
private
-
#explicit_s ⇒ String
private
-
#initialize(default: nil, env: nil, explicit: {}, ignore_invalid_keys: false) ⇒ void
constructor
private
-
#languages ⇒ Array<String>
private
-
#languages=(languages) ⇒ Object
private
-
#manpagedir ⇒ Pathname
private
-
#merge(other) ⇒ T.self_type
private
-
#to_json(*options) ⇒ String
private
Constructor Details
#initialize(default: nil, env: nil, explicit: {}, ignore_invalid_keys: false) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'cask/config.rb', line 99 def initialize(default: nil, env: nil, explicit: {}, ignore_invalid_keys: false) @default = self.class.canonicalize(self.class.defaults.merge(default)) if default @env = self.class.canonicalize(env) if env @explicit = self.class.canonicalize(explicit) if ignore_invalid_keys @env&.delete_if { |key, _| self.class.defaults.keys.exclude?(key) } @explicit.delete_if { |key, _| self.class.defaults.keys.exclude?(key) } return end @env&.assert_valid_keys(*self.class.defaults.keys) @explicit.assert_valid_keys(*self.class.defaults.keys) end |
Instance Attribute Details
#explicit ⇒ Hash{Symbol => String, Pathname, Array<String>}
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
89 90 91 |
# File 'cask/config.rb', line 89 def explicit @explicit end |
Class Method Details
.canonicalize(config) ⇒ Hash{Symbol => String, Pathname, Array<String>}
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
76 77 78 79 80 81 82 83 84 85 86 |
# File 'cask/config.rb', line 76 def self.canonicalize(config) config.to_h do |k, v| key = k.to_sym if DEFAULT_DIRS.key?(key) [key, Pathname(v).] else [key, v] end end end |
.defaults ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
32 33 34 35 36 |
# File 'cask/config.rb', line 32 def self.defaults { languages: LazyObject.new { MacOS.languages }, }.merge(DEFAULT_DIRS).freeze end |
.from_args(args) ⇒ T.attached_class
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'cask/config.rb', line 39 def self.from_args(args) new(explicit: { appdir: args.appdir, keyboard_layoutdir: args.keyboard_layoutdir, colorpickerdir: args.colorpickerdir, prefpanedir: args.prefpanedir, qlplugindir: args.qlplugindir, mdimporterdir: args.mdimporterdir, dictionarydir: args.dictionarydir, fontdir: args.fontdir, servicedir: args.servicedir, input_methoddir: args.input_methoddir, internet_plugindir: args.internet_plugindir, audio_unit_plugindir: args.audio_unit_plugindir, vst_plugindir: args.vst_plugindir, vst3_plugindir: args.vst3_plugindir, screen_saverdir: args.screen_saverdir, languages: args.language, }.compact) end |
.from_json(json, ignore_invalid_keys: false) ⇒ T.attached_class
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
61 62 63 64 65 66 67 68 69 70 |
# File 'cask/config.rb', line 61 def self.from_json(json, ignore_invalid_keys: false) config = JSON.parse(json) new( default: config.fetch("default", {}), env: config.fetch("env", {}), explicit: config.fetch("explicit", {}), ignore_invalid_keys: ignore_invalid_keys, ) end |
Instance Method Details
#binarydir ⇒ Pathname
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
139 140 141 |
# File 'cask/config.rb', line 139 def binarydir @binarydir ||= HOMEBREW_PREFIX/"bin" end |
#default ⇒ Hash{Symbol => String, Pathname, Array<String>}
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
115 116 117 |
# File 'cask/config.rb', line 115 def default @default ||= self.class.canonicalize(self.class.defaults) end |
#env ⇒ Hash{Symbol => String, Pathname, Array<String>}
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'cask/config.rb', line 120 def env @env ||= self.class.canonicalize( Homebrew::EnvConfig.cask_opts .select { |arg| arg.include?("=") } .map { |arg| T.cast(arg.split("=", 2), [String, String]) } .map do |(flag, value)| key = flag.sub(/^--/, "") # converts --language flag to :languages config key if key == "language" key = "languages" value = value.split(",") end [key, value] end, ) end |
#explicit_s ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
185 186 187 188 189 190 191 192 193 194 |
# File 'cask/config.rb', line 185 def explicit_s explicit.map do |key, value| # inverse of #env - converts :languages config key back to --language flag if key == :languages key = "language" value = T.cast(explicit.fetch(:languages, []), T::Array[String]).join(",") end "#{key}: \"#{value.to_s.sub(/^#{Dir.home}/, "~")}\"" end.join(", ") end |
#languages ⇒ Array<String>
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'cask/config.rb', line 149 def languages [ *T.cast(explicit.fetch(:languages, []), T::Array[String]), *T.cast(env.fetch(:languages, []), T::Array[String]), *T.cast(default.fetch(:languages, []), T::Array[String]), ].uniq.select do |lang| # Ensure all languages are valid. Locale.parse(lang) true rescue Locale::ParserError false end end |
#languages=(languages) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
163 164 165 |
# File 'cask/config.rb', line 163 def languages=(languages) explicit[:languages] = languages end |
#manpagedir ⇒ Pathname
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
144 145 146 |
# File 'cask/config.rb', line 144 def manpagedir @manpagedir ||= HOMEBREW_PREFIX/"share/man" end |
#merge(other) ⇒ T.self_type
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
180 181 182 |
# File 'cask/config.rb', line 180 def merge(other) self.class.new(explicit: other.explicit.merge(explicit)) end |
#to_json(*options) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
197 198 199 200 201 202 203 |
# File 'cask/config.rb', line 197 def to_json(*) { default: default, env: env, explicit: explicit, }.to_json(*) end |