diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index b9b539c32e8..9e04917b240 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,7 +1,7 @@ // tgstation-server DMAPI // The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119. -#define TGS_DMAPI_VERSION "7.3.3" +#define TGS_DMAPI_VERSION "7.4.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -584,11 +584,17 @@ /world/proc/TgsTriggerEvent(event_name, list/parameters, wait_for_completion = FALSE) CAN_BE_REDEFINED(TRUE) return + + +/// Trigger a TGS deployment for the current instance. The current state of the repository will not be changed. +/world/proc/TgsTriggerDeployment() + CAN_BE_REDEFINED(TRUE) + return /* The MIT License -Copyright (c) 2017-2024 Jordan Brown +Copyright (c) 2017-2026 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and diff --git a/code/modules/tgs/README.md b/code/modules/tgs/README.md index 35ca73d7e9a..473442fd119 100644 --- a/code/modules/tgs/README.md +++ b/code/modules/tgs/README.md @@ -5,9 +5,9 @@ This folder should be placed on its own inside a codebase that wishes to use the - [includes.dm](./includes.dm) is the file that should be included by DM code, it handles including the rest. - The [core](./core) folder includes all code not directly part of any API version. - The other versioned folders contain code for the different DMAPI versions. - - [v3210](./v3210) contains the final TGS3 API. - - [v4](./v4) is the legacy DMAPI 4 (Used in TGS 4.0.X versions). - - [v5](./v5) is the current DMAPI version used by TGS >=4.1. + - [v3210](./v3210) contains the final TGS3 API. + - [v4](./v4) is the legacy DMAPI 4 (Used in TGS 4.0.X versions). + - [v5](./v5) is the current DMAPI version used by TGS >=4.1. - [LICENSE](./LICENSE) is the MIT license for the DMAPI. APIs communicate with TGS in two ways. All versions implement TGS -> DM communication using /world/Topic. DM -> TGS communication, called the bridge method, is different for each version. diff --git a/code/modules/tgs/core/README.md b/code/modules/tgs/core/README.md index 965e21b549a..7886a857149 100644 --- a/code/modules/tgs/core/README.md +++ b/code/modules/tgs/core/README.md @@ -2,7 +2,7 @@ This folder contains all DMAPI code not directly involved in an API. -- [_definitions.dm](./definitions.dm) contains defines needed across DMAPI internals. +- [\_definitions.dm](./definitions.dm) contains defines needed across DMAPI internals. - [byond_world_export.dm](./byond_world_export.dm) contains the default `/datum/tgs_http_handler` implementation which uses `world.Export()`. - [core.dm](./core.dm) contains the implementations of the `/world/proc/TgsXXX()` procs. Many map directly to the `/datum/tgs_api` functions. It also contains the /datum selection and setup code. - [datum.dm](./datum.dm) contains the `/datum/tgs_api` declarations that all APIs must implement. diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 63cb5a2c351..f70d07aaed8 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -177,3 +177,8 @@ parameters = list() return api.TriggerEvent(event_name, parameters, wait_for_completion) + +/world/TgsTriggerDeployment() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + return api.TriggerDeployment() diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 3ca53e9bf7c..fae924929db 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -72,3 +72,6 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/TriggerEvent(event_name, list/parameters, wait_for_completion) return FALSE + +/datum/tgs_api/proc/TriggerDeployment() + return TGS_UNIMPLEMENTED diff --git a/code/modules/tgs/v5/README.md b/code/modules/tgs/v5/README.md index a8a0c748e7b..fb374c2f872 100644 --- a/code/modules/tgs/v5/README.md +++ b/code/modules/tgs/v5/README.md @@ -2,8 +2,8 @@ This DMAPI implements bridge requests using HTTP GET requests to TGS. It has no security restrictions. -- [__interop_version.dm](./__interop_version.dm) contains the version of the API used between the DMAPI and TGS. -- [_defines.dm](./_defines.dm) contains constant definitions. +- [\_\_interop_version.dm](./__interop_version.dm) contains the version of the API used between the DMAPI and TGS. +- [\_defines.dm](./_defines.dm) contains constant definitions. - [api.dm](./api.dm) contains the bulk of the API code. - [bridge.dm](./bridge.dm) contains functions related to making bridge requests. - [chunking.dm](./chunking.dm) contains common function for splitting large raw data sets into chunks BYOND can natively process. diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index 9589cbf31bb..e6ebf62db10 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.10.1" +"5.11.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index a47bfd78000..d4bd50353ed 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -15,6 +15,7 @@ #define DMAPI5_BRIDGE_COMMAND_CHAT_SEND 5 #define DMAPI5_BRIDGE_COMMAND_CHUNK 6 #define DMAPI5_BRIDGE_COMMAND_EVENT 7 +#define DMAPI5_BRIDGE_COMMAND_DEPLOY 8 #define DMAPI5_PARAMETER_ACCESS_IDENTIFIER "accessIdentifier" #define DMAPI5_PARAMETER_CUSTOM_COMMANDS "customCommands" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 4ca9036b790..8ade67d28e7 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -294,6 +294,19 @@ return TRUE +/datum/tgs_api/v5/TriggerDeployment(event_name, list/parameters, wait_for_completion) + RequireInitialBridgeResponse() + WaitForReattach(TRUE) + + if(interop_version.minor < 11) + TGS_WARNING_LOG("Interop version too low for triggering deployments!") + return FALSE + + var response = Bridge(DMAPI5_BRIDGE_COMMAND_DEPLOY) + if(!response) + return FALSE + return TRUE + /datum/tgs_api/v5/proc/DecodeChannels(chat_update_json) TGS_DEBUG_LOG("DecodeChannels()") var/list/chat_channels_json = chat_update_json[DMAPI5_CHAT_UPDATE_CHANNELS] diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index ca49e46cdff..9fb845c91d6 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -15,6 +15,7 @@ #undef DMAPI5_BRIDGE_COMMAND_CHAT_SEND #undef DMAPI5_BRIDGE_COMMAND_CHUNK #undef DMAPI5_BRIDGE_COMMAND_EVENT +#undef DMAPI5_BRIDGE_COMMAND_DEPLOY #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS