diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index bd17527334e..d79e27337d9 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -992,22 +992,22 @@ var/list/gamemode_cache = list() if(!M) log_debug("GAMEMODE: ERROR: [M] does not exist!") continue - + var/can_start = M.can_start() if(can_start != GAME_FAILURE_NONE) log_debug("GAMEMODE: [M.name] cannot start! Reason: [can_start]") continue - + if(!probabilities[M.config_tag]) log_debug("GAMEMODE: ERROR: [M.name] does not have a config associated with it!") continue - + if(probabilities[M.config_tag] <= 0) log_debug("GAMEMODE: ERROR: [M.name] has a probability equal or less than 0!") - continue + continue runnable_modes |= M - + return runnable_modes /datum/configuration/proc/post_load() @@ -1017,3 +1017,5 @@ var/list/gamemode_cache = list() config.python_path = "/usr/bin/env python2" else //probably windows, if not this should work anyway config.python_path = "python" + + revdata.generate_greeting_info() diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 9aae5e55d3c..0a71af06b77 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -40,8 +40,9 @@ var/datum/controller/subsystem/ticker/SSticker var/delay_end = 0 //if set to nonzero, the round will not restart on it's own var/triai = 0 //Global holder for Triumvirate - var/tipped = 0 //Did we broadcast the tip of the day yet? + var/tipped = FALSE //Did we broadcast the tip of the day yet? var/selected_tip // What will be the tip of the day? + var/testmerges_printed = FALSE var/round_end_announced = 0 // Spam Prevention. Announce round end only once. @@ -134,6 +135,10 @@ var/datum/controller/subsystem/ticker/SSticker pregame_timeleft-- return + if (pregame_timeleft <= 20 && !testmerges_printed) + print_testmerges() + testmerges_printed = TRUE + if (pregame_timeleft <= 10 && !tipped) send_tip_of_the_round() tipped = TRUE @@ -326,6 +331,12 @@ var/datum/controller/subsystem/ticker/SSticker world << "Tip of the round: \ [html_encode(m)]" +/datum/controller/subsystem/ticker/proc/print_testmerges() + var/data = revdata.testmerge_overview() + + if (data) + to_world(data) + /datum/controller/subsystem/ticker/proc/pregame() set waitfor = FALSE sleep(1) // Sleep so the MC has a chance to update its init time. diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index e4d90189cfe..fe1b166731f 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -5,6 +5,8 @@ var/global/datum/getrev/revdata = new() var/revision var/date var/showinfo + var/list/datum/tgs_revision_information/test_merge/test_merges + var/greeting_info /datum/getrev/New() var/list/head_branch = file2list(".git/HEAD", "\n") @@ -24,6 +26,13 @@ var/global/datum/getrev/revdata = new() date = unix2date(unix_time) break + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + + if (api) + test_merges = api.TestMerges() + else + test_merges = list() + world.log << "Running revision:" world.log << branch world.log << date @@ -44,3 +53,62 @@ client/verb/showrevinfo() src << "Revision unknown" src << "Current Map: [current_map.full_name]" + +/datum/getrev/proc/testmerge_overview() + if (!test_merges.len) + return + + var/list/out = list("
PRs test-merged for this round:
") + + for (var/TM in test_merges) + out += testmerge_short_overview(TM) + + out += "

" + + return out.Join() + +/datum/getrev/proc/generate_greeting_info() + if (!test_merges.len) + greeting_info = {"
+ There are currently no test merges loaded onto the server. +
"} + return + + var/list/out = list("

There are currently [test_merges.len] PRs being tested live.

", + {""} + ) + + for (var/TM in test_merges) + out += testmerge_long_oveview(TM) + + out += "
" + + greeting_info = out.Join() + +/datum/getrev/proc/testmerge_short_overview(datum/tgs_revision_information/test_merge/tm) + . = list() + + . += "

PR #[tm.number]: \"[html_encode(tm.title)]\"" + . += "
\tAuthor: [html_encode(tm.author)]" + + if (config.githuburl) + . += "
\t\[Details...\]" + + . += "

" + +/datum/getrev/proc/testmerge_long_oveview(datum/tgs_revision_information/test_merge/tm) + var/divid = "pr[tm.number]" + + . = list() + . += {""} + . += {"PR #[tm.number] - [html_encode(tm.title)]"} + . += {"
"} + . += {""} + . += {""} + . += {""} + + if (config.githuburl) + . += {""} + + . += {""} + . += {"
Author:[html_encode(tm.author)]
Merged:[tm.time_merged]
Link to Github
Description:[html_encode(tm.body)]
"} diff --git a/code/datums/server_greeting.dm b/code/datums/server_greeting.dm index f1888d8a88c..e3f3873ff71 100644 --- a/code/datums/server_greeting.dm +++ b/code/datums/server_greeting.dm @@ -179,7 +179,7 @@ var/datum/asset/welcome = get_asset_datum(/datum/asset/simple/misc) welcome.send(user) - user << browse('html/templates/welcome_screen.html', "window=greeting;size=640x500") + user << browse('html/templates/welcome_screen.html', "window=greeting;size=740x500") /* * A proc used to close the server greeting window for a user. @@ -247,6 +247,16 @@ data["content"] = motd user << output(JS_SANITIZE(data), "greeting.browser:AddContent") + data["div"] = "#testmerges" + data["content"] = revdata.greeting_info + + if (revdata.test_merges.len) + data["update"] = 1 + else + data["update"] = 0 + data["changeHash"] = null + user << output(JS_SANITIZE(data), "greeting.browser:AddContent") + /* * Basically the Topic proc for the greeting datum. */ @@ -338,3 +348,5 @@ #undef OUTDATED_MOTD #undef MEMOFILE + +#undef JS_SANITIZE diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index a2946ac028d..54c74f1d585 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -186,8 +186,12 @@ if ("github") if (!config.githuburl) src << "Github URL not set in the config. Unable to open the site." - else if (alert("This will open the issue tracker in your browser. Are you sure?",, "Yes", "No") == "Yes") - src << link(config.githuburl) + else if (alert("This will open the Github page in your browser. Are you sure?",, "Yes", "No") == "Yes") + if (href_list["pr"]) + var/pr_link = "[config.githuburl]pull/[href_list["pr"]]" + src << link(pr_link) + else + src << link(config.githuburl) // Forum link from various panels. if ("forums") diff --git a/html/changelogs/skull132_revdata.yml b/html/changelogs/skull132_revdata.yml new file mode 100644 index 00000000000..cc61ff9844a --- /dev/null +++ b/html/changelogs/skull132_revdata.yml @@ -0,0 +1,5 @@ +author: Skull132 +delete-after: true + +changes: + - rscadd: "The active test merges are now displayed at the start of each round. They can also be inspected from the greetings window." diff --git a/html/templates/welcome_screen.html b/html/templates/welcome_screen.html index 80beb9bb15f..f8c9c593d26 100644 --- a/html/templates/welcome_screen.html +++ b/html/templates/welcome_screen.html @@ -6,11 +6,15 @@ - +
@@ -18,6 +22,7 @@
+
You do not have any notifications to show.