Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
106f9f54
J
json
项目概览
畅游知识海洋
/
json
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
json
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
106f9f54
编写于
12月 17, 2017
作者:
N
Niels Lohmann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
⬆
updated git-update-ghpages script
上级
9eb5e2c2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
194 addition
and
222 deletion
+194
-222
doc/Makefile
doc/Makefile
+1
-1
doc/scripts/git-update-ghpages
doc/scripts/git-update-ghpages
+193
-221
未找到文件。
doc/Makefile
浏览文件 @
106f9f54
...
...
@@ -63,7 +63,7 @@ doxygen: create_output create_links
$(SED)
-i
's@< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >@@g'
html/
*
.html
upload
:
clean doxygen check_output
cd
html
;
../scripts/git-update-ghpages nlohmann/json
scripts/git-update-ghpages nlohmann/json html
rm
-fr
html
open http://nlohmann.github.io/json/
...
...
doc/scripts/git-update-ghpages
浏览文件 @
106f9f54
#!/usr/bin/env ruby
# git update-ghpages user/repo -b gh-pages -p manual/ -i
require
'fileutils'
require
'tmpdir'
module
Params
def
extract
(
what
)
i
=
index
(
what
)
and
slice!
(
i
,
2
)[
1
]
end
;
def
first_is
(
what
)
shift
if
what
.
include?
(
self
.
first
);
end
def
self
.
[]
(
*
what
)
what
.
extend
Params
;
end
def
===
(
argv
)
argv
.
first_is
(
self
);
end
end
# ============================================================================
ARGV
.
extend
Params
class
CLI
# CLI options
attr_reader
:prefix
#=> "doc/"
attr_reader
:input
#=> "/home/me/projects/foo"
attr_reader
:message
#=> "Updated"
attr_reader
:repo
#=> "git@github.com:me/project.git"
attr_reader
:url
#=> "http://me.github.com/project"
attr_reader
:branch
#=> "gh-pages"
def
verbose?
()
@verbose
;
end
def
force?
()
@force
;
end
def
simulate?
()
@simulate
;
end
def
initialize
# Switches
@verbose
=
!!
(
ARGV
.
extract
(
'--verbose'
)
||
ARGV
.
delete
(
'-v'
))
@simulate
=
!!
(
ARGV
.
extract
(
'--simulate'
)
||
ARGV
.
delete
(
'-s'
))
@force
=
!!
(
ARGV
.
delete
(
'--force'
)
||
ARGV
.
delete
(
'-f'
))
# Stuff
@prefix
=
ARGV
.
extract
(
'--prefix'
)
||
ARGV
.
extract
(
'-p'
)
||
''
@input
=
File
.
expand_path
(
ARGV
.
extract
(
'--input'
)
||
ARGV
.
extract
(
'-i'
)
||
'.'
)
@message
=
ARGV
.
extract
(
'--message'
)
||
ARGV
.
extract
(
'-m'
)
||
'Update'
# Github info
branch
=
ARGV
.
extract
(
'--branch'
)
||
ARGV
.
extract
(
'-b'
)
||
nil
@repo
,
@url
,
@branch
=
get_github_info
(
ARGV
.
shift
,
branch
)
end
def
git_current_branch
`git rev-parse --abbrev-ref HEAD`
.
strip
end
def
git_deploy
in_temp_path
do
|
temppath
|
status
"Cloning repository"
system
!
"git clone
#{
repo
}
-b
#{
branch
}
#{
temppath
}
"
if
git_current_branch
!=
branch
status
"Warning: No
#{
branch
}
branch found in repo, creating one."
return
git_deploy_force
end
copy_files
input
,
File
.
join
(
temppath
,
prefix
)
status
"Committing files"
system
!
"git add .; git add -u; git commit -m
#{
message
.
to_s
.
inspect
}
"
unless
simulate?
status
"Updating repo"
system
!
"git push origin
#{
branch
}
"
end
true
end
end
def
git_deploy_force
in_temp_path
do
|
temppath
|
status
"Creating new repository"
system
!
"git init ."
system
!
"git checkout -b gh-pages"
copy_files
input
,
File
.
join
(
temppath
,
prefix
)
status
"Committing files"
system
!
"git add . && git commit -m
#{
message
.
to_s
.
inspect
}
"
unless
simulate?
status
"Updating repo"
system
!
"git push
#{
repo
}
gh-pages:
#{
branch
}
--force"
end
true
end
end
def
get_github_info
(
repo
,
branch
=
nil
,
prefix
=
nil
)
if
github_format?
(
repo
)
user
,
repo_name
=
repo
.
split
(
'/'
)
r
=
"git@github.com:
#{
repo
}
.git"
# User page or project page?
if
repo_name
=~
/\.github\.com/
[
r
,
"http://
#{
repo_name
}
/
#{
prefix
}
"
,
branch
||
'master'
]
else
[
r
,
"http://
#{
user
}
.github.com/
#{
repo_name
}
/
#{
prefix
}
"
,
branch
||
'gh-pages'
]
end
else
[
repo
,
nil
,
branch
]
end
end
def
run!
unless
repo
print_help
exit
128
end
status
"Deploying to
#{
repo
}
(branch
#{
branch
}
)"
msg
"NOTE: Running in simulation mode."
if
simulate?
msg
"WARNING: If the repository has gh-pages history, it with be overriden."
if
force?
&&
!
simulate?
result
=
force?
?
git_deploy_force
:
git_deploy
if
result
puts
""
status
"Done."
msg
"See:
#{
url
}
"
if
url
&&
!
simulate?
else
tip
"Failed."
exit
1
end
end
def
status
(
str
)
puts
"
#{
c
(
'===>'
,
34
)
}
#{
c
(
str
,
32
)
}
"
end
def
msg
(
str
)
puts
"
#{
c
(
str
,
32
)
}
"
end
def
c
(
str
,
color
)
"
\033
[
#{
color
}
m
#{
str
}
\033
[0m"
end
def
print_help
tip
\
%{Usage: git update-ghpages username/repository [options]
Flags:
-f, --force Force an update (WARNING: kills the history!)
-s, --simulate Creates the repository, but doesn't push.
-v, --verbose Verbose mode
Options:
-p PATH, --prefix The prefix
-i PATH, --input Input (defaults to current directory)
-b BRANCH, --branch The branch to deploy to (defaults to gh-pages)
-m MSG, --message Commit message (defaults to 'Update')
Examples:
Update the repo 'coffee' of github user 'james' with the files from the
current directory. The files will be in http://james.github.com/coffee.
$ git update-ghpages james/coffee
Same as above, but take the files from 'doc/'.
$ git update-ghpages james/coffee -i doc
Same as the first, but the files will instead be in
http://james.github.com/coffee/manual.
$ git update-ghpages james/coffee -i doc -p manual
}
.
gsub
(
/^ {4}/
,
''
)
end
private
# Helpers
def
tip
(
msg
)
$stderr
.
write
"
#{
msg
}
\n
"
end
def
github_format?
(
str
)
str
=~
/^([A-Za-z0-9\-_]+)\/([A-Za-z0-9\-_\.]+)$/
end
# Performs actions inside a temp path.
def
in_temp_path
(
&
blk
)
require
'tmpdir'
Dir
.
mktmpdir
do
|
dir
|
Dir
.
chdir
(
dir
)
{
yield
dir
}
end
end
def
system!
(
str
)
puts
`
#{
str
}
2>&1`
.
strip
.
gsub
(
/^/
,
" "
)
raise
"Failed with exit code
#{
$?
.
to_i
}
"
unless
$?
.
to_i
==
0
end
# Returns the current branch name
def
git_branch
`git symbolic-ref HEAD`
.
strip
.
split
(
'/'
).
last
end
# Copy files from source folder to another
def
copy_files
(
from
,
to
)
status
"Copying files
#{
from
}
=>
#{
to
}
..."
if
verbose?
Dir
[
"
#{
from
}
/**/*"
].
each
do
|
f
|
next
unless
File
.
file?
(
f
)
target
=
File
.
join
(
to
,
f
.
gsub
(
/^
#{
Regexp
.
escape
from
}
/
,
''
))
FileUtils
.
mkdir_p
File
.
dirname
(
target
)
msg
"%20s => %-20s"
%
[
f
,
target
]
if
verbose?
FileUtils
.
cp
f
,
target
end
end
end
CLI
.
new
.
run!
#!/usr/bin/env bash
set
-o
errexit
copy_contents
()
{
local source
=
"
$1
"
status
"Copying contents from
$source
"
if
[[
!
"
$dryrun
"
==
"1"
]]
;
then
(
cd
"
$source
"
>
/dev/null
&&
tar
c .
)
|
tar
xv
else
_
"(cd
\"
$source
\"
>/dev/null && tar c .) | tar xv"
fi
}
# Sets git config
set_config
()
{
if
[
-n
"
$GIT_NAME
"
]
;
then
_ git config user.name
"
$GIT_NAME
"
;
fi
if
[
-n
"
$GIT_EMAIL
"
]
;
then
_ git config user.email
"
$GIT_EMAIL
"
;
fi
}
# Runs the deployment
run
()
{
if
[
!
-d
"
$source
"
]
;
then
echo
"Source is not a directory:
$source
"
exit
1
fi
local
tmpdir
=
"
$(
mktemp
-d
)
"
if
[[
"
$force
"
==
"1"
]]
;
then
_
cd
"
$tmpdir
"
_ git init
_ git checkout
-b
"
$branch
"
copy_contents
"
$source
"
if
[[
"
$useenv
"
==
"1"
]]
;
then
set_config
;
fi
_ git add
-A
.
git_commit
git_push
--force
else
_
cd
"
$tmpdir
"
_ git clone
"
$repo
"
.
-b
"
$branch
"
||
(
\
_ git init
&&
\
_ git checkout
-b
"
$branch
"
)
if
[[
"
$keep
"
==
"0"
]]
;
then
_
rm
-rf
./
*
;
fi
copy_contents
"
$source
"
if
[[
"
$useenv
"
==
"1"
]]
;
then
set_config
;
fi
_ git add
-A
.
git_commit
||
true
git_push
fi
_
rm
-rf
"
$tmpdir
"
status_
"Done"
}
git_commit
()
{
if
[
-z
"
$author
"
]
;
then
_ git commit
-m
"
$message
"
else
_ git commit
-m
"
$message
"
--author
"
$author
"
fi
}
git_push
()
{
if
[
-z
"
$GITHUB_TOKEN
"
]
;
then
_ git push
"
${
repo
}
"
"
$branch
"
"
$@
"
else
status
"Pushing via
\$
GITHUB_TOKEN
$@
"
_ git push
"https://
${
GITHUB_TOKEN
}
@github.com/
${
repospec
}
.git"
"
$branch
"
"
$@
"
\
--quiet
>
/dev/null 2>&1
||
\
(
status_
"Failed to push"
;
exit
1
)
fi
}
status
()
{
echo
-e
"
\n\0
33[34m==>
\0
33[0;1m"
"
$@
\0
33[0m"
}
status_
()
{
echo
-e
"
\0
33[33;1m==>
\0
33[0m"
"
$@
"
}
_
()
{
echo
""
status_
"
$@
"
if
[[
!
"
$dryrun
"
==
"1"
]]
;
then
"
$@
"
;
fi
}
help
()
{
local
cmd
=
"
$(
basename
$0
)
"
echo
'Usage:'
echo
"
$cmd
<REPO> <SOURCE>"
echo
''
echo
'Parameters:'
echo
" REPO repository to push to in 'user/repo' form"
echo
" SOURCE path to upload to repository's gh-pages branch"
echo
''
echo
'Options:'
echo
' -h, --help show help screen'
echo
' -f, --force force push'
echo
' -n, --dry-run run in simulation mode'
echo
' -e, --use-env pick up arguments from environment variables'
echo
' -b, --branch use this branch name (default: gh-pages)'
echo
' -a, --author set the author'
echo
' -k, --keep keep existing files in the repo'
echo
''
echo
'Env var options:'
echo
' GITHUB_TOKEN if set, use this to push to the repo'
echo
''
echo
'Optional env vars:'
echo
" Run with '-e' to enable the use of these variables."
echo
" GIT_NAME set this as the repos user.name"
echo
' GIT_EMAIL set this as the repos user.email'
echo
' GITHUB_REPO substitute as the REPO (1st argument)'
echo
' GIT_SOURCE substitute as the SOURCE (2nd argument)'
echo
' GIT_BRANCH use this branch name (--branch)'
echo
''
echo
'Example:'
echo
"
$cmd
rstacruz/myproject doc"
echo
" # pushes './doc' into the gh-pages branch of rstacruz/myproject"
echo
''
echo
" export GITHUB_REPO='xyz/abc'"
echo
" export GIT_SOURCE='docs'"
echo
"
$cmd
-e"
echo
" # pushes './doc' into the gh-pages branch of xyz/abc"
}
#
# Defaults
#
force
=
0
dryrun
=
0
repospec
=
source
=
branch
=
message
=
"Update"
useenv
=
0
author
=
""
keep
=
0
#
# Parse args
#
while
[[
"
$1
"
=
~ ^-
&&
!
"
$1
"
==
'--'
]]
;
do case
$1
in
-h
|
--help
)
help
exit
;;
-b
|
--branch
)
shift
branch
=
"
$1
"
;;
-n
|
--dry-run
)
dryrun
=
1
;;
-e
|
--use-env
)
useenv
=
1
;;
-k
|
--keep
)
keep
=
1
;;
-a
|
--author
)
shift
author
=
"
$1
"
;;
-f
|
--force
)
force
=
1
;;
esac
;
shift
;
done
if
[[
"
$1
"
==
'--'
]]
;
then
shift
;
fi
if
[[
"
$useenv
"
==
"1"
]]
&&
[[
-n
"
$GIT_BRANCH
"
]]
&&
[[
-z
"
$branch
"
]]
;
then
branch
=
"
$GIT_BRANCH
"
fi
if
[[
"
$useenv
"
==
"1"
]]
&&
[[
-n
"
$GITHUB_REPO
"
]]
&&
[[
-n
"
$GIT_SOURCE
"
]]
&&
[[
-z
"
$2
"
]]
;
then
repospec
=
"
$GITHUB_REPO
"
source
=
"
$GIT_SOURCE
"
else
repospec
=
"
$1
"
source
=
"
$2
"
fi
:
${
branch
:
=
"gh-pages"
}
if
[
-z
"
$source
"
]
;
then
help
exit
1
fi
source
=
"
`
pwd
-LP
`
/
$source
"
repo
=
"https://github.com/
${
repospec
}
.git"
run
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录