Server build date and revision.

Can now see the current compilation date and revision:
* In the Dream Daemon log output.
* By using the "Show Server Revision" client verb which also links you to the commit in question.
This commit is contained in:
PsiOmega
2015-05-28 09:00:33 +02:00
parent 57807a766b
commit 4ce737d87d
5 changed files with 103 additions and 12 deletions

View File

@@ -149,6 +149,7 @@
#include "code\datums\diseases\advance\symptoms\weight.dm" #include "code\datums\diseases\advance\symptoms\weight.dm"
#include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\construction_datum.dm"
#include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"
#include "code\datums\helper_datums\global_iterator.dm" #include "code\datums\helper_datums\global_iterator.dm"
#include "code\datums\helper_datums\teleport.dm" #include "code\datums\helper_datums\teleport.dm"
#include "code\datums\helper_datums\topic_input.dm" #include "code\datums\helper_datums\topic_input.dm"

View File

@@ -70,19 +70,19 @@
/proc/list2text(list/ls, sep) /proc/list2text(list/ls, sep)
if (ls.len <= 1) // Early-out code for empty or singleton lists. if (ls.len <= 1) // Early-out code for empty or singleton lists.
return ls.len ? ls[1] : "" return ls.len ? ls[1] : ""
var/l = ls.len // Made local for sanic speed. var/l = ls.len // Made local for sanic speed.
var/i = 0 // Incremented every time a list index is accessed. var/i = 0 // Incremented every time a list index is accessed.
if (sep <> null) if (sep <> null)
// Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc... // Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc...
#define S1 sep, ls[++i] #define S1 sep, ls[++i]
#define S4 S1, S1, S1, S1 #define S4 S1, S1, S1, S1
#define S16 S4, S4, S4, S4 #define S16 S4, S4, S4, S4
#define S64 S16, S16, S16, S16 #define S64 S16, S16, S16, S16
. = "[ls[++i]]" // Make sure the initial element is converted to text. . = "[ls[++i]]" // Make sure the initial element is converted to text.
// Having the small concatenations come before the large ones boosted speed by an average of at least 5%. // Having the small concatenations come before the large ones boosted speed by an average of at least 5%.
if (l-1 & 0x01) // 'i' will always be 1 here. if (l-1 & 0x01) // 'i' will always be 1 here.
. = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2. . = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2.
@@ -111,7 +111,7 @@
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64) [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
#undef S64 #undef S64
#undef S16 #undef S16
#undef S4 #undef S4
@@ -122,9 +122,9 @@
#define S4 S1, S1, S1, S1 #define S4 S1, S1, S1, S1
#define S16 S4, S4, S4, S4 #define S16 S4, S4, S4, S4
#define S64 S16, S16, S16, S16 #define S64 S16, S16, S16, S16
. = "[ls[++i]]" // Make sure the initial element is converted to text. . = "[ls[++i]]" // Make sure the initial element is converted to text.
if (l-1 & 0x01) // 'i' will always be 1 here. if (l-1 & 0x01) // 'i' will always be 1 here.
. += S1 // Append 1 element if the remaining elements are not a multiple of 2. . += S1 // Append 1 element if the remaining elements are not a multiple of 2.
if (l-i & 0x02) if (l-i & 0x02)
@@ -145,7 +145,7 @@
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\ [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64) [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
#undef S64 #undef S64
#undef S16 #undef S16
#undef S4 #undef S4
@@ -165,11 +165,11 @@ proc/tg_list2text(list/list, glue=",")
var/delim_len = length(delimiter) var/delim_len = length(delimiter)
if (delim_len < 1) if (delim_len < 1)
return list(text) return list(text)
. = list() . = list()
var/last_found = 1 var/last_found = 1
var/found var/found
do do
found = findtext(text, delimiter, last_found, 0) found = findtext(text, delimiter, last_found, 0)
. += copytext(text, last_found, found) . += copytext(text, last_found, found)
@@ -181,11 +181,11 @@ proc/tg_list2text(list/list, glue=",")
var/delim_len = length(delimiter) var/delim_len = length(delimiter)
if (delim_len < 1) if (delim_len < 1)
return list(text) return list(text)
. = list() . = list()
var/last_found = 1 var/last_found = 1
var/found var/found
do do
found = findtextEx(text, delimiter, last_found, 0) found = findtextEx(text, delimiter, last_found, 0)
. += copytext(text, last_found, found) . += copytext(text, last_found, found)
@@ -325,3 +325,47 @@ proc/tg_list2text(list/list, glue=",")
. = 0 . = 0
else else
. = max(0, min(255, 138.5177312231 * log(temp - 10) - 305.0447927307)) . = max(0, min(255, 138.5177312231 * log(temp - 10) - 305.0447927307))
// Very ugly, BYOND doesn't support unix time and rounding errors make it really hard to convert it to BYOND time.
// returns "YYYY-MM-DD" by default
/proc/unix2date(timestamp, seperator = "-")
if(timestamp < 0)
return 0 //Do not accept negative values
var/const/dayInSeconds = 86400 //60secs*60mins*24hours
var/const/daysInYear = 365 //Non Leap Year
var/const/daysInLYear = daysInYear + 1//Leap year
var/days = round(timestamp / dayInSeconds) //Days passed since UNIX Epoc
var/year = 1970 //Unix Epoc begins 1970-01-01
var/tmpDays = days + 1 //If passed (timestamp < dayInSeconds), it will return 0, so add 1
var/monthsInDays = list() //Months will be in here ***Taken from the PHP source code***
var/month = 1 //This will be the returned MONTH NUMBER.
var/day //This will be the returned day number.
while(tmpDays > daysInYear) //Start adding years to 1970
year++
if(isLeap(year))
tmpDays -= daysInLYear
else
tmpDays -= daysInYear
if(isLeap(year)) //The year is a leap year
monthsInDays = list(-1,30,59,90,120,151,181,212,243,273,304,334)
else
monthsInDays = list(0,31,59,90,120,151,181,212,243,273,304,334)
var/mDays = 0;
var/monthIndex = 0;
for(var/m in monthsInDays)
monthIndex++
if(tmpDays > m)
mDays = m
month = monthIndex
day = tmpDays - mDays //Setup the date
return "[year][seperator][((month < 10) ? "0[month]" : month)][seperator][((day < 10) ? "0[day]" : day)]"
/proc/isLeap(y)
return ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))

View File

@@ -90,6 +90,7 @@
var/banappeals var/banappeals
var/wikiurl var/wikiurl
var/forumurl var/forumurl
var/githuburl
//Alert level description //Alert level description
var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
@@ -376,6 +377,9 @@
if ("forumurl") if ("forumurl")
config.forumurl = value config.forumurl = value
if ("githuburl")
config.githuburl = value
if ("guest_jobban") if ("guest_jobban")
config.guest_jobban = 1 config.guest_jobban = 1

View File

@@ -0,0 +1,39 @@
var/global/datum/getrev/revdata = new()
/datum/getrev
var/revision
var/date
var/showinfo
/datum/getrev/New()
var/list/head_log = file2list(".git/logs/HEAD", "\n")
for(var/line=head_log.len, line>=1, line--)
if(head_log[line])
var/list/last_entry = text2list(head_log[line], " ")
if(last_entry.len < 2) continue
revision = last_entry[2]
// Get date/time
if(last_entry.len >= 5)
var/unix_time = text2num(last_entry[5])
if(unix_time)
date = unix2date(unix_time)
break
world.log << "Running revision:"
world.log << date
world.log << revision
return
client/verb/showrevinfo()
set category = "OOC"
set name = "Show Server Revision"
set desc = "Check the current server code revision"
if(revdata.revision)
src << "<b>Server revision:</b> [revdata.date]"
if(config.githuburl)
src << "<a href='[config.githuburl]/commit/[revdata.revision]'>[revdata.revision]</a>"
else
src << revdata.revision
else
src << "Revision unknown"
return

View File

@@ -177,6 +177,9 @@ GUEST_BAN
## Wiki address ## Wiki address
# WIKIURL http://example.com # WIKIURL http://example.com
## GitHub address
# GITHUBURL https://github.com/example-user/example-repository
## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. ## Ban appeals URL - usually for a forum or wherever people should go to contact your admins.
# BANAPPEALS http://example.com # BANAPPEALS http://example.com