Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
一个人扛起一支队伍
brew
提交
4d0a1ff7
B
brew
项目概览
一个人扛起一支队伍
/
brew
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
brew
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4d0a1ff7
编写于
8月 28, 2020
作者:
R
Rylan Polster
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
deprecate!, disable!: allow symbols for reason
上级
842335d4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
72 addition
and
9 deletion
+72
-9
Library/Homebrew/formula.rb
Library/Homebrew/formula.rb
+8
-6
Library/Homebrew/formula_installer.rb
Library/Homebrew/formula_installer.rb
+25
-2
Library/Homebrew/rubocops/deprecate_disable.rb
Library/Homebrew/rubocops/deprecate_disable.rb
+3
-1
Library/Homebrew/test/rubocops/deprecate_disable_spec.rb
Library/Homebrew/test/rubocops/deprecate_disable_spec.rb
+36
-0
未找到文件。
Library/Homebrew/formula.rb
浏览文件 @
4d0a1ff7
...
...
@@ -1151,7 +1151,7 @@ class Formula
# The reason this {Formula} is deprecated.
# Returns `nil` if no reason is specified or the formula is not deprecated.
# @method deprecation_reason
# @return [String]
# @return [String
, Symbol
]
delegate
deprecation_reason: :"self.class"
# Whether this {Formula} is disabled (i.e. cannot be installed).
...
...
@@ -1163,7 +1163,7 @@ class Formula
# The reason this {Formula} is disabled.
# Returns `nil` if no reason is specified or the formula is not disabled.
# @method disable_reason
# @return [String]
# @return [String
, Symbol
]
delegate
disable_reason: :"self.class"
def
skip_cxxstdlib_check?
...
...
@@ -2778,7 +2778,8 @@ class Formula
# Deprecates a {Formula} (on a given date, if provided) so a warning is
# shown on each installation. If the date has not yet passed the formula
# will not be deprecated.
# <pre>deprecate! date: "2020-08-27", because: "it is no longer maintained"</pre>
# <pre>deprecate! date: "2020-08-27", because: :unmaintained</pre>
# <pre>deprecate! date: "2020-08-27", because: "it has been replaced by"</pre>
def
deprecate!
(
date:
nil
,
because:
nil
)
# TODO: enable for next major/minor release
# odeprecated "`deprecate!` without a reason", "`deprecate! because: \"reason\"`" if because.blank?
...
...
@@ -2798,13 +2799,14 @@ class Formula
# The reason for deprecation of a {Formula}.
# Returns `nil` if no reason was provided or the formula is not deprecated.
# @return [String]
# @return [String
, Symbol
]
attr_reader
:deprecation_reason
# Disables a {Formula} (on a given date, if provided) so it cannot be
# installed. If the date has not yet passed the formula
# will be deprecated instead of disabled.
# <pre>disable! date: "2020-08-27", because: "it no longer builds"</pre>
# <pre>disable! date: "2020-08-27", because: :does_not_build</pre>
# <pre>disable! date: "2020-08-27", because: "has been replaced by foo"</pre>
def
disable!
(
date:
nil
,
because:
nil
)
# TODO: enable for next major/minor release
# odeprecated "`disable!` without a reason", "`disable! because: \"reason\"`" if because.blank?
...
...
@@ -2828,7 +2830,7 @@ class Formula
# The reason for a {Formula} is disabled.
# Returns `nil` if no reason was provided or the formula is not disabled.
# @return [String]
# @return [String
, Symbol
]
attr_reader
:disable_reason
# @private
...
...
Library/Homebrew/formula_installer.rb
浏览文件 @
4d0a1ff7
...
...
@@ -202,15 +202,38 @@ class FormulaInstaller
def
check_install_sanity
raise
FormulaInstallationAlreadyAttemptedError
,
formula
if
self
.
class
.
attempted
.
include?
(
formula
)
deprecate_disable_reasons
=
{
does_not_build:
"does not build"
,
no_license:
"has no license"
,
repo_archived:
"has an archived upstream repository"
,
repo_removed:
"has a removed upstream repository"
,
unmaintained:
"is not maintained upstream"
,
unsupported:
"is not supported upstream"
,
deprecated_upstream:
"is deprecated upstream"
,
versioned_formula:
"is a versioned formula"
,
}
if
formula
.
deprecated?
if
formula
.
deprecation_reason
.
present?
opoo
"
#{
formula
.
full_name
}
has been deprecated because
#{
formula
.
deprecation_reason
}
!"
reason
=
if
deprecate_disable_reasons
.
key?
formula
.
deprecation_reason
deprecate_disable_reasons
[
formula
.
deprecation_reason
]
else
deprecate_disable_reasons
end
opoo
"
#{
formula
.
full_name
}
has been deprecated because it
#{
reason
}
!"
else
opoo
"
#{
formula
.
full_name
}
has been deprecated!"
end
elsif
formula
.
disabled?
if
formula
.
disable_reason
.
present?
odie
"
#{
formula
.
full_name
}
has been disabled because
#{
formula
.
disable_reason
}
!"
reason
=
if
deprecate_disable_reasons
.
key?
formula
.
disable_reason
deprecate_disable_reasons
[
formula
.
disable_reason
]
else
deprecate_disable_reasons
end
odie
"
#{
formula
.
full_name
}
has been disabled because it
#{
reason
}
!"
else
odie
"
#{
formula
.
full_name
}
has been disabled!"
end
...
...
Library/Homebrew/rubocops/deprecate_disable.rb
浏览文件 @
4d0a1ff7
...
...
@@ -46,6 +46,8 @@ module RuboCop
reason_found
=
false
reason
(
node
)
do
|
reason_node
|
reason_found
=
true
next
if
reason_node
.
sym_type?
offending_node
(
reason_node
)
reason_string
=
string_content
(
reason_node
)
...
...
@@ -77,7 +79,7 @@ module RuboCop
end
def_node_search
:reason
,
<<~
EOS
(pair (sym :because) $
str
)
(pair (sym :because) $
{str sym}
)
EOS
end
end
...
...
Library/Homebrew/test/rubocops/deprecate_disable_spec.rb
浏览文件 @
4d0a1ff7
...
...
@@ -211,6 +211,15 @@ describe RuboCop::Cop::FormulaAudit::DeprecateDisableReason do
RUBY
end
it
"deprecation reason is acceptable as a symbol"
do
expect_no_offenses
(
<<~
RUBY
)
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
deprecate! because: :does_not_build
end
RUBY
end
it
"deprecation reason is acceptable with date"
do
expect_no_offenses
(
<<~
RUBY
)
class Foo < Formula
...
...
@@ -220,6 +229,15 @@ describe RuboCop::Cop::FormulaAudit::DeprecateDisableReason do
RUBY
end
it
"deprecation reason is acceptable as a symbol with date"
do
expect_no_offenses
(
<<~
RUBY
)
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
deprecate! date: "2020-08-28", because: :does_not_build
end
RUBY
end
it
"deprecation reason is absent"
do
expect_offense
(
<<~
RUBY
)
class Foo < Formula
...
...
@@ -349,6 +367,15 @@ describe RuboCop::Cop::FormulaAudit::DeprecateDisableReason do
RUBY
end
it
"disable reason is acceptable as a symbol"
do
expect_no_offenses
(
<<~
RUBY
)
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
disable! because: :does_not_build
end
RUBY
end
it
"disable reason is acceptable with date"
do
expect_no_offenses
(
<<~
RUBY
)
class Foo < Formula
...
...
@@ -358,6 +385,15 @@ describe RuboCop::Cop::FormulaAudit::DeprecateDisableReason do
RUBY
end
it
"disable reason is acceptable as a symbol with date"
do
expect_no_offenses
(
<<~
RUBY
)
class Foo < Formula
url 'https://brew.sh/foo-1.0.tgz'
disable! date: "2020-08-28", because: :does_not_build
end
RUBY
end
it
"disable reason is absent"
do
expect_offense
(
<<~
RUBY
)
class Foo < Formula
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录