Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
hub
提交
b623d94f
H
hub
项目概览
github
/
hub
9 个月 前同步成功
通知
3
Star
22523
Fork
2406
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b623d94f
编写于
10月 30, 2019
作者:
M
Mislav Marohnić
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'pr/2326'
上级
d492aba0
05076370
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
186 addition
and
41 deletion
+186
-41
commands/release.go
commands/release.go
+26
-1
features/release.feature
features/release.feature
+160
-40
未找到文件。
commands/release.go
浏览文件 @
b623d94f
...
...
@@ -21,7 +21,7 @@ release [--include-drafts] [--exclude-prereleases] [-L <LIMIT>] [-f <FORMAT>]
release show [-f <FORMAT>] <TAG>
release create [-dpoc] [-a <FILE>] [-m <MESSAGE>|-F <FILE>] [-t <TARGET>] <TAG>
release edit [<options>] <TAG>
release download <TAG>
release download <TAG>
[-i <PATTERN>]
release delete <TAG>
`
,
Long
:
`Manage GitHub Releases for the current repository.
...
...
@@ -100,6 +100,9 @@ With '--exclude-prereleases', exclude non-stable releases from the listing.
-t, --commitish <TARGET>
A commit SHA or branch name to attach the release to, only used if <TAG>
does not already exist (default: main branch).
-i, --include <PATTERN>
Filter the files in the release to those that match the glob <PATTERN>.
-f, --format <FORMAT>
Pretty print releases using <FORMAT> (default: "%T%n"). See the "PRETTY
...
...
@@ -209,6 +212,9 @@ hub(1), git-tag(1)
cmdDownloadRelease
=
&
Command
{
Key
:
"download"
,
Run
:
downloadRelease
,
KnownFlags
:
`
-i, --include PATTERN
`
,
}
cmdDeleteRelease
=
&
Command
{
...
...
@@ -386,12 +392,31 @@ func downloadRelease(cmd *Command, args *Args) {
release
,
err
:=
gh
.
FetchRelease
(
project
,
tagName
)
utils
.
Check
(
err
)
hasPattern
:=
args
.
Flag
.
HasReceived
(
"--include"
)
found
:=
false
for
_
,
asset
:=
range
release
.
Assets
{
if
hasPattern
{
isMatch
,
err
:=
filepath
.
Match
(
args
.
Flag
.
Value
(
"--include"
),
asset
.
Name
)
utils
.
Check
(
err
)
if
!
isMatch
{
continue
}
}
found
=
true
ui
.
Printf
(
"Downloading %s ...
\n
"
,
asset
.
Name
)
err
:=
downloadReleaseAsset
(
asset
,
gh
)
utils
.
Check
(
err
)
}
if
!
found
&&
hasPattern
{
names
:=
[]
string
{}
for
_
,
asset
:=
range
release
.
Assets
{
names
=
append
(
names
,
asset
.
Name
)
}
utils
.
Check
(
fmt
.
Errorf
(
"the `--include` pattern did not match any available assets:
\n
%s"
,
strings
.
Join
(
names
,
"
\n
"
)))
}
args
.
NoForward
()
}
...
...
features/release.feature
浏览文件 @
b623d94f
...
...
@@ -594,48 +594,168 @@ MARKDOWN
Then
the exit status should be 1
Then
the stderr should contain
"hub release edit"
Scenario
:
Download a release asset.
Given the GitHub API server
:
Scenario
:
Download a release asset
Given the GitHub API server
:
"""
get('/repos/mislav/will_paginate/releases') {
json [
{ tag_name: 'v1.2.0',
assets: [
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-1.2.0.tar.gz',
},
],
},
]
}
get('/repos/mislav/will_paginate/assets/9876') {
halt 401 unless request.env['HTTP_AUTHORIZATION'] == 'token OTOKEN'
halt 415 unless request.accept?('application/octet-stream')
status 302
headers['Location'] = 'https://github-cloud.s3.amazonaws.com/releases/12204602/22ea221a-cf2f-11e2-222a-b3a3c3b3aa3a.gz'
""
}
get('/releases/12204602/22ea221a-cf2f-11e2-222a-b3a3c3b3aa3a.gz', :host_name => 'github-cloud.s3.amazonaws.com') {
halt 400 unless request.env['HTTP_AUTHORIZATION'].nil?
halt 415 unless request.accept?('application/octet-stream')
headers['Content-Type'] = 'application/octet-stream'
"ASSET_TARBALL"
}
"""
When
I successfully run `hub release download v1.2.0`
Then the output should contain exactly
:
"""
get('/repos/mislav/will_paginate/releases') {
json [
{ url: 'https://api.github.com/repos/mislav/will_paginate/releases/123',
upload_url: 'https://uploads.github.com/uploads/assets{?name,label}',
tag_name: 'v1.2.0',
name: 'will_paginate 1.2.0',
draft: true,
prerelease: false,
assets: [
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-1.2.0.tar.gz',
},
],
},
]
}
get('/repos/mislav/will_paginate/assets/9876') {
halt 401 unless request.env['HTTP_AUTHORIZATION'] == 'token OTOKEN'
halt 415 unless request.accept?('application/octet-stream')
status 302
headers['Location'] = 'https://github-cloud.s3.amazonaws.com/releases/12204602/22ea221a-cf2f-11e2-222a-b3a3c3b3aa3a.gz'
""
}
get('/releases/12204602/22ea221a-cf2f-11e2-222a-b3a3c3b3aa3a.gz', :host_name => 'github-cloud.s3.amazonaws.com') {
halt 400 unless request.env['HTTP_AUTHORIZATION'].nil?
halt 415 unless request.accept?('application/octet-stream')
headers['Content-Type'] = 'application/octet-stream'
"ASSET_TARBALL"
}
Downloading hello-1.2.0.tar.gz ...\n
"""
And the file "hello-1.2.0.tar.gz" should contain exactly
:
"""
ASSET_TARBALL
"""
Scenario
:
Download release assets that match pattern
Given the GitHub API server
:
"""
get('/repos/mislav/will_paginate/releases') {
json [
{ tag_name: 'v1.2.0',
assets: [
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.0.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9877',
name: 'hello-amd64-1.2.0.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9878',
name: 'hello-x86-1.2.0.tar.gz',
},
],
},
]
}
get('/repos/mislav/will_paginate/assets/9876') { "TARBALL" }
get('/repos/mislav/will_paginate/assets/9877') { "TARBALL" }
"""
When
I successfully run `hub release download v1.2.0 --include '*amd*'`
Then the output should contain exactly
:
"""
Downloading hello-amd32-1.2.0.tar.gz ...
Downloading hello-amd64-1.2.0.tar.gz ...\n
"""
And
the file
"hello-x86-1.2.0.tar.gz"
should not exist
Scenario
:
Glob pattern allows exact match
Given the GitHub API server
:
"""
get('/repos/mislav/will_paginate/releases') {
json [
{ tag_name: 'v1.2.0',
assets: [
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.0.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9877',
name: 'hello-amd64-1.2.0.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9878',
name: 'hello-x86-1.2.0.tar.gz',
},
],
},
]
}
get('/repos/mislav/will_paginate/assets/9876') { "ASSET_TARBALL" }
"""
When
I successfully run `hub release download v1.2.0 --include hello-amd32-1.2.0.tar.gz`
Then the output should contain exactly
:
"""
Downloading hello-amd32-1.2.0.tar.gz ...\n
"""
And the file "hello-amd32-1.2.0.tar.gz" should contain exactly
:
"""
ASSET_TARBALL
"""
And
the file
"hello-amd64-1.2.0.tar.gz"
should not exist
And
the file
"hello-x86-1.2.0.tar.gz"
should not exist
Scenario
:
Advanced glob pattern
Given the GitHub API server
:
"""
get('/repos/mislav/will_paginate/releases') {
json [
{ tag_name: 'v1.2.0',
assets: [
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.0.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.1.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.2.tar.gz',
},
],
},
]
}
get('/repos/mislav/will_paginate/assets/9876') { "ASSET_TARBALL" }
"""
When
I successfully run `hub release download v1.2.0 --include '*-amd32-?.?.[01].tar.gz'`
Then the output should contain exactly
:
"""
Downloading hello-amd32-1.2.0.tar.gz ...
Downloading hello-amd32-1.2.1.tar.gz ...\n
"""
Scenario
:
No
matches for download pattern
Given the GitHub API server
:
"""
get('/repos/mislav/will_paginate/releases') {
json [
{ tag_name: 'v1.2.0',
assets: [
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.0.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.1.tar.gz',
},
{ url: 'https://api.github.com/repos/mislav/will_paginate/assets/9876',
name: 'hello-amd32-1.2.2.tar.gz',
},
],
},
]
}
"""
When
I run `hub release download v1.2.0 --include amd32`
Then
the exit status should be 1
Then the stderr should contain exactly
:
"""
the `--include` pattern did not match any available assets:
hello-amd32-1.2.0.tar.gz
hello-amd32-1.2.1.tar.gz
hello-amd32-1.2.2.tar.gz\n
"""
When
I successfully run `hub release download v1.2.0`
Then the output should contain exactly
:
"""
Downloading hello-1.2.0.tar.gz ...\n
"""
And the file "hello-1.2.0.tar.gz" should contain exactly
:
"""
ASSET_TARBALL
"""
Scenario
:
Download release no tag
When
I run `hub release download`
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录