Skip to content

Commit d9225f4

Browse files
add option to create ext when adding weakdeps
1 parent 299a356 commit d9225f4

File tree

3 files changed

+40
-14
lines changed

3 files changed

+40
-14
lines changed

src/Operations.jl

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1677,9 +1677,33 @@ function add(ctx::Context, pkgs::Vector{PackageSpec}, new_git=Set{UUID}();
16771677
else
16781678
record_project_hash(ctx.env)
16791679
write_env(ctx.env)
1680-
names_str = join(names, ", ")
1680+
names_str = join(names, ", ", " and ")
16811681
printpkgstyle(ctx.io, :Added, "$names_str to [$(target)]")
16821682
end
1683+
if target == :weakdeps
1684+
possible_extension_name = join(names) * "Ext"
1685+
if !haskey(ctx.env.project.exts, possible_extension_name)
1686+
plural = length(names) > 1 ? "these weak dependencies" : "this weak dependency"
1687+
printpkgstyle(
1688+
ctx.io,
1689+
:Option,
1690+
"Would you like to create a new entry for extension `$possible_extension_name` with $(plural)? ",
1691+
color=Base.info_color(),
1692+
newline=false
1693+
)
1694+
ans = if isinteractive()
1695+
Base.prompt(stdin, ctx.io, "[Y/n]")
1696+
else
1697+
"y"
1698+
end
1699+
if lowercase(ans) in ("y", "")
1700+
ctx.env.project.exts[possible_extension_name] = collect(names)
1701+
record_project_hash(ctx.env)
1702+
write_env(ctx.env)
1703+
printpkgstyle(ctx.io, :Created, "extension $possible_extension_name")
1704+
end
1705+
end
1706+
end
16831707
return
16841708
end
16851709

src/project.jl

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -241,18 +241,19 @@ function destructure(project::Project)::Dict
241241
should_delete(src) ? delete!(raw, key) : (raw[key] = src)
242242
end
243243

244-
entry!("name", project.name)
245-
entry!("uuid", project.uuid)
246-
entry!("version", project.version)
244+
entry!("name", project.name)
245+
entry!("uuid", project.uuid)
246+
entry!("version", project.version)
247247
entry!("workspace", project.workspace)
248-
entry!("manifest", project.manifest)
249-
entry!("entryfile", project.entryfile)
250-
entry!("deps", merge(project.deps, project._deps_weak))
251-
entry!("weakdeps", project.weakdeps)
252-
entry!("sources", project.sources)
253-
entry!("extras", project.extras)
254-
entry!("compat", Dict(name => x.str for (name, x) in project.compat))
255-
entry!("targets", project.targets)
248+
entry!("manifest", project.manifest)
249+
entry!("entryfile", project.entryfile)
250+
entry!("deps", merge(project.deps, project._deps_weak))
251+
entry!("weakdeps", project.weakdeps)
252+
entry!("sources", project.sources)
253+
entry!("extras", project.extras)
254+
entry!("compat", Dict(name => x.str for (name, x) in project.compat))
255+
entry!("targets", project.targets)
256+
entry!("extensions", project.exts)
256257
return raw
257258
end
258259

src/utils.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11

2-
function printpkgstyle(io::IO, cmd::Symbol, text::String, ignore_indent::Bool=false; color=:green)
2+
function printpkgstyle(io::IO, cmd::Symbol, text::String, ignore_indent::Bool=false; color=:green, newline::Bool=true)
33
indent = textwidth(string(:Precompiling)) # "Precompiling" is the longest operation
44
ignore_indent && (indent = 0)
55
printstyled(io, lpad(string(cmd), indent), color=color, bold=true)
6-
println(io, " ", text)
6+
print(io, " ", text)
7+
newline && println(io)
78
end
89

910
function linewrap(str::String; io = stdout_f(), padding = 0, width = Base.displaysize(io)[2])

0 commit comments

Comments
 (0)