Skip to content

Commit

Permalink
Resolve JuliaLang#759
Browse files Browse the repository at this point in the history
  • Loading branch information
pazner committed Apr 6, 2021
1 parent e6deb94 commit 4a72ca7
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions src/generate.jl
Original file line number Diff line number Diff line change
@@ -1,26 +1,24 @@
# This file is a part of Julia. License is MIT: https://julialang.org/license

generate(path::String; kwargs...) = generate(Context(), path; kwargs...)
function generate(ctx::Context, path::String; kwargs...)
Context!(ctx; kwargs...)
function generate(path::String; io::IO=DEFAULT_IO[])
dir, pkg = dirname(path), basename(path)
Base.isidentifier(pkg) || pkgerror("$(repr(pkg)) is not a valid package name")
isdir(path) && pkgerror("$(abspath(path)) already exists")
printpkgstyle(ctx.io, :Generating, " project $pkg:")
uuid = project(ctx, pkg, dir)
entrypoint(ctx, pkg, dir)
printpkgstyle(io, :Generating, " project $pkg:")
uuid = project(io, pkg, dir)
entrypoint(io, pkg, dir)
return Dict(pkg => uuid)
end

function genfile(f::Function, ctx::Context, pkg::String, dir::String, file::String)
function genfile(f::Function, io::IO, pkg::String, dir::String, file::String)
path = joinpath(dir, pkg, file)
println(ctx.io, " $(Base.contractuser(path))")
println(io, " $(Base.contractuser(path))")
mkpath(dirname(path))
open(f, path, "w")
return
end

function project(ctx::Context, pkg::String, dir::String)
function project(io::IO, pkg::String, dir::String)
name = email = nothing
gitname = LibGit2.getconfig("user.name", "")
isempty(gitname) || (name = gitname)
Expand All @@ -46,7 +44,7 @@ function project(ctx::Context, pkg::String, dir::String)
authors = ["$name " * (email === nothing ? "" : "<$email>")]

uuid = UUIDs.uuid4()
genfile(ctx, pkg, dir, "Project.toml") do io
genfile(io, pkg, dir, "Project.toml") do io
toml = Dict{String,Any}("authors" => authors,
"name" => pkg,
"uuid" => string(uuid),
Expand All @@ -57,8 +55,8 @@ function project(ctx::Context, pkg::String, dir::String)
return uuid
end

function entrypoint(ctx::Context, pkg::String, dir)
genfile(ctx, pkg, dir, "src/$pkg.jl") do io
function entrypoint(io::IO, pkg::String, dir)
genfile(io, pkg, dir, "src/$pkg.jl") do io
print(io,
"""
module $pkg
Expand Down

0 comments on commit 4a72ca7

Please sign in to comment.