-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtypes_config.jl
More file actions
91 lines (87 loc) · 3.62 KB
/
types_config.jl
File metadata and controls
91 lines (87 loc) · 3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
struct Config
apt::Vector{String}
exclude_packages_from_sysimage::Vector{String}
julia_cpu_target::String
julia_version::Union{String, VersionNumber}
registry_urls::Vector{String}
mount_ssh::Bool
make_sysimage::Bool
no_test::Vector{String}
packagecompiler_installation_command::String
parent_image::String
pkgs::Vector{Dict{Symbol,String}}
precompile_execution_env_vars::Dict{String, String}
simplecontainergenerator_installation_command::String
tests_must_pass::Vector{String}
wrapper_script_env_vars::Dict{String, String}
end
function Config(pkgs::AbstractVector{<:AbstractDict{<:Symbol,<:AbstractString}} =
Vector{Dict{Symbol,String}}(undef, 0);
#
additional_apt::AbstractVector{<:AbstractString} =
String[],
override_default_apt::AbstractVector{<:AbstractString} =
_default_apt(),
#
exclude_packages_from_sysimage =
String[],
julia_cpu_target =
_default_julia_cpu_target(),
julia_version::Union{AbstractString, VersionNumber} =
_default_julia_version(),
registry_urls = String[],
mount_ssh::Bool = false,
make_sysimage::Bool =
true,
no_test =
String[],
packagecompiler_installation_command::String =
_default_packagecompiler_installation_command(),
parent_image::String = _default_docker_parent_image(),
precompile_execution_env_vars =
_default_precompile_execution_env_vars(),
simplecontainergenerator_installation_command::String =
_default_simplecontainergenerator_installation_command(),
tests_must_pass =
String[],
wrapper_script_env_vars =
_default_wrapper_script_env_vars())
apt = Vector{String}(undef, 0)
append!(apt, override_default_apt)
append!(apt, additional_apt)
unique!(apt)
config = Config(apt,
exclude_packages_from_sysimage,
julia_cpu_target,
julia_version,
registry_urls,
mount_ssh,
make_sysimage,
no_test,
packagecompiler_installation_command,
parent_image,
pkgs,
precompile_execution_env_vars,
simplecontainergenerator_installation_command,
tests_must_pass,
wrapper_script_env_vars)
return config
end
function Config(pkg::Union{AbstractDict{<:Symbol, <:AbstractString}, AbstractString, NamedTuple};
kwargs...)
return Config([pkg]; kwargs...)
end
function Config(pkg_names::AbstractVector{<:AbstractString};
kwargs...)
num_pkgs = length(pkg_names)
pkgs = Vector{Dict{Symbol, String}}(undef, num_pkgs)
for i = 1:num_pkgs
pkgs[i] = Dict(:name => pkg_names[i])
end
return Config(pkgs; kwargs...)
end
function Config(pkg_tuples::AbstractVector{<:NamedTuple};
kwargs...)
pkgs = Dict.(pairs.(pkg_tuples))
return Config(pkgs; kwargs...)
end