Port Homebrew::DevCmd::Sh

This commit is contained in:
Douglas Eichelberger 2024-03-21 21:41:54 -07:00
parent 177bab38c7
commit 1436b06e90
4 changed files with 92 additions and 92 deletions

View File

@ -1,14 +1,13 @@
# typed: true
# typed: strict
# frozen_string_literal: true
require "abstract_command"
require "cli/parser"
module Homebrew
module_function
sig { returns(CLI::Parser) }
def ruby_args
Homebrew::CLI::Parser.new do
module DevCmd
class Ruby < AbstractCommand
cmd_args do
usage_banner "`ruby` [<options>] (`-e` <text>|<file>)"
description <<~EOS
Run a Ruby instance with Homebrew's libraries loaded. For example,
@ -23,11 +22,9 @@ module Homebrew
named_args :file
end
end
def ruby
args = ruby_args.parse
sig { override.void }
def run
ruby_sys_args = []
ruby_sys_args << "-r#{args.r}" if args.r
ruby_sys_args << "-e #{args.e}" if args.e
@ -39,3 +36,5 @@ module Homebrew
*ruby_sys_args)
end
end
end
end

View File

@ -1,16 +1,15 @@
# typed: true
# typed: strict
# frozen_string_literal: true
require "abstract_command"
require "extend/ENV"
require "formula"
require "cli/parser"
module Homebrew
module_function
sig { returns(CLI::Parser) }
def sh_args
Homebrew::CLI::Parser.new do
module DevCmd
class Sh < AbstractCommand
cmd_args do
description <<~EOS
Enter an interactive shell for Homebrew's build environment. Use years-battle-hardened
build logic to help your `./configure && make && make install`
@ -25,11 +24,9 @@ module Homebrew
named_args :file, max: 1
end
end
def sh
args = sh_args.parse
sig { override.void }
def run
ENV.activate_extensions!(env: args.env)
ENV.deps = Formula.installed.select { |f| f.keg_only? && f.opt_prefix.directory? } if superenv?(args.env)
@ -70,3 +67,5 @@ module Homebrew
end
end
end
end
end

View File

@ -1,8 +1,9 @@
# frozen_string_literal: true
require "cmd/shared_examples/args_parse"
require "dev-cmd/ruby"
RSpec.describe "brew ruby" do
RSpec.describe Homebrew::DevCmd::Ruby do
it_behaves_like "parseable arguments"
it "executes ruby code with Homebrew's libraries loaded", :integration_test do

View File

@ -1,8 +1,9 @@
# frozen_string_literal: true
require "cmd/shared_examples/args_parse"
require "dev-cmd/sh"
RSpec.describe "brew sh" do
RSpec.describe Homebrew::DevCmd::Sh do
it_behaves_like "parseable arguments"
it "runs a shell with the Homebrew environment", :integration_test do