Merge pull request #16540 from dduugg/systemcommand-scope

Require SystemCommand only where needed
This commit is contained in:
Douglas Eichelberger 2024-01-31 14:37:37 -08:00 committed by GitHub
commit b33373adb5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 57 additions and 9 deletions

View File

@ -7,6 +7,7 @@ require "utils/user"
require "cask/artifact/abstract_artifact"
require "cask/pkg"
require "extend/hash/keys"
require "system_command"
module Cask
module Artifact
@ -14,6 +15,8 @@ module Cask
#
# @api private
class AbstractUninstall < AbstractArtifact
include SystemCommand::Mixin
ORDERED_DIRECTIVES = [
:early_script,
:launchctl,

View File

@ -17,6 +17,7 @@ module Cask
#
# @api private
class Audit
include SystemCommand::Mixin
include ::Utils::Curl
extend Attrable

View File

@ -3,12 +3,15 @@
require "development_tools"
require "cask/exceptions"
require "system_command"
module Cask
# Helper module for quarantining files.
#
# @api private
module Quarantine
extend SystemCommand::Mixin
QUARANTINE_ATTRIBUTE = "com.apple.quarantine"
QUARANTINE_SCRIPT = (HOMEBREW_LIBRARY_PATH/"cask/utils/quarantine.swift").freeze

View File

@ -11,6 +11,7 @@ require "utils/shell"
require "system_config"
require "cask/caskroom"
require "cask/quarantine"
require "system_command"
module Homebrew
# Module containing diagnostic checks.
@ -48,6 +49,8 @@ module Homebrew
# Diagnostic checks.
class Checks
include SystemCommand::Mixin
def initialize(verbose: true)
@verbose = verbose
end

View File

@ -7,6 +7,7 @@ require "unpack_strategy"
require "lazy_object"
require "cgi"
require "lock_file"
require "system_command"
# Need to define this before requiring Mechanize to avoid:
# uninitialized constant Mechanize
@ -28,6 +29,7 @@ class AbstractDownloadStrategy
extend Forwardable
include FileUtils
include Context
include SystemCommand::Mixin
# Extension for bottle downloads.
#

View File

@ -1,7 +1,11 @@
# typed: true
# frozen_string_literal: true
require "system_command"
class Keg
include SystemCommand::Mixin
GENERIC_KEG_LINK_DIRECTORIES = (remove_const :KEG_LINK_DIRECTORIES).freeze
KEG_LINK_DIRECTORIES = (GENERIC_KEG_LINK_DIRECTORIES + ["Frameworks"]).freeze
GENERIC_MUST_EXIST_SUBDIRECTORIES = (remove_const :MUST_EXIST_SUBDIRECTORIES).freeze

View File

@ -5,6 +5,7 @@ require "context"
require "resource"
require "metafiles"
require "extend/file/atomic"
require "system_command"
module DiskUsageExtension
sig { returns(Integer) }
@ -77,6 +78,7 @@ end
# Homebrew extends Ruby's `Pathname` to make our code more readable.
# @see https://ruby-doc.org/stdlib-2.6.3/libdoc/pathname/rdoc/Pathname.html Ruby's Pathname API
class Pathname
include SystemCommand::Mixin
include DiskUsageExtension
# Moves a file from the original location to the {Pathname}'s.

View File

@ -5,12 +5,14 @@ require "utils/curl"
require "json"
require "zlib"
require "extend/hash/keys"
require "system_command"
# GitHub Packages client.
#
# @api private
class GitHubPackages
include Context
include SystemCommand::Mixin
URL_DOMAIN = "ghcr.io"
URL_PREFIX = "https://#{URL_DOMAIN}/v2/".freeze

View File

@ -137,7 +137,6 @@ rescue
nil
end.compact.freeze
require "system_command"
require "exceptions"
require "utils"

View File

@ -2,6 +2,7 @@
# frozen_string_literal: true
require "open3"
require "system_command"
module Homebrew
module Livecheck
@ -24,6 +25,8 @@ module Homebrew
#
# @api public
class Git
extend SystemCommand::Mixin
# The priority of the strategy on an informal scale of 1 to 10 (from
# lowest to highest).
PRIORITY = 8

View File

@ -1,6 +1,8 @@
# typed: true
# frozen_string_literal: true
require "system_command"
module OS
module Mac
# Class representing a macOS SDK.
@ -32,6 +34,7 @@ module OS
# @api private
class BaseSDKLocator
extend T::Helpers
include SystemCommand::Mixin
abstract!

View File

@ -3,6 +3,7 @@
require "formula"
require "cask/cask_loader"
require "system_command"
# Helper module for validating syntax in taps.
#
@ -10,6 +11,7 @@ require "cask/cask_loader"
module Readall
class << self
include Cachable
include SystemCommand::Mixin
# TODO: remove this once the `MacOS` module is undefined on Linux
MACOS_MODULE_REGEX = /\b(MacOS|OS::Mac)(\.|::)\b/

View File

@ -3,12 +3,15 @@
require "shellwords"
require "source_location"
require "system_command"
module Homebrew
# Helper module for running RuboCop.
#
# @api private
module Style
extend SystemCommand::Mixin
# Checks style for a list of files, printing simple RuboCop output.
# Returns true if violations were found, false otherwise.
def self.check_style_and_print(files, **options)

View File

@ -6,6 +6,7 @@ require "open3"
require "plist"
require "shellwords"
require "context"
require "extend/io"
require "utils/timer"
@ -405,7 +406,3 @@ class SystemCommand
private :warn_plist_garbage
end
end
# Make `system_command` available everywhere.
# FIXME: Include this explicitly only where it is needed.
include SystemCommand::Mixin # rubocop:disable Style/MixinUsage

View File

@ -1,5 +1,7 @@
# frozen_string_literal: true
require "system_command"
describe SystemCommand do
describe "#initialize" do
subject(:command) do
@ -284,7 +286,7 @@ describe SystemCommand do
it 'does not format `stderr` when it starts with \r' do
expect do
system_command \
Class.new.extend(SystemCommand::Mixin).system_command \
"bash",
args: [
"-c",
@ -308,7 +310,7 @@ describe SystemCommand do
end
it "does not interpret the executable as a shell line" do
expect(system_command(executable)).to be_a_success
expect(Class.new.extend(SystemCommand::Mixin).system_command(executable)).to be_a_success
end
end

View File

@ -2,14 +2,18 @@
# frozen_string_literal: true
require "tempfile"
require "system_command"
module UnpackStrategy
# Strategy for unpacking disk images.
class Dmg
extend SystemCommand::Mixin
include UnpackStrategy
# Helper module for listing the contents of a volume mounted from a disk image.
module Bom
extend SystemCommand::Mixin
DMG_METADATA = Set.new(%w[
.background
.com.apple.timemachine.donotpresent

View File

@ -4,6 +4,7 @@
require "bundle_version"
require "cask/cask"
require "cask/installer"
require "system_command"
module Homebrew
# Check unversioned casks for updates by extracting their
@ -11,6 +12,8 @@ module Homebrew
#
# @api private
class UnversionedCaskChecker
include SystemCommand::Mixin
sig { returns(Cask::Cask) }
attr_reader :cask

View File

@ -4,12 +4,16 @@
require "open3"
require "utils/timer"
require "system_command"
module Utils
# Helper function for interacting with `curl`.
#
# @api private
module Curl
include SystemCommand::Mixin
extend SystemCommand::Mixin
# This regex is used to extract the part of an ETag within quotation marks,
# ignoring any leading weak validator indicator (`W/`). This simplifies
# ETag comparison in `#curl_check_http_content`.

View File

@ -2,5 +2,4 @@
module Utils::Curl
include Kernel
requires_ancestor { SystemCommand::Mixin }
end

View File

@ -1,12 +1,16 @@
# typed: true
# frozen_string_literal: true
require "system_command"
module Utils
# Helper functions for querying Git information.
#
# @see GitRepository
# @api private
module Git
extend SystemCommand::Mixin
def self.available?
version.present?
end

View File

@ -11,7 +11,7 @@ require "system_command"
#
# @api private
module GitHub
include SystemCommand::Mixin
extend SystemCommand::Mixin
def self.check_runs(repo: nil, commit: nil, pull_request: nil)
if pull_request

View File

@ -1,6 +1,7 @@
# typed: true
# frozen_string_literal: true
require "system_command"
require "tempfile"
require "utils/shell"
require "utils/formatter"
@ -32,6 +33,8 @@ module GitHub
#
# @api private
module API
extend SystemCommand::Mixin
# Generic API error.
class Error < RuntimeError
attr_reader :github_message

View File

@ -9,6 +9,8 @@ module Utils
# @api private
module Tar
class << self
include SystemCommand::Mixin
TAR_FILE_EXTENSIONS = %w[.tar .tb2 .tbz .tbz2 .tgz .tlz .txz .tZ].freeze
def available?