From d209823a57da6ba79defac5604d8ff6e377e3f77 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Fri, 25 Jan 2019 23:33:17 -0800 Subject: [PATCH] Add GitLabPages plugin --- defaults/gitlab-ci.yml | 18 ++++++++++++++ src/PkgTemplates.jl | 4 ++- src/plugins/gitlabpages.jl | 51 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 src/plugins/gitlabpages.jl diff --git a/defaults/gitlab-ci.yml b/defaults/gitlab-ci.yml index 35f9ffe..1304a94 100644 --- a/defaults/gitlab-ci.yml +++ b/defaults/gitlab-ci.yml @@ -6,3 +6,21 @@ Julia {{VERSION}}: after_script: - julia -e 'using Printf; using Pkg; Pkg.add("Coverage"); using Coverage; c, t = get_summary(process_folder()); @printf "Test Coverage %.2f%%\n" 100c/t' {{/GITLABCOVERAGE}} +{{#DOCUMENTER}} +Documentation: + image: julia:{{VERSION}} + stage: deploy + script: + - julia --project=docs -e ' + using Pkg; + Pkg.develop(PackageSpec(path=pwd())); + Pkg.instantiate(); + include("docs/make.jl");' + - mkdir -p public + - mv docs/build public/dev + artifacts: + paths: + - public + only: + - master +{{/DOCUMENTER}} diff --git a/src/PkgTemplates.jl b/src/PkgTemplates.jl index d49547e..eda0742 100644 --- a/src/PkgTemplates.jl +++ b/src/PkgTemplates.jl @@ -19,6 +19,7 @@ export available_licenses, # Plugins. GitHubPages, + GitLabPages, AppVeyor, TravisCI, GitLabCI, @@ -42,8 +43,9 @@ include(joinpath("plugins", "codecov.jl")) include(joinpath("plugins", "travisci.jl")) include(joinpath("plugins", "gitlabci.jl")) include(joinpath("plugins", "githubpages.jl")) +include(joinpath("plugins", "gitlabpages.jl")) const DEFAULTS_DIR = normpath(joinpath(@__DIR__, "..", "defaults")) -const BADGE_ORDER = [GitHubPages, TravisCI, AppVeyor, GitLabCI, Codecov, Coveralls] +const BADGE_ORDER = [GitHubPages, GitLabPages, TravisCI, AppVeyor, GitLabCI, Codecov, Coveralls] end diff --git a/src/plugins/gitlabpages.jl b/src/plugins/gitlabpages.jl new file mode 100644 index 0000000..70e96c7 --- /dev/null +++ b/src/plugins/gitlabpages.jl @@ -0,0 +1,51 @@ +""" + GitLabPages(; assets::Vector{<:AbstractString}=String[]) -> GitLabPages + +Add `GitLabPages` to a template's plugins to add [`Documenter`](@ref) support via GitLab +Pages, including automatic uploading of documentation from [`GitLabCI`](@ref). Also +adds appropriate badges to the README, and updates the `.gitignore` accordingly. + +# Keyword Arguments +* `assets::Vector{<:AbstractString}=String[]`: Array of paths to Documenter asset files. +""" +struct GitLabPages <: Documenter + gitignore::Vector{String} + assets::Vector{String} + + function GitLabPages(; assets::Vector{<:AbstractString}=String[]) + for file in assets + if !isfile(file) + throw(ArgumentError("Asset file $(abspath(file)) does not exist")) + end + end + # Windows Git recognizes these paths as well. + new(["/docs/build/", "/docs/site/"], abspath.(assets)) + end +end + +function badges(::GitLabPages, user::AbstractString, pkg_name::AbstractString) + return [ + #= + format(Badge( + "Stable", + "https://img.shields.io/badge/docs-stable-blue.svg", + "https://$user.gitlab.io/$pkg_name.jl/stable" + )), + =# + format(Badge( + "Dev", + "https://img.shields.io/badge/docs-dev-blue.svg", + "https://$user.gitlab.io/$pkg_name.jl/dev" + )), + ] +end + +function gen_plugin(p::GitLabPages, t::Template, pkg_name::AbstractString) + invoke(gen_plugin, Tuple{Documenter, Template, AbstractString}, p, t, pkg_name) + return ["docs/"] +end + +function interactive(::Type{GitLabPages}) + print("GitLabPages: Enter any Documenter asset files (separated by spaces) []: ") + return GitLabPages(; assets=string.(split(readline()))) +end