-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
salt.rb
79 lines (63 loc) · 2.67 KB
/
salt.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
module Utils
extend SystemCommand::Mixin
def self.patch_plist(daemon)
plist_file = "/Library/LaunchDaemons/com.saltstack.salt.#{daemon}.plist"
xml, = system_command "plutil",
args: ["-convert", "xml1", "-o", "-", "--", plist_file],
sudo: true
xml = Plist.parse_xml(xml)
xml["EnvironmentVariables"] = {} unless xml.key?("EnvironmentVariables")
xml["EnvironmentVariables"]["HOMEBREW_PREFIX"] = HOMEBREW_PREFIX.to_s
xml["EnvironmentVariables"]["HOME"] ||= "/var/root"
path = xml["EnvironmentVariables"]["PATH"] || "/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
path = "#{HOMEBREW_PREFIX}/bin:#{path}" unless path.split(":").include?("#{HOMEBREW_PREFIX}/bin")
xml["EnvironmentVariables"]["PATH"] = path
random_str = (0...8).map { rand(65..90).chr }.join
new_plist_file = "/tmp/#{random_str}.#{File.basename(plist_file)}"
File.write(new_plist_file, xml.to_plist)
system_command "plutil",
args: ["-lint", new_plist_file]
system_command "mv",
args: [new_plist_file, plist_file],
sudo: true
system_command "chown",
args: ["root:wheel", plist_file],
sudo: true
end
end
cask "salt" do
arch arm: "arm64", intel: "x86_64"
version "3007.1"
sha256 arm: "968b7701a470f5786474dea4489f96b546e7b6340ba734695b7899aa6edf14a2",
intel: "865d2d3792659ddbd48940b0e031a3e9652a85977cf0a2ef3a5ec00e34eb66cb"
url "https://repo.saltproject.io/salt/py3/macos/minor/#{version}/salt-#{version}-py3-#{arch}.pkg"
name "Salt"
desc "Automation and infrastructure management engine"
homepage "https://saltproject.io/"
livecheck do
url "https://repo.saltproject.io/salt/py3/macos/latest"
regex(/salt[._-]v?(\d+(?:\.\d+)+)-py3-#{arch}\.pkg/)
end
conflicts_with formula: "salt"
pkg "salt-#{version}-py3-#{arch}.pkg"
postflight do
%w[api master minion syndic].each { |daemon| Utils.patch_plist(daemon) }
end
uninstall launchctl: [
"com.saltstack.salt.api",
"com.saltstack.salt.master",
"com.saltstack.salt.minion",
"com.saltstack.salt.syndic",
],
pkgutil: "com.saltstack.salt"
zap trash: "/etc/salt"
def caveats
<<~CAVEATS
Included services:
sudo launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.api.plist
sudo launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.master.plist
sudo launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.minion.plist
sudo launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.syndic.plist
CAVEATS
end
end