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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/squared/workspace/repo.rb', line 25
def repo(url, manifest = 'latest', run: nil, script: nil, dev: nil, prod: nil, ref: @ref, group: @group)
@home = if (val = env('REPO_HOME'))
home = Pathname.new(val)
if main == home.basename.to_s
@root = home.parent
if home.exist?
@root = nil unless home.directory?
elsif !@root.exist?
@root.mkpath
elsif !repo_install?
@root = nil unless repo_confirm
end
end
raise_error('REPO_HOME', val, hint: 'invalid') unless @root
home.realdirpath
elsif (val = env('REPO_ROOT'))
@root = Pathname.new(val).realdirpath
if !@root.exist?
@root.mkpath
elsif !repo_install?(parent: true)
raise_error('REPO_ROOT', val, hint: 'exist') unless repo_confirm
end
@root.join(main).realdirpath
else
repo_install?(@home) ? @home.join(main) : @home
end
@root = @home.parent
@manifest_url = url
@manifest = manifest
data = script_obj
if repo?
if script
if (val = env('REPO_BUILD'))
data[:script] = case val
when 'verbose'
@verbose = 1
if script.is_a?(::Array)
script[0] = "#{script[0]}:verbose"
script
else
"#{script}:verbose"
end
when 'silent'
@verbose = false
@warning = false
script
else
val
end
data[:env] = true
else
data[:script] = script
end
elsif (val = env('REPO_BUILD'))
data[:run] = val
data[:env] = true
else
data[:run] = run
end
data[:global] = true
data[:dev] = env_match('REPO_DEV', dev, suffix: @envname)
data[:prod] = env_match('REPO_PROD', prod, suffix: @envname)
if (val = env('REPO_GROUP'))
script_set(data, group: val.split(','))
found = true
end
if (val = env('REPO_REF'))
script_set(data, ref: val.split(','))
found = true
end
script_set(data, group: group, ref: ref) unless found
@warning = env_match('REPO_WARN', @warning && !Repo.empty?(@root), suffix: @envname) != false
@extensions << :__repo__
elsif script || run
if script
data[:script] = script
else
data[:run] = run
end
data[:dev] = dev
data[:prod] = prod
script_set(data, group: group, ref: ref)
end
self
end
|