#!/usr/bin/env bash## Usage: generate repo_path output_path## Example: generate https://github.com/libgit2/libgit2 path_to_output# to clone the repository from GitHub and produce documentation;# the repo_path can also be a local pathset -eo pipefailsource_path=$(mktemp -d)verbose=force=for var in "$@"; doif [ "${var}" == "--verbose" ]; thenverbose=trueelif [ "${var}" == "--force" ]; thenforce=trueelif [ "${repo_path}" == "" ]; thenrepo_path="${var}"elif [ "${output_path}" == "" ]; thenoutput_path="${var}"elserepo_path=""output_path=""fidoneif [ "${repo_path}" = "" -o "${output_path}" = "" ]; thenecho "usage: 0ドル [--verbose] [--force] repo_path output_path" 1>&2exit 1fifunction do_checkout {if [ "1ドル" = "" ]; thenecho "usage: 0ドル source_path" 1>&2exit 1fiif [ "${verbose}" ]; thenecho ":: Checking out source trees..."echo ""fisource_path=1ドルmkdir -p "${source_path}"git clone "${repo_path}" "${source_path}/main" --no-checkout( cd "${source_path}/main" && git sparse-checkout set --no-cone 'include/*' )( cd "${source_path}/main" && git read-tree origin/main )( cd "${source_path}/main" && git checkout -- include )for tag in $(git --git-dir="${source_path}/main/.git" tag -l); dogit --git-dir="${source_path}/main/.git" worktree add -f "${source_path}/${tag}" "${tag}" --no-checkout( cd "${source_path}/${tag}" && git sparse-checkout set --no-cone 'include/*' )( cd "${source_path}/${tag}" && git read-tree HEAD )if [ "${tag}" == "v0.1.0" ]; then( cd "${source_path}/${tag}" && git checkout -- src/git )elif [ "${tag}" == "v0.2.0" -o "${tag}" == "v0.3.0" ]; then( cd "${source_path}/${tag}" && git checkout -- src/git2 )else( cd "${source_path}/${tag}" && git checkout -- include )fidone}do_checkout ${source_path}if [ "${verbose}" ]; thenecho ""echo ":: Generating raw API documentation..."echo ""fifor version in ${source_path}/*; doversion=$(echo "${version}" | sed -e "s/.*\///")commit=$( cd "${source_path}/${version}" && git rev-parse HEAD )if [ -f "${output_path}/api/${version}.json" ]; thenexisting_commit=$(jq -r .info.commit < "${output_path}/api/${version}.json")if [ "${existing_commit}" == "${commit}" -a ! "${force}" ]; thenif [ "${verbose}" ]; thenecho "Raw API documentation for ${version} exists; skipping..."ficontinuefifiecho "Generating raw API documentation for ${version}..."mkdir -p "${output_path}/api"node ./api-generator.js "${source_path}/${version}" > "${output_path}/api/${version}.json"doneif [ "${verbose}" ]; thenecho ""echo ":: Generating HTML documentation..."echo ""fisearch_options=""docs_options=""if [ "${verbose}" ]; thensearch_options="${search_options} --verbose"docs_options="${docs_options} --verbose"fiif [ "${force}" ]; thendocs_options="${docs_options} --force"finode ./search-generator.js ${search_options} "${output_path}/api" "${output_path}/search-index"node ./docs-generator.js ${docs_options} --jekyll-layout default "${output_path}/api" "${output_path}/reference"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型