Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
hub
提交
1c1f48b1
H
hub
项目概览
github
/
hub
10 个月 前同步成功
通知
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 搜索 >>
提交
1c1f48b1
编写于
1月 14, 2015
作者:
J
Jingwen Owen Ou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor global flags parsing
上级
2699a6b7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
58 addition
and
52 deletion
+58
-52
commands/args.go
commands/args.go
+58
-52
未找到文件。
commands/args.go
浏览文件 @
1c1f48b1
...
...
@@ -160,9 +160,36 @@ func (a *Args) HasFlags(flags ...string) bool {
func
NewArgs
(
args
[]
string
)
*
Args
{
var
(
globalFlag
flag
.
FlagSet
command
string
params
[]
string
noop
bool
globalFlags
[]
string
)
slurpGlobalFlags
(
&
args
,
&
globalFlags
,
&
noop
)
if
len
(
args
)
==
0
{
params
=
[]
string
{}
}
else
{
command
=
args
[
0
]
params
=
args
[
1
:
]
}
return
&
Args
{
Executable
:
"git"
,
GlobalFlags
:
globalFlags
,
Command
:
command
,
Params
:
params
,
Noop
:
noop
,
beforeChain
:
make
([]
*
cmd
.
Cmd
,
0
),
afterChain
:
make
([]
*
cmd
.
Cmd
,
0
),
}
}
func
slurpGlobalFlags
(
args
*
[]
string
,
globalFlags
*
[]
string
,
noop
*
bool
)
{
var
(
globalFlagSet
flag
.
FlagSet
noop
bool
configParam
mapValue
=
make
(
mapValue
)
paginate
bool
noPaginate
bool
...
...
@@ -176,32 +203,31 @@ func NewArgs(args []string) *Args {
workTree
string
)
globalFlag
.
BoolVarP
(
&
noop
,
"noop"
,
""
,
false
,
""
)
globalFlag
.
VarP
(
configParam
,
""
,
"c"
,
""
)
globalFlag
.
BoolVarP
(
&
paginate
,
"paginate"
,
"p"
,
false
,
""
)
globalFlag
.
BoolVarP
(
&
noPaginate
,
"no-pager"
,
""
,
false
,
""
)
globalFlag
.
BoolVarP
(
&
noReplaceObjects
,
"no-replace-objects"
,
""
,
false
,
""
)
globalFlag
.
BoolVarP
(
&
bare
,
"bare"
,
""
,
false
,
""
)
globalFlag
.
BoolVarP
(
&
version
,
"version"
,
""
,
false
,
""
)
globalFlag
.
BoolVarP
(
&
help
,
"help"
,
""
,
false
,
""
)
globalFlag
.
StringVarP
(
&
execPath
,
"exec-path"
,
""
,
""
,
""
)
globalFlag
.
StringVarP
(
&
gitDir
,
"git-dir"
,
""
,
""
,
""
)
globalFlag
.
StringVarP
(
&
workTree
,
"work-tree"
,
""
,
""
,
""
)
globalFlag
.
SetOutput
(
ioutil
.
Discard
)
globalFlag
.
Init
(
"hub"
,
flag
.
ContinueOnError
)
globalFlagSet
.
BoolVarP
(
noop
,
"noop"
,
""
,
false
,
""
)
globalFlagSet
.
VarP
(
configParam
,
""
,
"c"
,
""
)
globalFlagSet
.
BoolVarP
(
&
paginate
,
"paginate"
,
"p"
,
false
,
""
)
globalFlagSet
.
BoolVarP
(
&
noPaginate
,
"no-pager"
,
""
,
false
,
""
)
globalFlagSet
.
BoolVarP
(
&
noReplaceObjects
,
"no-replace-objects"
,
""
,
false
,
""
)
globalFlagSet
.
BoolVarP
(
&
bare
,
"bare"
,
""
,
false
,
""
)
globalFlagSet
.
BoolVarP
(
&
version
,
"version"
,
""
,
false
,
""
)
globalFlagSet
.
BoolVarP
(
&
help
,
"help"
,
""
,
false
,
""
)
globalFlagSet
.
StringVarP
(
&
execPath
,
"exec-path"
,
""
,
""
,
""
)
globalFlagSet
.
StringVarP
(
&
gitDir
,
"git-dir"
,
""
,
""
,
""
)
globalFlagSet
.
StringVarP
(
&
workTree
,
"work-tree"
,
""
,
""
,
""
)
globalFlagSet
.
SetOutput
(
ioutil
.
Discard
)
globalFlagSet
.
Init
(
"hub"
,
flag
.
ContinueOnError
)
aa
:=
make
([]
string
,
0
)
err
:=
globalFlag
.
Parse
(
args
)
err
:=
globalFlag
Set
.
Parse
(
*
args
)
if
err
==
nil
{
aa
=
globalFlag
.
Args
()
aa
=
globalFlag
Set
.
Args
()
}
else
{
aa
=
args
aa
=
*
args
}
// manipulate global flags
globalFlags
:=
make
([]
string
,
0
)
if
version
{
aa
=
append
([]
string
{
"version"
},
aa
...
)
}
...
...
@@ -211,59 +237,39 @@ func NewArgs(args []string) *Args {
}
for
k
,
v
:=
range
configParam
{
globalFlags
=
append
(
globalFlags
,
"-c"
)
globalFlags
=
append
(
globalFlags
,
fmt
.
Sprintf
(
"%s=%s"
,
k
,
v
))
*
globalFlags
=
append
(
*
globalFlags
,
"-c"
)
*
globalFlags
=
append
(
*
globalFlags
,
fmt
.
Sprintf
(
"%s=%s"
,
k
,
v
))
}
if
paginate
{
globalFlags
=
append
(
globalFlags
,
"--paginate"
)
*
globalFlags
=
append
(
*
globalFlags
,
"--paginate"
)
}
if
noPaginate
{
globalFlags
=
append
(
globalFlags
,
"--no-pager"
)
*
globalFlags
=
append
(
*
globalFlags
,
"--no-pager"
)
}
if
noReplaceObjects
{
globalFlags
=
append
(
globalFlags
,
"--no-replace-objects"
)
*
globalFlags
=
append
(
*
globalFlags
,
"--no-replace-objects"
)
}
if
bare
{
globalFlags
=
append
(
globalFlags
,
"--bare"
)
*
globalFlags
=
append
(
*
globalFlags
,
"--bare"
)
}
if
execPath
!=
""
{
globalFlags
=
append
(
globalFlags
,
"--exec-path"
,
execPath
)
*
globalFlags
=
append
(
*
globalFlags
,
"--exec-path"
,
execPath
)
}
if
gitDir
!=
""
{
globalFlags
=
append
(
globalFlags
,
"--git-dir"
,
gitDir
)
*
globalFlags
=
append
(
*
globalFlags
,
"--git-dir"
,
gitDir
)
}
if
workTree
!=
""
{
globalFlags
=
append
(
globalFlags
,
"--work-tree"
,
workTree
)
}
var
(
command
string
params
[]
string
)
if
len
(
aa
)
==
0
{
params
=
[]
string
{}
}
else
{
command
=
aa
[
0
]
params
=
aa
[
1
:
]
*
globalFlags
=
append
(
*
globalFlags
,
"--work-tree"
,
workTree
)
}
return
&
Args
{
Executable
:
"git"
,
GlobalFlags
:
globalFlags
,
Command
:
command
,
Params
:
params
,
Noop
:
noop
,
beforeChain
:
make
([]
*
cmd
.
Cmd
,
0
),
afterChain
:
make
([]
*
cmd
.
Cmd
,
0
),
}
*
args
=
aa
}
func
removeItem
(
slice
[]
string
,
index
int
)
(
newSlice
[]
string
,
item
string
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录