From 4a72ca7322f65216a9bc998f5371acb3fc09eeea Mon Sep 17 00:00:00 2001 From: Will Pazner Date: Tue, 6 Apr 2021 14:09:58 -0700 Subject: [PATCH] Resolve JuliaLang/Pkg.jl#759 --- src/generate.jl | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/generate.jl b/src/generate.jl index c085aabb79..b593b32ffc 100644 --- a/src/generate.jl +++ b/src/generate.jl @@ -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) @@ -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), @@ -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