Port Homebrew::DevCmd::Sh
This commit is contained in:
parent
177bab38c7
commit
1436b06e90
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user