rev |
line source |
bsw@1219
|
1 function lf4rcs.commit(issue)
|
bsw@1219
|
2 local repository, path, url = lf4rcs.get_config(issue.area.unit)
|
bsw@1219
|
3 if not (config.lf4rcs[repository] and config.lf4rcs[repository].commit) then
|
bsw@1219
|
4 error("Unsupported repository type")
|
bsw@1219
|
5 end
|
bsw@1219
|
6 local initiatives = Initiative:new_selector()
|
bsw@1219
|
7 :add_where{ "issue_id = ?", issue.id }
|
bsw@1219
|
8 :exec()
|
bsw@1219
|
9 for i, initiative in ipairs(initiatives) do
|
jbe@1220
|
10 local failure = false
|
bsw@1219
|
11 local function exec(...)
|
bsw@1219
|
12 local command, output, err_message, exit_code = lf4rcs.exec(...)
|
jbe@1220
|
13 local log
|
jbe@1220
|
14 if failure then
|
jbe@1220
|
15 log = "Skipped: " .. command .. "\n"
|
jbe@1220
|
16 else
|
jbe@1220
|
17 log = "Executed: " .. command .. "\n"
|
jbe@1220
|
18 if output then
|
jbe@1220
|
19 log = log .. output .. "\n"
|
jbe@1220
|
20 end
|
jbe@1220
|
21 if err_message and #err_message > 0 then
|
jbe@1220
|
22 log = log .. "ERROR: " .. err_message .. "\n"
|
jbe@1220
|
23 failure = true
|
jbe@1220
|
24 end
|
jbe@1220
|
25 if exit_code and exit_code ~= 0 then
|
jbe@1220
|
26 log = log .. "Exit code: " .. tostring(exit_code) .. "\n"
|
jbe@1220
|
27 failure = true
|
jbe@1220
|
28 end
|
bsw@1219
|
29 end
|
bsw@1219
|
30 issue.admin_notice = (issue.admin_notice or "") .. log
|
bsw@1219
|
31 issue:save()
|
bsw@1219
|
32 end
|
bsw@1219
|
33 local close_message, merge_message
|
bsw@1219
|
34 if initiative.winner then
|
bsw@1219
|
35 close_message = "Initiative i" .. initiative.id
|
bsw@1219
|
36 .. " accepted as winner. Closing branch."
|
bsw@1219
|
37 merge_message = "Initiative i" .. initiative.id
|
bsw@1219
|
38 .. " accepted as winner. Applying branch changesets to upstream."
|
bsw@1219
|
39 else
|
bsw@1219
|
40 close_message = "Initiative i" .. initiative.id .. " rejected. Closing branch."
|
bsw@1219
|
41 end
|
bsw@1219
|
42 local target_node_id = initiative.current_draft.external_reference
|
bsw@1219
|
43 if target_node_id then
|
bsw@1219
|
44 local branch = "i" .. initiative.id
|
bsw@1219
|
45 lf4rcs[repository].commit(path, exec, branch, target_node_id, close_message, merge_message)
|
bsw@1219
|
46 end
|
bsw@1219
|
47 end
|
bsw@1219
|
48 end
|