Port Homebrew::Cmd::Developer

This commit is contained in:
Douglas Eichelberger 2024-03-29 18:17:43 -07:00
parent 1fc4a93ca1
commit bde44cfc99
2 changed files with 46 additions and 46 deletions

View File

@ -1,56 +1,55 @@
# typed: true # typed: strict
# frozen_string_literal: true # frozen_string_literal: true
require "cli/parser" require "abstract_command"
module Homebrew module Homebrew
module_function module Cmd
class Developer < AbstractCommand
cmd_args do
description <<~EOS
Control Homebrew's developer mode. When developer mode is enabled,
`brew update` will update Homebrew to the latest commit on the `master`
branch instead of the latest stable version along with some other behaviour changes.
sig { returns(CLI::Parser) } `brew developer` [`state`]:
def developer_args Display the current state of Homebrew's developer mode.
Homebrew::CLI::Parser.new do
description <<~EOS
Control Homebrew's developer mode. When developer mode is enabled,
`brew update` will update Homebrew to the latest commit on the `master`
branch instead of the latest stable version along with some other behaviour changes.
`brew developer` [`state`]: `brew developer` (`on`|`off`):
Display the current state of Homebrew's developer mode. Turn Homebrew's developer mode on or off respectively.
EOS
`brew developer` (`on`|`off`): named_args %w[state on off], max: 1
Turn Homebrew's developer mode on or off respectively. end
EOS
sig { override.void }
named_args %w[state on off], max: 1 def run
end env_vars = []
end env_vars << "HOMEBREW_DEVELOPER" if Homebrew::EnvConfig.developer?
env_vars << "HOMEBREW_UPDATE_TO_TAG" if Homebrew::EnvConfig.update_to_tag?
def developer env_vars.map! do |var|
args = developer_args.parse "#{Tty.bold}#{var}#{Tty.reset}"
end
env_vars = []
env_vars << "HOMEBREW_DEVELOPER" if Homebrew::EnvConfig.developer? case args.named.first
env_vars << "HOMEBREW_UPDATE_TO_TAG" if Homebrew::EnvConfig.update_to_tag? when nil, "state"
env_vars.map! do |var| if env_vars.any?
"#{Tty.bold}#{var}#{Tty.reset}" verb = (env_vars.count == 1) ? "is" : "are"
end puts "Developer mode is enabled because #{env_vars.to_sentence} #{verb} set."
elsif Homebrew::Settings.read("devcmdrun") == "true"
case args.named.first puts "Developer mode is enabled."
when nil, "state" else
if env_vars.any? puts "Developer mode is disabled."
puts "Developer mode is enabled because #{env_vars.to_sentence} #{(env_vars.count == 1) ? "is" : "are"} set." end
elsif Homebrew::Settings.read("devcmdrun") == "true" when "on"
puts "Developer mode is enabled." Homebrew::Settings.write "devcmdrun", true
else when "off"
puts "Developer mode is disabled." Homebrew::Settings.delete "devcmdrun"
puts "To fully disable developer mode, you must unset #{env_vars.to_sentence}." if env_vars.any?
else
raise UsageError, "unknown subcommand: #{args.named.first}"
end
end end
when "on"
Homebrew::Settings.write "devcmdrun", true
when "off"
Homebrew::Settings.delete "devcmdrun"
puts "To fully disable developer mode, you must unset #{env_vars.to_sentence}." if env_vars.any?
else
raise UsageError, "unknown subcommand: #{args.named.first}"
end end
end end
end end

View File

@ -1,7 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require "cmd/developer"
require "cmd/shared_examples/args_parse" require "cmd/shared_examples/args_parse"
RSpec.describe "brew developer" do RSpec.describe Homebrew::Cmd::Developer do
it_behaves_like "parseable arguments" it_behaves_like "parseable arguments"
end end