Merge pull request #73 from matbesancon/citation

Add CITATION.bib
This commit is contained in:
Chris de Graaf 2019-05-15 09:43:48 -05:00 committed by GitHub
commit 38944a8a17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 101 additions and 1 deletions

View File

@ -24,7 +24,8 @@ export
TravisCI, TravisCI,
GitLabCI, GitLabCI,
Codecov, Codecov,
Coveralls Coveralls,
Citation
""" """
A plugin to be added to a [`Template`](@ref), which adds some functionality or integration. A plugin to be added to a [`Template`](@ref), which adds some functionality or integration.
@ -44,6 +45,7 @@ include(joinpath("plugins", "travisci.jl"))
include(joinpath("plugins", "gitlabci.jl")) include(joinpath("plugins", "gitlabci.jl"))
include(joinpath("plugins", "githubpages.jl")) include(joinpath("plugins", "githubpages.jl"))
include(joinpath("plugins", "gitlabpages.jl")) include(joinpath("plugins", "gitlabpages.jl"))
include(joinpath("plugins", "citation.jl"))
const DEFAULTS_DIR = normpath(joinpath(@__DIR__, "..", "defaults")) const DEFAULTS_DIR = normpath(joinpath(@__DIR__, "..", "defaults"))
const BADGE_ORDER = [GitHubPages, GitLabPages, TravisCI, AppVeyor, GitLabCI, Codecov, Coveralls] const BADGE_ORDER = [GitHubPages, GitLabPages, TravisCI, AppVeyor, GitLabCI, Codecov, Coveralls]

View File

@ -198,6 +198,10 @@ function gen_readme(pkg_dir::AbstractString, t::Template)
"\n", "\n",
) )
end end
if haskey(t.plugins, Citation) && t.plugins[Citation].readme_section
text *= "\n## Citing\n\nSee `CITATION.bib` for the relevant reference(s).\n"
end
gen_file(joinpath(pkg_dir, "README.md"), text) gen_file(joinpath(pkg_dir, "README.md"), text)
return ["README.md"] return ["README.md"]

45
src/plugins/citation.jl Normal file
View File

@ -0,0 +1,45 @@
"""
Citation(; readme_section::Bool=false)
Add `Citation` to a template's plugins to add a `CITATION.bib` file to
generated repositories, and an appropriate section in the README.
# Keyword Arguments:
* `readme_section::Bool=false`: whether to add a section in the readme pointing to `CITATION.bib`.
"""
struct Citation <: GenericPlugin
gitignore::Vector{AbstractString}
src::Union{String, Nothing}
dest::AbstractString
badges::Vector{Badge}
view::Dict{String, Any}
readme_section::Bool
function Citation(; readme_section::Bool=false)
new(
[],
nothing,
"CITATION.bib",
[],
Dict{String, Any}(),
readme_section,
)
end
end
interactive(::Type{Citation}) = interactive(Citation; readme_section=false)
function gen_plugin(p::Citation, t::Template, pkg_name::AbstractString)
pkg_dir = joinpath(t.dir, pkg_name)
text = """
@misc{$pkg_name.jl,
\tauthor = {$(t.authors)},
\ttitle = {{$(pkg_name).jl}},
\turl = {https://$(t.host)/$(t.user)/$(pkg_name).jl},
\tversion = {v0.1.0},
\tyear = {$(year(today()))},
\tmonth = {$(month(today()))}
}
"""
gen_file(joinpath(pkg_dir, "CITATION.bib"), text)
return ["CITATION.bib"]
end

48
test/plugins/citation.jl Normal file
View File

@ -0,0 +1,48 @@
t = Template(; user=me)
pkg_dir = joinpath(t.dir, test_pkg)
@testset "CITATION" begin
@testset "Plugin creation" begin
p = Citation()
@test isempty(p.gitignore)
@test p.dest == "CITATION.bib"
@test isempty(p.badges)
@test isempty(p.view)
@test !p.readme_section
p = Citation(; readme_section=true)
@test p.readme_section
end
@testset "File generation" begin
p = Citation()
@test gen_plugin(p, t, test_pkg) == ["CITATION.bib"]
@test isfile(joinpath(pkg_dir, "CITATION.bib"))
citation = read(joinpath(pkg_dir, "CITATION.bib"), String)
@test occursin("@misc", citation)
@test occursin("$(t.authors)", citation)
@test occursin("v0.1.0", citation)
end
@testset "Readme untouched" begin
p = Citation(; readme_section=false)
t.plugins[Citation] = p
isdir(pkg_dir) && rm(pkg_dir; recursive=true)
generate(test_pkg, t, git=false)
readme = read(joinpath(pkg_dir, "README.md"), String)
@test !occursin("## Citing", readme)
@test !occursin("CITATION.bib", readme)
end
@testset "Readme modification" begin
p = Citation(; readme_section=true)
t.plugins[Citation] = p
isdir(pkg_dir) && rm(pkg_dir; recursive=true)
generate(test_pkg, t, git=false)
readme = read(joinpath(pkg_dir, "README.md"), String)
@test occursin("## Citing", readme)
@test occursin("CITATION.bib", readme)
end
end
rm(pkg_dir; recursive=true)

View File

@ -442,6 +442,7 @@ end
include(joinpath("plugins", "coveralls.jl")) include(joinpath("plugins", "coveralls.jl"))
include(joinpath("plugins", "githubpages.jl")) include(joinpath("plugins", "githubpages.jl"))
include(joinpath("plugins", "gitlabpages.jl")) include(joinpath("plugins", "gitlabpages.jl"))
include(joinpath("plugins", "citation.jl"))
end end
@testset "Documenter add kwargs" begin @testset "Documenter add kwargs" begin