diff --git a/src/interactive.jl b/src/interactive.jl index 782dec1..a26414a 100644 --- a/src/interactive.jl +++ b/src/interactive.jl @@ -13,8 +13,10 @@ function interactive(::Type{T}) where T <: Plugin default = required ? defaultkw(F) : defaultkw(T, v) kwargs[name] = if applicable(prompt, T, v) prompt(F, "$T: $(prompt(T, v))", default, required=required) - else + elseif required prompt(F, "$T: Value for field '$name' ($F)", default; required=required) + else + default end end diff --git a/src/plugin.jl b/src/plugin.jl index c6623ee..bc5bba1 100644 --- a/src/plugin.jl +++ b/src/plugin.jl @@ -28,16 +28,13 @@ macro with_defaults(ex::Expr) push!(funcs, :(PkgTemplates.prompt(::Type{$T}, ::Val{$name}) = $(esc(prompt)))) elseif arg.head === :(=) rhs = arg.args[2] + name = QuoteNode(arg.args[1].args[1]) if iscall(rhs, :<) && iscall(rhs.args[3], :-) # x::T = "foo" <- "prompt" - name = QuoteNode(arg.args[1].args[1]) prompt = rhs.args[3].args[2] - default = arg.args[2] = rhs.args[2] - push!( - funcs, - :(PkgTemplates.prompt(::Type{$T}, ::Val{$name}) = $(esc(prompt))), - :(PkgTemplates.defaultkw(::Type{$T}, ::Val{$name}) = $(esc(default))), - ) + push!(funcs, :(PkgTemplates.prompt(::Type{$T}, ::Val{$name}) = $(esc(prompt)))) end + default = arg.args[2] = rhs.args[2] + push!(funcs, :(PkgTemplates.defaultkw(::Type{$T}, ::Val{$name}) = $(esc(default)))) end end