From 2b906e4fe36f58425e38447185d9fd98ad144740 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Thu, 27 Mar 2025 06:10:24 +0000 Subject: [PATCH] services: support `--file=` in restart command --- Library/Homebrew/cmd/services.rb | 5 +++-- Library/Homebrew/services/commands/restart.rb | 14 ++++++++++---- .../test/services/commands/restart_spec.rb | 8 ++++---- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/cmd/services.rb b/Library/Homebrew/cmd/services.rb index ac0f3872c3..2dddd589ff 100644 --- a/Library/Homebrew/cmd/services.rb +++ b/Library/Homebrew/cmd/services.rb @@ -45,7 +45,7 @@ module Homebrew [`sudo`] `brew services kill` (|`--all`): Stop the service immediately but keep it registered to launch at login (or boot). - [`sudo`] `brew services restart` (|`--all`): + [`sudo`] `brew services restart` (|`--all`|`--file=`): Stop (if necessary) and start the service immediately and register it to launch at login (or boot). [`sudo`] `brew services cleanup`: @@ -110,6 +110,7 @@ module Homebrew file_commands = [ *Homebrew::Services::Commands::Start::TRIGGERS, *Homebrew::Services::Commands::Run::TRIGGERS, + *Homebrew::Services::Commands::Restart::TRIGGERS, ] if file_commands.exclude?(subcommand) raise UsageError, "The `#{subcommand}` subcommand does not accept the --file= argument!" @@ -166,7 +167,7 @@ module Homebrew when *Homebrew::Services::Commands::Info::TRIGGERS Homebrew::Services::Commands::Info.run(targets, verbose: args.verbose?, json: args.json?) when *Homebrew::Services::Commands::Restart::TRIGGERS - Homebrew::Services::Commands::Restart.run(targets, verbose: args.verbose?) + Homebrew::Services::Commands::Restart.run(targets, args.file, verbose: args.verbose?) when *Homebrew::Services::Commands::Run::TRIGGERS Homebrew::Services::Commands::Run.run(targets, args.file, verbose: args.verbose?) when *Homebrew::Services::Commands::Start::TRIGGERS diff --git a/Library/Homebrew/services/commands/restart.rb b/Library/Homebrew/services/commands/restart.rb index 94ae240c0c..4a357c6837 100644 --- a/Library/Homebrew/services/commands/restart.rb +++ b/Library/Homebrew/services/commands/restart.rb @@ -14,8 +14,14 @@ module Homebrew TRIGGERS = %w[restart relaunch reload r].freeze - sig { params(targets: T::Array[Services::FormulaWrapper], verbose: T::Boolean).void } - def self.run(targets, verbose:) + sig { + params( + targets: T::Array[Services::FormulaWrapper], + custom_plist: T.nilable(String), + verbose: T::Boolean, + ).void + } + def self.run(targets, custom_plist, verbose:) Services::Cli.check(targets) ran = [] @@ -30,8 +36,8 @@ module Homebrew Services::Cli.stop([service], verbose:) if service.loaded? end - Services::Cli.run(targets, verbose:) if ran.present? - Services::Cli.start(started, verbose:) if started.present? + Services::Cli.run(targets, custom_plist, verbose:) if ran.present? + Services::Cli.start(started, custom_plist, verbose:) if started.present? end end end diff --git a/Library/Homebrew/test/services/commands/restart_spec.rb b/Library/Homebrew/test/services/commands/restart_spec.rb index eb26b0c10c..c35a543dd5 100644 --- a/Library/Homebrew/test/services/commands/restart_spec.rb +++ b/Library/Homebrew/test/services/commands/restart_spec.rb @@ -12,7 +12,7 @@ RSpec.describe Homebrew::Services::Commands::Restart do describe "#run" do it "fails with empty list" do expect do - described_class.run([], verbose: false) + described_class.run([], nil, verbose: false) end.to raise_error UsageError, "Invalid usage: Formula(e) missing, please provide a formula name or use --all" end @@ -21,7 +21,7 @@ RSpec.describe Homebrew::Services::Commands::Restart do expect(Homebrew::Services::Cli).not_to receive(:stop) expect(Homebrew::Services::Cli).to receive(:start).once service = instance_double(Homebrew::Services::FormulaWrapper, service_name: "name", loaded?: false) - expect { described_class.run([service], verbose: false) }.not_to raise_error + expect { described_class.run([service], nil, verbose: false) }.not_to raise_error end it "starts if services are loaded with file" do @@ -30,7 +30,7 @@ RSpec.describe Homebrew::Services::Commands::Restart do expect(Homebrew::Services::Cli).to receive(:stop).once service = instance_double(Homebrew::Services::FormulaWrapper, service_name: "name", loaded?: true, service_file_present?: true) - expect { described_class.run([service], verbose: false) }.not_to raise_error + expect { described_class.run([service], nil, verbose: false) }.not_to raise_error end it "runs if services are loaded without file" do @@ -39,7 +39,7 @@ service_file_present?: true) expect(Homebrew::Services::Cli).to receive(:stop).once service = instance_double(Homebrew::Services::FormulaWrapper, service_name: "name", loaded?: true, service_file_present?: false) - expect { described_class.run([service], verbose: false) }.not_to raise_error + expect { described_class.run([service], nil, verbose: false) }.not_to raise_error end end end