Merge pull request #15435 from reitermarkus/working-dir-expand
Expand `service` paths.
This commit is contained in:
commit
8371dde56a
@ -383,7 +383,7 @@ module Homebrew
|
||||
|
||||
sig { returns(T.nilable(T::Array[String])) }
|
||||
def command
|
||||
@run&.map(&:to_s)
|
||||
@run&.map(&:to_s)&.map { |arg| arg.start_with?("~") ? File.expand_path(arg) : arg }
|
||||
end
|
||||
|
||||
sig { returns(T::Boolean) }
|
||||
@ -425,11 +425,11 @@ module Homebrew
|
||||
base[:TimeOut] = @restart_delay if @restart_delay.present?
|
||||
base[:ProcessType] = @process_type.to_s.capitalize if @process_type.present?
|
||||
base[:StartInterval] = @interval if @interval.present? && @run_type == RUN_TYPE_INTERVAL
|
||||
base[:WorkingDirectory] = @working_dir if @working_dir.present?
|
||||
base[:RootDirectory] = @root_dir if @root_dir.present?
|
||||
base[:StandardInPath] = @input_path if @input_path.present?
|
||||
base[:StandardOutPath] = @log_path if @log_path.present?
|
||||
base[:StandardErrorPath] = @error_log_path if @error_log_path.present?
|
||||
base[:WorkingDirectory] = File.expand_path(@working_dir) if @working_dir.present?
|
||||
base[:RootDirectory] = File.expand_path(@root_dir) if @root_dir.present?
|
||||
base[:StandardInPath] = File.expand_path(@input_path) if @input_path.present?
|
||||
base[:StandardOutPath] = File.expand_path(@log_path) if @log_path.present?
|
||||
base[:StandardErrorPath] = File.expand_path(@error_log_path) if @error_log_path.present?
|
||||
base[:EnvironmentVariables] = @environment_variables unless @environment_variables.empty?
|
||||
|
||||
if keep_alive?
|
||||
@ -492,11 +492,11 @@ module Homebrew
|
||||
|
||||
options << "Restart=always" if @keep_alive.present? && @keep_alive[:always].present?
|
||||
options << "RestartSec=#{restart_delay}" if @restart_delay.present?
|
||||
options << "WorkingDirectory=#{@working_dir}" if @working_dir.present?
|
||||
options << "RootDirectory=#{@root_dir}" if @root_dir.present?
|
||||
options << "StandardInput=file:#{@input_path}" if @input_path.present?
|
||||
options << "StandardOutput=append:#{@log_path}" if @log_path.present?
|
||||
options << "StandardError=append:#{@error_log_path}" if @error_log_path.present?
|
||||
options << "WorkingDirectory=#{File.expand_path(@working_dir)}" if @working_dir.present?
|
||||
options << "RootDirectory=#{File.expand_path(@root_dir)}" if @root_dir.present?
|
||||
options << "StandardInput=file:#{File.expand_path(@input_path)}" if @input_path.present?
|
||||
options << "StandardOutput=append:#{File.expand_path(@log_path)}" if @log_path.present?
|
||||
options << "StandardError=append:#{File.expand_path(@error_log_path)}" if @error_log_path.present?
|
||||
options += @environment_variables.map { |k, v| "Environment=\"#{k}=#{v}\"" } if @environment_variables.present?
|
||||
|
||||
unit + options.join("\n")
|
||||
|
||||
@ -587,6 +587,49 @@ describe Homebrew::Service do
|
||||
EOS
|
||||
expect(plist).to eq(plist_expect)
|
||||
end
|
||||
|
||||
it "expands paths" do
|
||||
f = stub_formula do
|
||||
service do
|
||||
run [opt_sbin/"sleepwatcher", "-V", "-s", "~/.sleep", "-w", "~/.wakeup"]
|
||||
working_dir "~"
|
||||
end
|
||||
end
|
||||
|
||||
plist = f.service.to_plist
|
||||
plist_expect = <<~EOS
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
\t<key>Label</key>
|
||||
\t<string>homebrew.mxcl.formula_name</string>
|
||||
\t<key>LimitLoadToSessionType</key>
|
||||
\t<array>
|
||||
\t\t<string>Aqua</string>
|
||||
\t\t<string>Background</string>
|
||||
\t\t<string>LoginWindow</string>
|
||||
\t\t<string>StandardIO</string>
|
||||
\t\t<string>System</string>
|
||||
\t</array>
|
||||
\t<key>ProgramArguments</key>
|
||||
\t<array>
|
||||
\t\t<string>#{HOMEBREW_PREFIX}/opt/formula_name/sbin/sleepwatcher</string>
|
||||
\t\t<string>-V</string>
|
||||
\t\t<string>-s</string>
|
||||
\t\t<string>#{Dir.home}/.sleep</string>
|
||||
\t\t<string>-w</string>
|
||||
\t\t<string>#{Dir.home}/.wakeup</string>
|
||||
\t</array>
|
||||
\t<key>RunAtLoad</key>
|
||||
\t<true/>
|
||||
\t<key>WorkingDirectory</key>
|
||||
\t<string>#{Dir.home}</string>
|
||||
</dict>
|
||||
</plist>
|
||||
EOS
|
||||
expect(plist).to eq(plist_expect)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_systemd_unit" do
|
||||
@ -657,6 +700,30 @@ describe Homebrew::Service do
|
||||
EOS
|
||||
expect(unit).to eq(unit_expect.strip)
|
||||
end
|
||||
|
||||
it "expands paths" do
|
||||
f = stub_formula do
|
||||
service do
|
||||
run opt_bin/"beanstalkd"
|
||||
working_dir "~"
|
||||
end
|
||||
end
|
||||
|
||||
unit = f.service.to_systemd_unit
|
||||
unit_expect = <<~EOS
|
||||
[Unit]
|
||||
Description=Homebrew generated unit for formula_name
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=#{HOMEBREW_PREFIX}/opt/#{name}/bin/beanstalkd
|
||||
WorkingDirectory=#{Dir.home}
|
||||
EOS
|
||||
expect(unit).to eq(unit_expect.strip)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#to_systemd_timer" do
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user