Compare commits
12 Commits
deb6666f32
...
613d6466a9
Author | SHA1 | Date | |
---|---|---|---|
![]() |
613d6466a9 | ||
![]() |
99456ee150 | ||
![]() |
29270a8858 | ||
![]() |
3fb55a1577 | ||
![]() |
3d80dfadd1 | ||
![]() |
f233244ab7 | ||
![]() |
e4ac3bfeed | ||
![]() |
610c67b715 | ||
![]() |
6d548f784b | ||
![]() |
b2539d37fe | ||
![]() |
1cc4d0bc25 | ||
![]() |
89d36e0dd5 |
@ -1,4 +1,4 @@
|
|||||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# This script is loaded by formula_installer as a separate instance.
|
# This script is loaded by formula_installer as a separate instance.
|
||||||
@ -23,28 +23,40 @@ require "extend/pathname/write_mkpath_extension"
|
|||||||
class Build
|
class Build
|
||||||
include Utils::Output::Mixin
|
include Utils::Output::Mixin
|
||||||
|
|
||||||
attr_reader :formula, :deps, :reqs, :args
|
sig { returns(Formula) }
|
||||||
|
attr_reader :formula
|
||||||
|
|
||||||
|
sig { returns(T::Array[Dependency]) }
|
||||||
|
attr_reader :deps
|
||||||
|
|
||||||
|
sig { returns(Requirements) }
|
||||||
|
attr_reader :reqs
|
||||||
|
|
||||||
|
sig { returns(Homebrew::Cmd::InstallCmd::Args) }
|
||||||
|
attr_reader :args
|
||||||
|
|
||||||
|
sig { params(formula: Formula, options: Options, args: Homebrew::Cmd::InstallCmd::Args).void }
|
||||||
def initialize(formula, options, args:)
|
def initialize(formula, options, args:)
|
||||||
@formula = formula
|
@formula = formula
|
||||||
@formula.build = BuildOptions.new(options, formula.options)
|
@formula.build = BuildOptions.new(options, formula.options)
|
||||||
@args = args
|
@args = T.let(args, Homebrew::Cmd::InstallCmd::Args)
|
||||||
|
@deps = T.let([], T::Array[Dependency])
|
||||||
|
@reqs = T.let(Requirements.new, Requirements)
|
||||||
|
|
||||||
if args.ignore_dependencies?
|
return if args.ignore_dependencies?
|
||||||
@deps = []
|
|
||||||
@reqs = []
|
@deps = expand_deps
|
||||||
else
|
@reqs = expand_reqs
|
||||||
@deps = expand_deps
|
|
||||||
@reqs = expand_reqs
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(dependent: Formula).returns(BuildOptions) }
|
||||||
def effective_build_options_for(dependent)
|
def effective_build_options_for(dependent)
|
||||||
args = dependent.build.used_options
|
args = dependent.build.used_options
|
||||||
args |= Tab.for_formula(dependent).used_options
|
args |= Tab.for_formula(dependent).used_options
|
||||||
BuildOptions.new(args, dependent.options)
|
BuildOptions.new(args, dependent.options)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(Requirements) }
|
||||||
def expand_reqs
|
def expand_reqs
|
||||||
formula.recursive_requirements do |dependent, req|
|
formula.recursive_requirements do |dependent, req|
|
||||||
build = effective_build_options_for(dependent)
|
build = effective_build_options_for(dependent)
|
||||||
@ -54,6 +66,7 @@ class Build
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(T::Array[Dependency]) }
|
||||||
def expand_deps
|
def expand_deps
|
||||||
formula.recursive_dependencies do |dependent, dep|
|
formula.recursive_dependencies do |dependent, dep|
|
||||||
build = effective_build_options_for(dependent)
|
build = effective_build_options_for(dependent)
|
||||||
@ -67,6 +80,7 @@ class Build
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { void }
|
||||||
def install
|
def install
|
||||||
formula_deps = deps.map(&:to_formula)
|
formula_deps = deps.map(&:to_formula)
|
||||||
keg_only_deps = formula_deps.select(&:keg_only?)
|
keg_only_deps = formula_deps.select(&:keg_only?)
|
||||||
@ -79,7 +93,7 @@ class Build
|
|||||||
ENV.activate_extensions!(env: args.env)
|
ENV.activate_extensions!(env: args.env)
|
||||||
|
|
||||||
if superenv?(args.env)
|
if superenv?(args.env)
|
||||||
superenv = T.cast(ENV, Superenv)
|
superenv = ENV
|
||||||
superenv.keg_only_deps = keg_only_deps
|
superenv.keg_only_deps = keg_only_deps
|
||||||
superenv.deps = formula_deps
|
superenv.deps = formula_deps
|
||||||
superenv.run_time_deps = run_time_deps
|
superenv.run_time_deps = run_time_deps
|
||||||
@ -192,7 +206,7 @@ class Build
|
|||||||
tab.write
|
tab.write
|
||||||
|
|
||||||
# Find and link metafiles
|
# Find and link metafiles
|
||||||
formula.prefix.install_metafiles formula.buildpath
|
formula.prefix.install_metafiles T.must(formula.buildpath)
|
||||||
formula.prefix.install_metafiles formula.libexec if formula.libexec.exist?
|
formula.prefix.install_metafiles formula.libexec if formula.libexec.exist?
|
||||||
|
|
||||||
normalize_pod2man_outputs!(formula)
|
normalize_pod2man_outputs!(formula)
|
||||||
@ -202,6 +216,7 @@ class Build
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(T::Array[Symbol]) }
|
||||||
def detect_stdlibs
|
def detect_stdlibs
|
||||||
keg = Keg.new(formula.prefix)
|
keg = Keg.new(formula.prefix)
|
||||||
|
|
||||||
@ -211,13 +226,15 @@ class Build
|
|||||||
keg.detect_cxx_stdlibs(skip_executables: true)
|
keg.detect_cxx_stdlibs(skip_executables: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(formula: Formula).void }
|
||||||
def fixopt(formula)
|
def fixopt(formula)
|
||||||
path = if formula.linked_keg.directory? && formula.linked_keg.symlink?
|
path = if formula.linked_keg.directory? && formula.linked_keg.symlink?
|
||||||
formula.linked_keg.resolved_path
|
formula.linked_keg.resolved_path
|
||||||
elsif formula.prefix.directory?
|
elsif formula.prefix.directory?
|
||||||
formula.prefix
|
formula.prefix
|
||||||
elsif (kids = formula.rack.children).size == 1 && kids.first.directory?
|
elsif (children = formula.rack.children.presence) && children.size == 1 &&
|
||||||
kids.first
|
(first_child = children.first.presence) && first_child.directory?
|
||||||
|
first_child
|
||||||
else
|
else
|
||||||
raise
|
raise
|
||||||
end
|
end
|
||||||
@ -226,6 +243,7 @@ class Build
|
|||||||
raise "#{formula.opt_prefix} not present or broken\nPlease reinstall #{formula.full_name}. Sorry :("
|
raise "#{formula.opt_prefix} not present or broken\nPlease reinstall #{formula.full_name}. Sorry :("
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(formula: Formula).void }
|
||||||
def normalize_pod2man_outputs!(formula)
|
def normalize_pod2man_outputs!(formula)
|
||||||
keg = Keg.new(formula.prefix)
|
keg = Keg.new(formula.prefix)
|
||||||
keg.normalize_pod2man_outputs!
|
keg.normalize_pod2man_outputs!
|
||||||
@ -245,7 +263,7 @@ begin
|
|||||||
|
|
||||||
trap("INT", old_trap)
|
trap("INT", old_trap)
|
||||||
|
|
||||||
formula = args.named.to_formulae.first
|
formula = args.named.to_formulae.fetch(0)
|
||||||
options = Options.create(args.flags_only)
|
options = Options.create(args.flags_only)
|
||||||
build = Build.new(formula, options, args:)
|
build = Build.new(formula, options, args:)
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# Settings for the build environment.
|
# Settings for the build environment.
|
||||||
class BuildEnvironment
|
class BuildEnvironment
|
||||||
sig { params(settings: Symbol).void }
|
sig { params(settings: Symbol).void }
|
||||||
def initialize(*settings)
|
def initialize(*settings)
|
||||||
@settings = Set.new(settings)
|
@settings = T.let(Set.new(settings), T::Set[Symbol])
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(args: T::Enumerable[Symbol]).returns(T.self_type) }
|
sig { params(args: T::Enumerable[Symbol]).returns(T.self_type) }
|
||||||
@ -29,16 +29,17 @@ class BuildEnvironment
|
|||||||
module DSL
|
module DSL
|
||||||
# Initialise @env for each class which may use this DSL (e.g. each formula subclass).
|
# Initialise @env for each class which may use this DSL (e.g. each formula subclass).
|
||||||
# `env` may never be called and it needs to be initialised before the class is frozen.
|
# `env` may never be called and it needs to be initialised before the class is frozen.
|
||||||
|
sig { params(child: T.untyped).void }
|
||||||
def inherited(child)
|
def inherited(child)
|
||||||
super
|
super
|
||||||
child.instance_eval do
|
child.instance_eval do
|
||||||
@env = BuildEnvironment.new
|
@env = T.let(BuildEnvironment.new, T.nilable(BuildEnvironment))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(settings: Symbol).returns(BuildEnvironment) }
|
sig { params(settings: Symbol).returns(BuildEnvironment) }
|
||||||
def env(*settings)
|
def env(*settings)
|
||||||
@env.merge(settings)
|
T.must(@env).merge(settings)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
# Options for a formula build.
|
# Options for a formula build.
|
||||||
class BuildOptions
|
class BuildOptions
|
||||||
|
sig { params(args: Options, options: Options).void }
|
||||||
def initialize(args, options)
|
def initialize(args, options)
|
||||||
@args = args
|
@args = T.let(args, Options)
|
||||||
@options = options
|
@options = T.let(options, Options)
|
||||||
end
|
end
|
||||||
|
|
||||||
# True if a {Formula} is being built with a specific option.
|
# True if a {Formula} is being built with a specific option.
|
||||||
@ -29,8 +30,13 @@ class BuildOptions
|
|||||||
# args << "--with-example1"
|
# args << "--with-example1"
|
||||||
# end
|
# end
|
||||||
# ```
|
# ```
|
||||||
|
sig { params(val: T.any(String, Requirement, Dependency)).returns(T::Boolean) }
|
||||||
def with?(val)
|
def with?(val)
|
||||||
option_names = val.respond_to?(:option_names) ? val.option_names : [val]
|
option_names = if val.is_a?(String)
|
||||||
|
[val]
|
||||||
|
else
|
||||||
|
val.option_names
|
||||||
|
end
|
||||||
|
|
||||||
option_names.any? do |name|
|
option_names.any? do |name|
|
||||||
if option_defined? "with-#{name}"
|
if option_defined? "with-#{name}"
|
||||||
@ -50,11 +56,13 @@ class BuildOptions
|
|||||||
# ```ruby
|
# ```ruby
|
||||||
# args << "--no-spam-plz" if build.without? "spam"
|
# args << "--no-spam-plz" if build.without? "spam"
|
||||||
# ```
|
# ```
|
||||||
|
sig { params(val: T.any(String, Requirement, Dependency)).returns(T::Boolean) }
|
||||||
def without?(val)
|
def without?(val)
|
||||||
!with?(val)
|
!with?(val)
|
||||||
end
|
end
|
||||||
|
|
||||||
# True if a {Formula} is being built as a bottle (i.e. binary package).
|
# True if a {Formula} is being built as a bottle (i.e. binary package).
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
def bottle?
|
def bottle?
|
||||||
include? "build-bottle"
|
include? "build-bottle"
|
||||||
end
|
end
|
||||||
@ -75,6 +83,7 @@ class BuildOptions
|
|||||||
# args << "--and-a-cold-beer" if build.with? "cold-beer"
|
# args << "--and-a-cold-beer" if build.with? "cold-beer"
|
||||||
# end
|
# end
|
||||||
# ```
|
# ```
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
def head?
|
def head?
|
||||||
include? "HEAD"
|
include? "HEAD"
|
||||||
end
|
end
|
||||||
@ -87,29 +96,35 @@ class BuildOptions
|
|||||||
# ```ruby
|
# ```ruby
|
||||||
# args << "--some-feature" if build.stable?
|
# args << "--some-feature" if build.stable?
|
||||||
# ```
|
# ```
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
def stable?
|
def stable?
|
||||||
!head?
|
!head?
|
||||||
end
|
end
|
||||||
|
|
||||||
# True if the build has any arguments or options specified.
|
# True if the build has any arguments or options specified.
|
||||||
|
sig { returns(T::Boolean) }
|
||||||
def any_args_or_options?
|
def any_args_or_options?
|
||||||
!@args.empty? || !@options.empty?
|
!@args.empty? || !@options.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(Options) }
|
||||||
def used_options
|
def used_options
|
||||||
@options & @args
|
@options & @args
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { returns(Options) }
|
||||||
def unused_options
|
def unused_options
|
||||||
@options - @args
|
@options - @args
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
sig { params(name: String).returns(T::Boolean) }
|
||||||
def include?(name)
|
def include?(name)
|
||||||
@args.include?("--#{name}")
|
@args.include?("--#{name}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig { params(name: String).returns(T::Boolean) }
|
||||||
def option_defined?(name)
|
def option_defined?(name)
|
||||||
@options.include? name
|
@options.include? name
|
||||||
end
|
end
|
||||||
|
@ -42,6 +42,9 @@ module Homebrew
|
|||||||
flag "--organisation=", "--organization=", "--org=",
|
flag "--organisation=", "--organization=", "--org=",
|
||||||
description: "Specify the organisation to populate sources repositories from. " \
|
description: "Specify the organisation to populate sources repositories from. " \
|
||||||
"Omitting this flag searches the Homebrew primary repositories."
|
"Omitting this flag searches the Homebrew primary repositories."
|
||||||
|
flag "--team=",
|
||||||
|
description: "Specify the team to populate users from. " \
|
||||||
|
"The first part of the team name will be used as the organisation."
|
||||||
flag "--from=",
|
flag "--from=",
|
||||||
description: "Date (ISO 8601 format) to start searching contributions. " \
|
description: "Date (ISO 8601 format) to start searching contributions. " \
|
||||||
"Omitting this flag searches the past year."
|
"Omitting this flag searches the past year."
|
||||||
@ -50,6 +53,8 @@ module Homebrew
|
|||||||
switch "--csv",
|
switch "--csv",
|
||||||
description: "Print a CSV of contributions across repositories over the time period."
|
description: "Print a CSV of contributions across repositories over the time period."
|
||||||
conflicts "--organisation", "--repositories"
|
conflicts "--organisation", "--repositories"
|
||||||
|
conflicts "--organisation", "--team"
|
||||||
|
conflicts "--user", "--team"
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { override.void }
|
sig { override.void }
|
||||||
@ -58,15 +63,34 @@ module Homebrew
|
|||||||
|
|
||||||
Homebrew.install_bundler_gems!(groups: ["contributions"]) if args.csv?
|
Homebrew.install_bundler_gems!(groups: ["contributions"]) if args.csv?
|
||||||
|
|
||||||
|
require "utils/github"
|
||||||
|
|
||||||
results = {}
|
results = {}
|
||||||
grand_totals = {}
|
grand_totals = {}
|
||||||
|
|
||||||
from = args.from.presence || Date.today.prev_year.iso8601
|
from = args.from.presence || Date.today.prev_year.iso8601
|
||||||
to = args.to.presence || (Date.today + 1).iso8601
|
to = args.to.presence || (Date.today + 1).iso8601
|
||||||
|
|
||||||
organisation = nil
|
organisation = nil
|
||||||
repositories = if (org = args.organisation.presence)
|
|
||||||
|
users = if (team = args.team.presence)
|
||||||
|
team_sections = team.split("/")
|
||||||
|
organisation = team_sections.first.presence
|
||||||
|
team_name = team_sections.last.presence
|
||||||
|
if team_sections.length != 2 || organisation.nil? || team_name.nil?
|
||||||
|
odie "Team must be in the format `organisation/team`!"
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Getting members for #{organisation}/#{team_name}..." if args.verbose?
|
||||||
|
GitHub.members_by_team(organisation, team_name).keys
|
||||||
|
elsif (users = args.user.presence)
|
||||||
|
users
|
||||||
|
else
|
||||||
|
puts "Getting members for Homebrew/maintainers..." if args.verbose?
|
||||||
|
GitHub.members_by_team("Homebrew", "maintainers").keys
|
||||||
|
end
|
||||||
|
|
||||||
|
repositories = if (org = organisation.presence) || (org = args.organisation.presence)
|
||||||
organisation = org
|
organisation = org
|
||||||
|
puts "Getting repositories for #{organisation}..." if args.verbose?
|
||||||
GitHub.organisation_repositories(organisation, from, to, args.verbose?)
|
GitHub.organisation_repositories(organisation, from, to, args.verbose?)
|
||||||
elsif (repos = args.repositories.presence) && repos.length == 1 && (first_repository = repos.first)
|
elsif (repos = args.repositories.presence) && repos.length == 1 && (first_repository = repos.first)
|
||||||
case first_repository
|
case first_repository
|
||||||
@ -87,8 +111,6 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
organisation ||= T.must(repositories.fetch(0).split("/").first)
|
organisation ||= T.must(repositories.fetch(0).split("/").first)
|
||||||
|
|
||||||
require "utils/github"
|
|
||||||
users = args.user.presence || GitHub.members_by_team("Homebrew", "maintainers").keys
|
|
||||||
users.each do |username|
|
users.each do |username|
|
||||||
# TODO: Using the GitHub username to scan the `git log` undercounts some
|
# TODO: Using the GitHub username to scan the `git log` undercounts some
|
||||||
# contributions as people might not always have configured their Git
|
# contributions as people might not always have configured their Git
|
||||||
|
@ -29,6 +29,9 @@ class Homebrew::DevCmd::Contributions::Args < Homebrew::CLI::Args
|
|||||||
sig { returns(T.nilable(T::Array[String])) }
|
sig { returns(T.nilable(T::Array[String])) }
|
||||||
def repositories; end
|
def repositories; end
|
||||||
|
|
||||||
|
sig { returns(T.nilable(String)) }
|
||||||
|
def team; end
|
||||||
|
|
||||||
sig { returns(T.nilable(String)) }
|
sig { returns(T.nilable(String)) }
|
||||||
def to; end
|
def to; end
|
||||||
|
|
||||||
|
@ -119,10 +119,11 @@ module GitHub
|
|||||||
API.open_rest(url, data:, scopes:)
|
API.open_rest(url, data:, scopes:)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# We default to private if we aren't sure or if the GitHub API is disabled.
|
||||||
sig { params(full_name: String).returns(T::Boolean) }
|
sig { params(full_name: String).returns(T::Boolean) }
|
||||||
def self.private_repo?(full_name)
|
def self.private_repo?(full_name)
|
||||||
uri = url_to "repos", full_name
|
uri = url_to "repos", full_name
|
||||||
API.open_rest(uri) { |json| json["private"] }
|
API.open_rest(uri) { |json| json.fetch("private", true) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.search_query_string(*main_params, **qualifiers)
|
def self.search_query_string(*main_params, **qualifiers)
|
||||||
|
@ -61,7 +61,7 @@ Homebrew's [Project Leadership Committee](https://docs.brew.sh/Homebrew-Governan
|
|||||||
|
|
||||||
Homebrew's [Technical Steering Committee](https://docs.brew.sh/Homebrew-Governance#7-technical-steering-committee) is [Bo Anderson](https://github.com/Bo98), [Issy Long](https://github.com/issyl0), [Michael Cho](https://github.com/cho-m), [Mike McQuaid](https://github.com/MikeMcQuaid) and [Ruoyu Zhong](https://github.com/ZhongRuoyu).
|
Homebrew's [Technical Steering Committee](https://docs.brew.sh/Homebrew-Governance#7-technical-steering-committee) is [Bo Anderson](https://github.com/Bo98), [Issy Long](https://github.com/issyl0), [Michael Cho](https://github.com/cho-m), [Mike McQuaid](https://github.com/MikeMcQuaid) and [Ruoyu Zhong](https://github.com/ZhongRuoyu).
|
||||||
|
|
||||||
Homebrew's maintainers are [Alexander Bayandin](https://github.com/bayandin), [Bevan Kay](https://github.com/bevanjkay), [Bo Anderson](https://github.com/Bo98), [Branch Vincent](https://github.com/branchvincent), [Caleb Xu](https://github.com/alebcay), [Carlo Cabrera](https://github.com/carlocab), [Daeho Ro](https://github.com/daeho-ro), [Douglas Eichelberger](https://github.com/dduugg), [Dustin Rodrigues](https://github.com/dtrodrigues), [Eric Knibbe](https://github.com/EricFromCanada), [FX Coudert](https://github.com/fxcoudert), [Issy Long](https://github.com/issyl0), [Justin Krehel](https://github.com/krehel), [Klaus Hipp](https://github.com/khipp), [Markus Reiter](https://github.com/reitermarkus), [Michael Cho](https://github.com/cho-m), [Michka Popoff](https://github.com/iMichka), [Mike McQuaid](https://github.com/MikeMcQuaid), [Nanda H Krishna](https://github.com/nandahkrishna), [Patrick Linnane](https://github.com/p-linnane), [Rui Chen](https://github.com/chenrui333), [Ruoyu Zhong](https://github.com/ZhongRuoyu), [Rylan Polster](https://github.com/Rylan12), [Sam Ford](https://github.com/samford), [Sean Molenaar](https://github.com/SMillerDev), [Štefan Baebler](https://github.com/stefanb), [Thierry Moisan](https://github.com/Moisan), [Timothy Sutton](https://github.com/timsutton) and [William Woodruff](https://github.com/woodruffw).
|
Homebrew's maintainers are [Bevan Kay](https://github.com/bevanjkay), [Bo Anderson](https://github.com/Bo98), [Branch Vincent](https://github.com/branchvincent), [Caleb Xu](https://github.com/alebcay), [Carlo Cabrera](https://github.com/carlocab), [Daeho Ro](https://github.com/daeho-ro), [Douglas Eichelberger](https://github.com/dduugg), [Dustin Rodrigues](https://github.com/dtrodrigues), [Eric Knibbe](https://github.com/EricFromCanada), [FX Coudert](https://github.com/fxcoudert), [Issy Long](https://github.com/issyl0), [Justin Krehel](https://github.com/krehel), [Klaus Hipp](https://github.com/khipp), [Markus Reiter](https://github.com/reitermarkus), [Michael Cho](https://github.com/cho-m), [Michka Popoff](https://github.com/iMichka), [Mike McQuaid](https://github.com/MikeMcQuaid), [Nanda H Krishna](https://github.com/nandahkrishna), [Patrick Linnane](https://github.com/p-linnane), [Rui Chen](https://github.com/chenrui333), [Ruoyu Zhong](https://github.com/ZhongRuoyu), [Rylan Polster](https://github.com/Rylan12), [Sam Ford](https://github.com/samford), [Sean Molenaar](https://github.com/SMillerDev), [Štefan Baebler](https://github.com/stefanb), [Thierry Moisan](https://github.com/Moisan) and [William Woodruff](https://github.com/woodruffw).
|
||||||
|
|
||||||
Former maintainers with significant contributions include [Miccal Matthews](https://github.com/miccal), [Misty De Méo](https://github.com/mistydemeo), [Shaun Jackman](https://github.com/sjackman), [Vítor Galvão](https://github.com/vitorgalvao), [Claudia Pellegrino](https://github.com/claui), [Seeker](https://github.com/SeekingMeaning), [Jan Viljanen](https://github.com/javian), [JCount](https://github.com/jcount), [commitay](https://github.com/commitay), [Dominyk Tiller](https://github.com/DomT4), [Tim Smith](https://github.com/tdsmith), [Baptiste Fontaine](https://github.com/bfontaine), [Xu Cheng](https://github.com/xu-cheng), [Martin Afanasjew](https://github.com/UniqMartin), [Brett Koonce](https://github.com/asparagui), [Charlie Sharpsteen](https://github.com/Sharpie), [Jack Nagel](https://github.com/jacknagel), [Adam Vandenberg](https://github.com/adamv), [Andrew Janke](https://github.com/apjanke), [Alex Dunn](https://github.com/dunn), [neutric](https://github.com/neutric), [Tomasz Pajor](https://github.com/nijikon), [Uladzislau Shablinski](https://github.com/vladshablinsky), [Alyssa Ross](https://github.com/alyssais), [ilovezfs](https://github.com/ilovezfs), [Chongyu Zhu](https://github.com/lembacon) and Homebrew's creator: [Max Howell](https://github.com/mxcl).
|
Former maintainers with significant contributions include [Miccal Matthews](https://github.com/miccal), [Misty De Méo](https://github.com/mistydemeo), [Shaun Jackman](https://github.com/sjackman), [Vítor Galvão](https://github.com/vitorgalvao), [Claudia Pellegrino](https://github.com/claui), [Seeker](https://github.com/SeekingMeaning), [Jan Viljanen](https://github.com/javian), [JCount](https://github.com/jcount), [commitay](https://github.com/commitay), [Dominyk Tiller](https://github.com/DomT4), [Tim Smith](https://github.com/tdsmith), [Baptiste Fontaine](https://github.com/bfontaine), [Xu Cheng](https://github.com/xu-cheng), [Martin Afanasjew](https://github.com/UniqMartin), [Brett Koonce](https://github.com/asparagui), [Charlie Sharpsteen](https://github.com/Sharpie), [Jack Nagel](https://github.com/jacknagel), [Adam Vandenberg](https://github.com/adamv), [Andrew Janke](https://github.com/apjanke), [Alex Dunn](https://github.com/dunn), [neutric](https://github.com/neutric), [Tomasz Pajor](https://github.com/nijikon), [Uladzislau Shablinski](https://github.com/vladshablinsky), [Alyssa Ross](https://github.com/alyssais), [ilovezfs](https://github.com/ilovezfs), [Chongyu Zhu](https://github.com/lembacon) and Homebrew's creator: [Max Howell](https://github.com/mxcl).
|
||||||
|
|
||||||
|
@ -821,6 +821,7 @@ _brew_contributions() {
|
|||||||
--organisation
|
--organisation
|
||||||
--quiet
|
--quiet
|
||||||
--repositories
|
--repositories
|
||||||
|
--team
|
||||||
--to
|
--to
|
||||||
--user
|
--user
|
||||||
--verbose
|
--verbose
|
||||||
|
@ -605,6 +605,7 @@ __fish_brew_complete_arg 'contributions' -l help -d 'Show this message'
|
|||||||
__fish_brew_complete_arg 'contributions' -l organisation -d 'Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories'
|
__fish_brew_complete_arg 'contributions' -l organisation -d 'Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories'
|
||||||
__fish_brew_complete_arg 'contributions' -l quiet -d 'Make some output more quiet'
|
__fish_brew_complete_arg 'contributions' -l quiet -d 'Make some output more quiet'
|
||||||
__fish_brew_complete_arg 'contributions' -l repositories -d 'Specify a comma-separated list of repositories to search. All repositories must be under the same user or organisation. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: `Homebrew/brew`, `Homebrew/homebrew-core`, `Homebrew/homebrew-cask`. Specifying `--repositories=all` searches all non-deprecated Homebrew repositories. '
|
__fish_brew_complete_arg 'contributions' -l repositories -d 'Specify a comma-separated list of repositories to search. All repositories must be under the same user or organisation. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: `Homebrew/brew`, `Homebrew/homebrew-core`, `Homebrew/homebrew-cask`. Specifying `--repositories=all` searches all non-deprecated Homebrew repositories. '
|
||||||
|
__fish_brew_complete_arg 'contributions' -l team -d 'Specify the team to populate users from. The first part of the team name will be used as the organisation'
|
||||||
__fish_brew_complete_arg 'contributions' -l to -d 'Date (ISO 8601 format) to stop searching contributions'
|
__fish_brew_complete_arg 'contributions' -l to -d 'Date (ISO 8601 format) to stop searching contributions'
|
||||||
__fish_brew_complete_arg 'contributions' -l user -d 'Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers'
|
__fish_brew_complete_arg 'contributions' -l user -d 'Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers'
|
||||||
__fish_brew_complete_arg 'contributions' -l verbose -d 'Make some output more verbose'
|
__fish_brew_complete_arg 'contributions' -l verbose -d 'Make some output more verbose'
|
||||||
|
@ -769,11 +769,12 @@ _brew_contributions() {
|
|||||||
'--debug[Display any debugging information]' \
|
'--debug[Display any debugging information]' \
|
||||||
'--from[Date (ISO 8601 format) to start searching contributions. Omitting this flag searches the past year]' \
|
'--from[Date (ISO 8601 format) to start searching contributions. Omitting this flag searches the past year]' \
|
||||||
'--help[Show this message]' \
|
'--help[Show this message]' \
|
||||||
'(--repositories)--organisation[Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories]' \
|
'(--repositories --team)--organisation[Specify the organisation to populate sources repositories from. Omitting this flag searches the Homebrew primary repositories]' \
|
||||||
'--quiet[Make some output more quiet]' \
|
'--quiet[Make some output more quiet]' \
|
||||||
'(--organisation)--repositories[Specify a comma-separated list of repositories to search. All repositories must be under the same user or organisation. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: `Homebrew/brew`, `Homebrew/homebrew-core`, `Homebrew/homebrew-cask`. Specifying `--repositories=all` searches all non-deprecated Homebrew repositories. ]' \
|
'(--organisation)--repositories[Specify a comma-separated list of repositories to search. All repositories must be under the same user or organisation. Omitting this flag, or specifying `--repositories=primary`, searches only the main repositories: `Homebrew/brew`, `Homebrew/homebrew-core`, `Homebrew/homebrew-cask`. Specifying `--repositories=all` searches all non-deprecated Homebrew repositories. ]' \
|
||||||
|
'(--organisation --user)--team[Specify the team to populate users from. The first part of the team name will be used as the organisation]' \
|
||||||
'--to[Date (ISO 8601 format) to stop searching contributions]' \
|
'--to[Date (ISO 8601 format) to stop searching contributions]' \
|
||||||
'--user[Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers]' \
|
'(--team)--user[Specify a comma-separated list of GitHub usernames or email addresses to find contributions from. Omitting this flag searches Homebrew maintainers]' \
|
||||||
'--verbose[Make some output more verbose]'
|
'--verbose[Make some output more verbose]'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2426,6 +2426,11 @@ Summarise contributions to Homebrew repositories.
|
|||||||
: Specify the organisation to populate sources repositories from. Omitting this
|
: Specify the organisation to populate sources repositories from. Omitting this
|
||||||
flag searches the Homebrew primary repositories.
|
flag searches the Homebrew primary repositories.
|
||||||
|
|
||||||
|
`--team`
|
||||||
|
|
||||||
|
: Specify the team to populate users from. The first part of the team name will
|
||||||
|
be used as the organisation.
|
||||||
|
|
||||||
`--from`
|
`--from`
|
||||||
|
|
||||||
: Date (ISO 8601 format) to start searching contributions. Omitting this flag
|
: Date (ISO 8601 format) to start searching contributions. Omitting this flag
|
||||||
@ -4539,12 +4544,12 @@ McQuaid, Patrick Linnane and Vanessa Gennarelli.
|
|||||||
Homebrew's Technical Steering Committee is Bo Anderson, Issy Long, Michael Cho,
|
Homebrew's Technical Steering Committee is Bo Anderson, Issy Long, Michael Cho,
|
||||||
Mike McQuaid and Ruoyu Zhong.
|
Mike McQuaid and Ruoyu Zhong.
|
||||||
|
|
||||||
Homebrew's maintainers are Alexander Bayandin, Bevan Kay, Bo Anderson, Branch
|
Homebrew's maintainers are Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu,
|
||||||
Vincent, Caleb Xu, Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin
|
Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX
|
||||||
Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus
|
Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus Reiter, Michael Cho,
|
||||||
Reiter, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick
|
Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu
|
||||||
Linnane, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan
|
Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan Baebler, Thierry Moisan
|
||||||
Baebler, Thierry Moisan, Timothy Sutton and William Woodruff.
|
and William Woodruff.
|
||||||
|
|
||||||
Former maintainers with significant contributions include Miccal Matthews, Misty
|
Former maintainers with significant contributions include Miccal Matthews, Misty
|
||||||
De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen,
|
De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen,
|
||||||
|
@ -1520,6 +1520,9 @@ Specify a comma\-separated list of repositories to search\. All repositories mus
|
|||||||
\fB\-\-organisation\fP
|
\fB\-\-organisation\fP
|
||||||
Specify the organisation to populate sources repositories from\. Omitting this flag searches the Homebrew primary repositories\.
|
Specify the organisation to populate sources repositories from\. Omitting this flag searches the Homebrew primary repositories\.
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-\-team\fP
|
||||||
|
Specify the team to populate users from\. The first part of the team name will be used as the organisation\.
|
||||||
|
.TP
|
||||||
\fB\-\-from\fP
|
\fB\-\-from\fP
|
||||||
Date (ISO 8601 format) to start searching contributions\. Omitting this flag searches the past year\.
|
Date (ISO 8601 format) to start searching contributions\. Omitting this flag searches the past year\.
|
||||||
.TP
|
.TP
|
||||||
@ -2979,7 +2982,7 @@ Homebrew\[u2019]s Project Leadership Committee is Colin Dean, Michka Popoff, Mik
|
|||||||
.P
|
.P
|
||||||
Homebrew\[u2019]s Technical Steering Committee is Bo Anderson, Issy Long, Michael Cho, Mike McQuaid and Ruoyu Zhong\.
|
Homebrew\[u2019]s Technical Steering Committee is Bo Anderson, Issy Long, Michael Cho, Mike McQuaid and Ruoyu Zhong\.
|
||||||
.P
|
.P
|
||||||
Homebrew\[u2019]s maintainers are Alexander Bayandin, Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu, Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus Reiter, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan Baebler, Thierry Moisan, Timothy Sutton and William Woodruff\.
|
Homebrew\[u2019]s maintainers are Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu, Carlo Cabrera, Daeho Ro, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Klaus Hipp, Markus Reiter, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Štefan Baebler, Thierry Moisan and William Woodruff\.
|
||||||
.P
|
.P
|
||||||
Former maintainers with significant contributions include Miccal Matthews, Misty De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen, JCount, commitay, Dominyk Tiller, Tim Smith, Baptiste Fontaine, Xu Cheng, Martin Afanasjew, Brett Koonce, Charlie Sharpsteen, Jack Nagel, Adam Vandenberg, Andrew Janke, Alex Dunn, neutric, Tomasz Pajor, Uladzislau Shablinski, Alyssa Ross, ilovezfs, Chongyu Zhu and Homebrew\[u2019]s creator: Max Howell\.
|
Former maintainers with significant contributions include Miccal Matthews, Misty De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen, JCount, commitay, Dominyk Tiller, Tim Smith, Baptiste Fontaine, Xu Cheng, Martin Afanasjew, Brett Koonce, Charlie Sharpsteen, Jack Nagel, Adam Vandenberg, Andrew Janke, Alex Dunn, neutric, Tomasz Pajor, Uladzislau Shablinski, Alyssa Ross, ilovezfs, Chongyu Zhu and Homebrew\[u2019]s creator: Max Howell\.
|
||||||
.SH "BUGS"
|
.SH "BUGS"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user