diff --git a/api/proto/neoshowcase/protobuf/gateway.proto b/api/proto/neoshowcase/protobuf/gateway.proto index 3f22ceb69..55cefd337 100644 --- a/api/proto/neoshowcase/protobuf/gateway.proto +++ b/api/proto/neoshowcase/protobuf/gateway.proto @@ -95,6 +95,7 @@ message SimpleCommit { enum DeployType { RUNTIME = 0; STATIC = 1; + FUNCTION = 2; } message AutoShutdownConfig { @@ -137,6 +138,10 @@ message StaticConfig { bool spa = 2; } +message FunctionConfig { + string artifact_path = 1; +} + message BuildConfigStaticBuildpack { StaticConfig static_config = 1; string context = 2; @@ -154,6 +159,23 @@ message BuildConfigStaticDockerfile { string context = 3; } +message BuildConfigFunctionBuildpack { + FunctionConfig function_config = 1; + string context = 2; +} + +message BuildConfigFunctionCmd { + FunctionConfig function_config = 1; + string base_image = 2; + string build_cmd = 3; +} + +message BuildConfigFunctionDockerfile { + FunctionConfig function_config = 1; + string dockerfile_name = 2; + string context = 3; +} + message ApplicationConfig { oneof build_config { BuildConfigRuntimeBuildpack runtime_buildpack = 1; @@ -162,6 +184,9 @@ message ApplicationConfig { BuildConfigStaticBuildpack static_buildpack = 4; BuildConfigStaticCmd static_cmd = 5; BuildConfigStaticDockerfile static_dockerfile = 6; + BuildConfigFunctionBuildpack function_buildpack = 7; + BuildConfigFunctionCmd function_cmd = 8; + BuildConfigFunctionDockerfile function_dockerfile = 9; } } diff --git a/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts b/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts index b6c54e79d..cb283deba 100644 --- a/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts +++ b/dashboard/src/api/neoshowcase/protobuf/gateway_pb.ts @@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file neoshowcase/protobuf/gateway.proto. */ export const file_neoshowcase_protobuf_gateway: GenFile = /*@__PURE__*/ - fileDesc("CiJuZW9zaG93Y2FzZS9wcm90b2J1Zi9nYXRld2F5LnByb3RvEhRuZW9zaG93Y2FzZS5wcm90b2J1ZiIlCgdTU0hJbmZvEgwKBGhvc3QYASABKAkSDAoEcG9ydBgCIAEoBSJpCg9BdmFpbGFibGVEb21haW4SDgoGZG9tYWluGAEgASgJEhcKD2V4Y2x1ZGVfZG9tYWlucxgCIAMoCRIWCg5hdXRoX2F2YWlsYWJsZRgDIAEoCBIVCg1hbHJlYWR5X2JvdW5kGAQgASgIInYKDUF2YWlsYWJsZVBvcnQSEgoKc3RhcnRfcG9ydBgBIAEoBRIQCghlbmRfcG9ydBgCIAEoBRI/Cghwcm90b2NvbBgDIAEoDjItLm5lb3Nob3djYXNlLnByb3RvYnVmLlBvcnRQdWJsaWNhdGlvblByb3RvY29sIisKDkFkZGl0aW9uYWxMaW5rEgwKBG5hbWUYASABKAkSCwoDdXJsGAIgASgJIpsCCgpTeXN0ZW1JbmZvEhIKCnB1YmxpY19rZXkYASABKAkSKgoDc3NoGAIgASgLMh0ubmVvc2hvd2Nhc2UucHJvdG9idWYuU1NISW5mbxI2Cgdkb21haW5zGAMgAygLMiUubmVvc2hvd2Nhc2UucHJvdG9idWYuQXZhaWxhYmxlRG9tYWluEjIKBXBvcnRzGAQgAygLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuQXZhaWxhYmxlUG9ydBI+ChBhZGRpdGlvbmFsX2xpbmtzGAUgAygLMiQubmVvc2hvd2Nhc2UucHJvdG9idWYuQWRkaXRpb25hbExpbmsSDwoHdmVyc2lvbhgGIAEoCRIQCghyZXZpc2lvbhgHIAEoCSJDCgRVc2VyEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWRtaW4YAyABKAgSEgoKYXZhdGFyX3VybBgEIAEoCSJ4CgdVc2VyS2V5EgoKAmlkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSEgoKcHVibGljX2tleRgDIAEoCRIMCgRuYW1lGAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsYBCgpSZXBvc2l0b3J5EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSCwoDdXJsGAMgASgJEhAKCGh0bWxfdXJsGAQgASgJEkAKC2F1dGhfbWV0aG9kGAUgASgOMisubmVvc2hvd2Nhc2UucHJvdG9idWYuUmVwb3NpdG9yeS5BdXRoTWV0aG9kEhEKCW93bmVyX2lkcxgGIAMoCSIqCgpBdXRoTWV0aG9kEggKBE5PTkUQABIJCgVCQVNJQxABEgcKA1NTSBACInMKDFNpbXBsZUNvbW1pdBIMCgRoYXNoGAEgASgJEhMKC2F1dGhvcl9uYW1lGAIgASgJEi8KC2NvbW1pdF9kYXRlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdtZXNzYWdlGAQgASgJIrIBChJBdXRvU2h1dGRvd25Db25maWcSDwoHZW5hYmxlZBgBIAEoCBJJCgdzdGFydHVwGAIgASgOMjgubmVvc2hvd2Nhc2UucHJvdG9idWYuQXV0b1NodXRkb3duQ29uZmlnLlN0YXJ0dXBCZWhhdmlvciJACg9TdGFydHVwQmVoYXZpb3ISDQoJVU5ERUZJTkVEEAASEAoMTE9BRElOR19QQUdFEAESDAoIQkxPQ0tJTkcQAiKfAQoNUnVudGltZUNvbmZpZxITCgt1c2VfbWFyaWFkYhgBIAEoCBITCgt1c2VfbW9uZ29kYhgCIAEoCBISCgplbnRyeXBvaW50GAMgASgJEg8KB2NvbW1hbmQYBCABKAkSPwoNYXV0b19zaHV0ZG93bhgFIAEoCzIoLm5lb3Nob3djYXNlLnByb3RvYnVmLkF1dG9TaHV0ZG93bkNvbmZpZyJrChtCdWlsZENvbmZpZ1J1bnRpbWVCdWlsZHBhY2sSOwoOcnVudGltZV9jb25maWcYASABKAsyIy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SdW50aW1lQ29uZmlnEg8KB2NvbnRleHQYAiABKAkiewoVQnVpbGRDb25maWdSdW50aW1lQ21kEjsKDnJ1bnRpbWVfY29uZmlnGAEgASgLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuUnVudGltZUNvbmZpZxISCgpiYXNlX2ltYWdlGAIgASgJEhEKCWJ1aWxkX2NtZBgDIAEoCSKFAQocQnVpbGRDb25maWdSdW50aW1lRG9ja2VyZmlsZRI7Cg5ydW50aW1lX2NvbmZpZxgBIAEoCzIjLm5lb3Nob3djYXNlLnByb3RvYnVmLlJ1bnRpbWVDb25maWcSFwoPZG9ja2VyZmlsZV9uYW1lGAIgASgJEg8KB2NvbnRleHQYAyABKAkiMgoMU3RhdGljQ29uZmlnEhUKDWFydGlmYWN0X3BhdGgYASABKAkSCwoDc3BhGAIgASgIImgKGkJ1aWxkQ29uZmlnU3RhdGljQnVpbGRwYWNrEjkKDXN0YXRpY19jb25maWcYASABKAsyIi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5TdGF0aWNDb25maWcSDwoHY29udGV4dBgCIAEoCSJ4ChRCdWlsZENvbmZpZ1N0YXRpY0NtZBI5Cg1zdGF0aWNfY29uZmlnGAEgASgLMiIubmVvc2hvd2Nhc2UucHJvdG9idWYuU3RhdGljQ29uZmlnEhIKCmJhc2VfaW1hZ2UYAiABKAkSEQoJYnVpbGRfY21kGAMgASgJIoIBChtCdWlsZENvbmZpZ1N0YXRpY0RvY2tlcmZpbGUSOQoNc3RhdGljX2NvbmZpZxgBIAEoCzIiLm5lb3Nob3djYXNlLnByb3RvYnVmLlN0YXRpY0NvbmZpZxIXCg9kb2NrZXJmaWxlX25hbWUYAiABKAkSDwoHY29udGV4dBgDIAEoCSLpAwoRQXBwbGljYXRpb25Db25maWcSTgoRcnVudGltZV9idWlsZHBhY2sYASABKAsyMS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZENvbmZpZ1J1bnRpbWVCdWlsZHBhY2tIABJCCgtydW50aW1lX2NtZBgCIAEoCzIrLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnUnVudGltZUNtZEgAElAKEnJ1bnRpbWVfZG9ja2VyZmlsZRgDIAEoCzIyLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnUnVudGltZURvY2tlcmZpbGVIABJMChBzdGF0aWNfYnVpbGRwYWNrGAQgASgLMjAubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRDb25maWdTdGF0aWNCdWlsZHBhY2tIABJACgpzdGF0aWNfY21kGAUgASgLMioubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRDb25maWdTdGF0aWNDbWRIABJOChFzdGF0aWNfZG9ja2VyZmlsZRgGIAEoCzIxLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnU3RhdGljRG9ja2VyZmlsZUgAQg4KDGJ1aWxkX2NvbmZpZyK/AQoHV2Vic2l0ZRIKCgJpZBgBIAEoCRIMCgRmcWRuGAIgASgJEhMKC3BhdGhfcHJlZml4GAMgASgJEhQKDHN0cmlwX3ByZWZpeBgEIAEoCBINCgVodHRwcxgFIAEoCBILCgNoMmMYBiABKAgSEQoJaHR0cF9wb3J0GAcgASgFEkAKDmF1dGhlbnRpY2F0aW9uGAggASgOMigubmVvc2hvd2Nhc2UucHJvdG9idWYuQXV0aGVudGljYXRpb25UeXBlIoMBCg9Qb3J0UHVibGljYXRpb24SFQoNaW50ZXJuZXRfcG9ydBgBIAEoBRIYChBhcHBsaWNhdGlvbl9wb3J0GAIgASgFEj8KCHByb3RvY29sGAMgASgOMi0ubmVvc2hvd2Nhc2UucHJvdG9idWYuUG9ydFB1YmxpY2F0aW9uUHJvdG9jb2wiiwYKC0FwcGxpY2F0aW9uEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSFQoNcmVwb3NpdG9yeV9pZBgDIAEoCRIQCghyZWZfbmFtZRgEIAEoCRIOCgZjb21taXQYBSABKAkSNQoLZGVwbG95X3R5cGUYBiABKA4yIC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5EZXBsb3lUeXBlEg8KB3J1bm5pbmcYByABKAgSQwoJY29udGFpbmVyGAggASgOMjAubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb24uQ29udGFpbmVyU3RhdGUSGQoRY29udGFpbmVyX21lc3NhZ2UYCSABKAkSFQoNY3VycmVudF9idWlsZBgKIAEoCRIuCgpjcmVhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI3CgZjb25maWcYDSABKAsyJy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbkNvbmZpZxIvCgh3ZWJzaXRlcxgOIAMoCzIdLm5lb3Nob3djYXNlLnByb3RvYnVmLldlYnNpdGUSQAoRcG9ydF9wdWJsaWNhdGlvbnMYDyADKAsyJS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5Qb3J0UHVibGljYXRpb24SEQoJb3duZXJfaWRzGBAgAygJEkMKE2xhdGVzdF9idWlsZF9zdGF0dXMYESABKA4yIS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZFN0YXR1c0gAiAEBIm4KDkNvbnRhaW5lclN0YXRlEgsKB01JU1NJTkcQABIMCghTVEFSVElORxABEg4KClJFU1RBUlRJTkcQAhILCgdSVU5OSU5HEAMSCgoGRVhJVEVEEAQSCwoHRVJST1JFRBAFEgsKB1VOS05PV04QBkIWChRfbGF0ZXN0X2J1aWxkX3N0YXR1cyJXChFBcHBsaWNhdGlvbkVudlZhchIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRILCgNrZXkYAiABKAkSDQoFdmFsdWUYAyABKAkSDgoGc3lzdGVtGAQgASgIIlAKEkFwcGxpY2F0aW9uRW52VmFycxI6Cgl2YXJpYWJsZXMYASADKAsyJy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbkVudlZhciKtAQoIQXJ0aWZhY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIQCghidWlsZF9pZBgDIAEoCRIMCgRzaXplGAQgASgDEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKCmRlbGV0ZWRfYXQYBiABKAsyIy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5OdWxsVGltZXN0YW1wIjQKD0FydGlmYWN0Q29udGVudBIQCghmaWxlbmFtZRgBIAEoCRIPCgdjb250ZW50GAIgASgMImoKDFJ1bnRpbWVJbWFnZRIKCgJpZBgBIAEoCRIQCghidWlsZF9pZBgCIAEoCRIMCgRzaXplGAMgASgDEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIikKEEF2YWlsYWJsZU1ldHJpY3MSFQoNbWV0cmljc19uYW1lcxgBIAMoCSJMChFBcHBsaWNhdGlvbk1ldHJpYxIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV2YWx1ZRgCIAEoASJOChJBcHBsaWNhdGlvbk1ldHJpY3MSOAoHbWV0cmljcxgBIAMoCzInLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uTWV0cmljIkoKEUFwcGxpY2F0aW9uT3V0cHV0EigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgsKA2xvZxgCIAEoCSJOChJBcHBsaWNhdGlvbk91dHB1dHMSOAoHb3V0cHV0cxgBIAMoCzInLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uT3V0cHV0IuEDCgVCdWlsZBIKCgJpZBgBIAEoCRIWCg5hcHBsaWNhdGlvbl9pZBgCIAEoCRIOCgZjb21taXQYAyABKAkSMQoGc3RhdHVzGAQgASgOMiEubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRTdGF0dXMSLQoJcXVldWVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI3CgpzdGFydGVkX2F0GAYgASgLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuTnVsbFRpbWVzdGFtcBI3Cgp1cGRhdGVkX2F0GAcgASgLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuTnVsbFRpbWVzdGFtcBI4CgtmaW5pc2hlZF9hdBgIIAEoCzIjLm5lb3Nob3djYXNlLnByb3RvYnVmLk51bGxUaW1lc3RhbXASEQoJcmV0cmlhYmxlGAkgASgIEjEKCWFydGlmYWN0cxgKIAMoCzIeLm5lb3Nob3djYXNlLnByb3RvYnVmLkFydGlmYWN0Ej4KDXJ1bnRpbWVfaW1hZ2UYCyABKAsyIi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SdW50aW1lSW1hZ2VIAIgBAUIQCg5fcnVudGltZV9pbWFnZSIXCghCdWlsZExvZxILCgNsb2cYASABKAwiKgoGR2l0UmVmEhAKCHJlZl9uYW1lGAEgASgJEg4KBmNvbW1pdBgCIAEoCSI9ChdHZW5lcmF0ZUtleVBhaXJSZXNwb25zZRIOCgZrZXlfaWQYASABKAkSEgoKcHVibGljX2tleRgCIAEoCSI9ChBHZXRVc2Vyc1Jlc3BvbnNlEikKBXVzZXJzGAEgAygLMhoubmVvc2hvd2Nhc2UucHJvdG9idWYuVXNlciJCChNHZXRVc2VyS2V5c1Jlc3BvbnNlEisKBGtleXMYASADKAsyHS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5Vc2VyS2V5IjgKFENyZWF0ZVVzZXJLZXlSZXF1ZXN0EhIKCnB1YmxpY19rZXkYASABKAkSDAoEbmFtZRgCIAEoCSImChREZWxldGVVc2VyS2V5UmVxdWVzdBIOCgZrZXlfaWQYASABKAkiPwoZQ3JlYXRlUmVwb3NpdG9yeUF1dGhCYXNpYxIQCgh1c2VybmFtZRgBIAEoCRIQCghwYXNzd29yZBgCIAEoCSIpChdDcmVhdGVSZXBvc2l0b3J5QXV0aFNTSBIOCgZrZXlfaWQYASABKAkixgEKFENyZWF0ZVJlcG9zaXRvcnlBdXRoEiYKBG5vbmUYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABJACgViYXNpYxgCIAEoCzIvLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVJlcG9zaXRvcnlBdXRoQmFzaWNIABI8CgNzc2gYAyABKAsyLS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5DcmVhdGVSZXBvc2l0b3J5QXV0aFNTSEgAQgYKBGF1dGgibgoXQ3JlYXRlUmVwb3NpdG9yeVJlcXVlc3QSDAoEbmFtZRgBIAEoCRILCgN1cmwYAiABKAkSOAoEYXV0aBgDIAEoCzIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVJlcG9zaXRvcnlBdXRoIpIBChZHZXRSZXBvc2l0b3JpZXNSZXF1ZXN0EkEKBXNjb3BlGAEgASgOMjIubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0UmVwb3NpdG9yaWVzUmVxdWVzdC5TY29wZSI1CgVTY29wZRIICgRNSU5FEAASDQoJQ1JFQVRBQkxFEAESCgoGUFVCTElDEAISBwoDQUxMEAMiqAIKF1VwZGF0ZVJlcG9zaXRvcnlSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIQCgN1cmwYAyABKAlIAYgBARI9CgRhdXRoGAQgASgLMioubmVvc2hvd2Nhc2UucHJvdG9idWYuQ3JlYXRlUmVwb3NpdG9yeUF1dGhIAogBARJSCglvd25lcl9pZHMYBSABKAsyOi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5VcGRhdGVSZXBvc2l0b3J5UmVxdWVzdC5VcGRhdGVPd25lcnNIA4gBARohCgxVcGRhdGVPd25lcnMSEQoJb3duZXJfaWRzGAEgAygJQgcKBV9uYW1lQgYKBF91cmxCBwoFX2F1dGhCDAoKX293bmVyX2lkcyIsChNSZXBvc2l0b3J5SWRSZXF1ZXN0EhUKDXJlcG9zaXRvcnlfaWQYASABKAkiLQobR2V0UmVwb3NpdG9yeUNvbW1pdHNSZXF1ZXN0Eg4KBmhhc2hlcxgBIAMoCSJTChxHZXRSZXBvc2l0b3J5Q29tbWl0c1Jlc3BvbnNlEjMKB2NvbW1pdHMYASADKAsyIi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5TaW1wbGVDb21taXQiwAEKFENyZWF0ZVdlYnNpdGVSZXF1ZXN0EgwKBGZxZG4YASABKAkSEwoLcGF0aF9wcmVmaXgYAiABKAkSFAoMc3RyaXBfcHJlZml4GAMgASgIEg0KBWh0dHBzGAQgASgIEgsKA2gyYxgFIAEoCBIRCglodHRwX3BvcnQYBiABKAUSQAoOYXV0aGVudGljYXRpb24YByABKA4yKC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BdXRoZW50aWNhdGlvblR5cGUiIgoURGVsZXRlV2Vic2l0ZVJlcXVlc3QSCgoCaWQYASABKAkiowIKGENyZWF0ZUFwcGxpY2F0aW9uUmVxdWVzdBIMCgRuYW1lGAEgASgJEhUKDXJlcG9zaXRvcnlfaWQYAiABKAkSEAoIcmVmX25hbWUYAyABKAkSNwoGY29uZmlnGAQgASgLMicubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25Db25maWcSPAoId2Vic2l0ZXMYBSADKAsyKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5DcmVhdGVXZWJzaXRlUmVxdWVzdBJAChFwb3J0X3B1YmxpY2F0aW9ucxgGIAMoCzIlLm5lb3Nob3djYXNlLnByb3RvYnVmLlBvcnRQdWJsaWNhdGlvbhIXCg9zdGFydF9vbl9jcmVhdGUYByABKAgitQEKFkdldEFwcGxpY2F0aW9uc1JlcXVlc3QSQQoFc2NvcGUYASABKA4yMi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRBcHBsaWNhdGlvbnNSZXF1ZXN0LlNjb3BlEhoKDXJlcG9zaXRvcnlfaWQYAiABKAlIAIgBASIqCgVTY29wZRIICgRNSU5FEAASBwoDQUxMEAESDgoKUkVQT1NJVE9SWRACQhAKDl9yZXBvc2l0b3J5X2lkItkFChhVcGRhdGVBcHBsaWNhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhoKDXJlcG9zaXRvcnlfaWQYAyABKAlIAYgBARIVCghyZWZfbmFtZRgEIAEoCUgCiAEBEjwKBmNvbmZpZxgFIAEoCzInLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uQ29uZmlnSAOIAQESVAoId2Vic2l0ZXMYBiABKAsyPS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5VcGRhdGVBcHBsaWNhdGlvblJlcXVlc3QuVXBkYXRlV2Vic2l0ZXNIBIgBARJaChFwb3J0X3B1YmxpY2F0aW9ucxgHIAEoCzI6Lm5lb3Nob3djYXNlLnByb3RvYnVmLlVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdC5VcGRhdGVQb3J0c0gFiAEBElMKCW93bmVyX2lkcxgIIAEoCzI7Lm5lb3Nob3djYXNlLnByb3RvYnVmLlVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdC5VcGRhdGVPd25lcnNIBogBARpOCg5VcGRhdGVXZWJzaXRlcxI8Cgh3ZWJzaXRlcxgBIAMoCzIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVdlYnNpdGVSZXF1ZXN0Gk8KC1VwZGF0ZVBvcnRzEkAKEXBvcnRfcHVibGljYXRpb25zGAEgAygLMiUubmVvc2hvd2Nhc2UucHJvdG9idWYuUG9ydFB1YmxpY2F0aW9uGiEKDFVwZGF0ZU93bmVycxIRCglvd25lcl9pZHMYASADKAlCBwoFX25hbWVCEAoOX3JlcG9zaXRvcnlfaWRCCwoJX3JlZl9uYW1lQgkKB19jb25maWdCCwoJX3dlYnNpdGVzQhQKEl9wb3J0X3B1YmxpY2F0aW9uc0IMCgpfb3duZXJfaWRzIlEKF0dldFJlcG9zaXRvcmllc1Jlc3BvbnNlEjYKDHJlcG9zaXRvcmllcxgBIAMoCzIgLm5lb3Nob3djYXNlLnByb3RvYnVmLlJlcG9zaXRvcnkiUgoXR2V0QXBwbGljYXRpb25zUmVzcG9uc2USNwoMYXBwbGljYXRpb25zGAEgAygLMiEubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb24iIgoUQXBwbGljYXRpb25JZFJlcXVlc3QSCgoCaWQYASABKAkiMgoTR2V0QWxsQnVpbGRzUmVxdWVzdBIMCgRwYWdlGAEgASgFEg0KBWxpbWl0GAIgASgFIiIKDkJ1aWxkSWRSZXF1ZXN0EhAKCGJ1aWxkX2lkGAEgASgJIigKEUFydGlmYWN0SWRSZXF1ZXN0EhMKC2FydGlmYWN0X2lkGAEgASgJIkAKEUdldEJ1aWxkc1Jlc3BvbnNlEisKBmJ1aWxkcxgBIAMoCzIbLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkIlEKG1NldEFwcGxpY2F0aW9uRW52VmFyUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRILCgNrZXkYAiABKAkSDQoFdmFsdWUYAyABKAkiRQoeRGVsZXRlQXBwbGljYXRpb25FbnZWYXJSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEgsKA2tleRgCIAEoCSKPAQocR2V0QXBwbGljYXRpb25NZXRyaWNzUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRIUCgxtZXRyaWNzX25hbWUYAiABKAkSKgoGYmVmb3JlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1saW1pdF9zZWNvbmRzGAQgASgDImUKEEdldE91dHB1dFJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkSKgoGYmVmb3JlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVsaW1pdBgDIAEoBSJbChZHZXRPdXRwdXRTdHJlYW1SZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEikKBWJlZ2luGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJBChdSZXRyeUNvbW1pdEJ1aWxkUmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRIOCgZjb21taXQYAiABKAkiRwoZR2V0UmVwb3NpdG9yeVJlZnNSZXNwb25zZRIqCgRyZWZzGAEgAygLMhwubmVvc2hvd2Nhc2UucHJvdG9idWYuR2l0UmVmKiUKCkRlcGxveVR5cGUSCwoHUlVOVElNRRAAEgoKBlNUQVRJQxABKjEKEkF1dGhlbnRpY2F0aW9uVHlwZRIHCgNPRkYQABIICgRTT0ZUEAESCAoESEFSRBACKisKF1BvcnRQdWJsaWNhdGlvblByb3RvY29sEgcKA1RDUBAAEgcKA1VEUBABKl4KC0J1aWxkU3RhdHVzEgoKBlFVRVVFRBAAEgwKCEJVSUxESU5HEAESDQoJU1VDQ0VFREVEEAISCgoGRkFJTEVEEAMSDQoJQ0FOQ0VMTEVEEAQSCwoHU0tJUFBFRBAFMu4bCgpBUElTZXJ2aWNlEk4KDUdldFN5c3RlbUluZm8SFi5nb29nbGUucHJvdG9idWYuRW1wdHkaIC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5TeXN0ZW1JbmZvIgOQAgESWAoPR2VuZXJhdGVLZXlQYWlyEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Gi0ubmVvc2hvd2Nhc2UucHJvdG9idWYuR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2USQAoFR2V0TWUSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaGi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5Vc2VyIgOQAgESTwoIR2V0VXNlcnMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaJi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRVc2Vyc1Jlc3BvbnNlIgOQAgESWgoNQ3JlYXRlVXNlcktleRIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVVzZXJLZXlSZXF1ZXN0Gh0ubmVvc2hvd2Nhc2UucHJvdG9idWYuVXNlcktleRJVCgtHZXRVc2VyS2V5cxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRopLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldFVzZXJLZXlzUmVzcG9uc2UiA5ACARJTCg1EZWxldGVVc2VyS2V5EioubmVvc2hvd2Nhc2UucHJvdG9idWYuRGVsZXRlVXNlcktleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSYwoQQ3JlYXRlUmVwb3NpdG9yeRItLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVJlcG9zaXRvcnlSZXF1ZXN0GiAubmVvc2hvd2Nhc2UucHJvdG9idWYuUmVwb3NpdG9yeRJzCg9HZXRSZXBvc2l0b3JpZXMSLC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRSZXBvc2l0b3JpZXNSZXF1ZXN0Gi0ubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0UmVwb3NpdG9yaWVzUmVzcG9uc2UiA5ACARKCAQoUR2V0UmVwb3NpdG9yeUNvbW1pdHMSMS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRSZXBvc2l0b3J5Q29tbWl0c1JlcXVlc3QaMi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRSZXBvc2l0b3J5Q29tbWl0c1Jlc3BvbnNlIgOQAgESYQoNR2V0UmVwb3NpdG9yeRIpLm5lb3Nob3djYXNlLnByb3RvYnVmLlJlcG9zaXRvcnlJZFJlcXVlc3QaIC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SZXBvc2l0b3J5IgOQAgESdAoRR2V0UmVwb3NpdG9yeVJlZnMSKS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SZXBvc2l0b3J5SWRSZXF1ZXN0Gi8ubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0UmVwb3NpdG9yeVJlZnNSZXNwb25zZSIDkAIBElkKEFVwZGF0ZVJlcG9zaXRvcnkSLS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5VcGRhdGVSZXBvc2l0b3J5UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJWChFSZWZyZXNoUmVwb3NpdG9yeRIpLm5lb3Nob3djYXNlLnByb3RvYnVmLlJlcG9zaXRvcnlJZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSVQoQRGVsZXRlUmVwb3NpdG9yeRIpLm5lb3Nob3djYXNlLnByb3RvYnVmLlJlcG9zaXRvcnlJZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZgoRQ3JlYXRlQXBwbGljYXRpb24SLi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5DcmVhdGVBcHBsaWNhdGlvblJlcXVlc3QaIS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbhJzCg9HZXRBcHBsaWNhdGlvbnMSLC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRBcHBsaWNhdGlvbnNSZXF1ZXN0Gi0ubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0QXBwbGljYXRpb25zUmVzcG9uc2UiA5ACARJkCg5HZXRBcHBsaWNhdGlvbhIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uSWRSZXF1ZXN0GiEubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb24iA5ACARJbChFVcGRhdGVBcHBsaWNhdGlvbhIuLm5lb3Nob3djYXNlLnByb3RvYnVmLlVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJXChFEZWxldGVBcHBsaWNhdGlvbhIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uSWRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EloKE0dldEF2YWlsYWJsZU1ldHJpY3MSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaJi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BdmFpbGFibGVNZXRyaWNzIgOQAgESegoVR2V0QXBwbGljYXRpb25NZXRyaWNzEjIubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0QXBwbGljYXRpb25NZXRyaWNzUmVxdWVzdBooLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uTWV0cmljcyIDkAIBEmIKCUdldE91dHB1dBImLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldE91dHB1dFJlcXVlc3QaKC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbk91dHB1dHMiA5ACARJqCg9HZXRPdXRwdXRTdHJlYW0SLC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRPdXRwdXRTdHJlYW1SZXF1ZXN0GicubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25PdXRwdXQwARJnCgpHZXRFbnZWYXJzEioubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25JZFJlcXVlc3QaKC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbkVudlZhcnMiA5ACARJWCglTZXRFbnZWYXISMS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5TZXRBcHBsaWNhdGlvbkVudlZhclJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSXAoMRGVsZXRlRW52VmFyEjQubmVvc2hvd2Nhc2UucHJvdG9idWYuRGVsZXRlQXBwbGljYXRpb25FbnZWYXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElYKEFN0YXJ0QXBwbGljYXRpb24SKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbklkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJVCg9TdG9wQXBwbGljYXRpb24SKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbklkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJnCgxHZXRBbGxCdWlsZHMSKS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRBbGxCdWlsZHNSZXF1ZXN0GicubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0QnVpbGRzUmVzcG9uc2UiA5ACARJlCglHZXRCdWlsZHMSKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbklkUmVxdWVzdBonLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldEJ1aWxkc1Jlc3BvbnNlIgOQAgESUgoIR2V0QnVpbGQSJC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZElkUmVxdWVzdBobLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkIgOQAgESWQoQUmV0cnlDb21taXRCdWlsZBItLm5lb3Nob3djYXNlLnByb3RvYnVmLlJldHJ5Q29tbWl0QnVpbGRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EksKC0NhbmNlbEJ1aWxkEiQubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRJZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWAoLR2V0QnVpbGRMb2cSJC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZElkUmVxdWVzdBoeLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkTG9nIgOQAgESWwoRR2V0QnVpbGRMb2dTdHJlYW0SJC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZElkUmVxdWVzdBoeLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkTG9nMAESZwoQR2V0QnVpbGRBcnRpZmFjdBInLm5lb3Nob3djYXNlLnByb3RvYnVmLkFydGlmYWN0SWRSZXF1ZXN0GiUubmVvc2hvd2Nhc2UucHJvdG9idWYuQXJ0aWZhY3RDb250ZW50IgOQAgFiBnByb3RvMw", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_neoshowcase_protobuf_null]); + fileDesc("CiJuZW9zaG93Y2FzZS9wcm90b2J1Zi9nYXRld2F5LnByb3RvEhRuZW9zaG93Y2FzZS5wcm90b2J1ZiIlCgdTU0hJbmZvEgwKBGhvc3QYASABKAkSDAoEcG9ydBgCIAEoBSJpCg9BdmFpbGFibGVEb21haW4SDgoGZG9tYWluGAEgASgJEhcKD2V4Y2x1ZGVfZG9tYWlucxgCIAMoCRIWCg5hdXRoX2F2YWlsYWJsZRgDIAEoCBIVCg1hbHJlYWR5X2JvdW5kGAQgASgIInYKDUF2YWlsYWJsZVBvcnQSEgoKc3RhcnRfcG9ydBgBIAEoBRIQCghlbmRfcG9ydBgCIAEoBRI/Cghwcm90b2NvbBgDIAEoDjItLm5lb3Nob3djYXNlLnByb3RvYnVmLlBvcnRQdWJsaWNhdGlvblByb3RvY29sIisKDkFkZGl0aW9uYWxMaW5rEgwKBG5hbWUYASABKAkSCwoDdXJsGAIgASgJIpsCCgpTeXN0ZW1JbmZvEhIKCnB1YmxpY19rZXkYASABKAkSKgoDc3NoGAIgASgLMh0ubmVvc2hvd2Nhc2UucHJvdG9idWYuU1NISW5mbxI2Cgdkb21haW5zGAMgAygLMiUubmVvc2hvd2Nhc2UucHJvdG9idWYuQXZhaWxhYmxlRG9tYWluEjIKBXBvcnRzGAQgAygLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuQXZhaWxhYmxlUG9ydBI+ChBhZGRpdGlvbmFsX2xpbmtzGAUgAygLMiQubmVvc2hvd2Nhc2UucHJvdG9idWYuQWRkaXRpb25hbExpbmsSDwoHdmVyc2lvbhgGIAEoCRIQCghyZXZpc2lvbhgHIAEoCSJDCgRVc2VyEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWRtaW4YAyABKAgSEgoKYXZhdGFyX3VybBgEIAEoCSJ4CgdVc2VyS2V5EgoKAmlkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSEgoKcHVibGljX2tleRgDIAEoCRIMCgRuYW1lGAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsYBCgpSZXBvc2l0b3J5EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSCwoDdXJsGAMgASgJEhAKCGh0bWxfdXJsGAQgASgJEkAKC2F1dGhfbWV0aG9kGAUgASgOMisubmVvc2hvd2Nhc2UucHJvdG9idWYuUmVwb3NpdG9yeS5BdXRoTWV0aG9kEhEKCW93bmVyX2lkcxgGIAMoCSIqCgpBdXRoTWV0aG9kEggKBE5PTkUQABIJCgVCQVNJQxABEgcKA1NTSBACInMKDFNpbXBsZUNvbW1pdBIMCgRoYXNoGAEgASgJEhMKC2F1dGhvcl9uYW1lGAIgASgJEi8KC2NvbW1pdF9kYXRlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdtZXNzYWdlGAQgASgJIrIBChJBdXRvU2h1dGRvd25Db25maWcSDwoHZW5hYmxlZBgBIAEoCBJJCgdzdGFydHVwGAIgASgOMjgubmVvc2hvd2Nhc2UucHJvdG9idWYuQXV0b1NodXRkb3duQ29uZmlnLlN0YXJ0dXBCZWhhdmlvciJACg9TdGFydHVwQmVoYXZpb3ISDQoJVU5ERUZJTkVEEAASEAoMTE9BRElOR19QQUdFEAESDAoIQkxPQ0tJTkcQAiKfAQoNUnVudGltZUNvbmZpZxITCgt1c2VfbWFyaWFkYhgBIAEoCBITCgt1c2VfbW9uZ29kYhgCIAEoCBISCgplbnRyeXBvaW50GAMgASgJEg8KB2NvbW1hbmQYBCABKAkSPwoNYXV0b19zaHV0ZG93bhgFIAEoCzIoLm5lb3Nob3djYXNlLnByb3RvYnVmLkF1dG9TaHV0ZG93bkNvbmZpZyJrChtCdWlsZENvbmZpZ1J1bnRpbWVCdWlsZHBhY2sSOwoOcnVudGltZV9jb25maWcYASABKAsyIy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SdW50aW1lQ29uZmlnEg8KB2NvbnRleHQYAiABKAkiewoVQnVpbGRDb25maWdSdW50aW1lQ21kEjsKDnJ1bnRpbWVfY29uZmlnGAEgASgLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuUnVudGltZUNvbmZpZxISCgpiYXNlX2ltYWdlGAIgASgJEhEKCWJ1aWxkX2NtZBgDIAEoCSKFAQocQnVpbGRDb25maWdSdW50aW1lRG9ja2VyZmlsZRI7Cg5ydW50aW1lX2NvbmZpZxgBIAEoCzIjLm5lb3Nob3djYXNlLnByb3RvYnVmLlJ1bnRpbWVDb25maWcSFwoPZG9ja2VyZmlsZV9uYW1lGAIgASgJEg8KB2NvbnRleHQYAyABKAkiMgoMU3RhdGljQ29uZmlnEhUKDWFydGlmYWN0X3BhdGgYASABKAkSCwoDc3BhGAIgASgIIicKDkZ1bmN0aW9uQ29uZmlnEhUKDWFydGlmYWN0X3BhdGgYASABKAkiaAoaQnVpbGRDb25maWdTdGF0aWNCdWlsZHBhY2sSOQoNc3RhdGljX2NvbmZpZxgBIAEoCzIiLm5lb3Nob3djYXNlLnByb3RvYnVmLlN0YXRpY0NvbmZpZxIPCgdjb250ZXh0GAIgASgJIngKFEJ1aWxkQ29uZmlnU3RhdGljQ21kEjkKDXN0YXRpY19jb25maWcYASABKAsyIi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5TdGF0aWNDb25maWcSEgoKYmFzZV9pbWFnZRgCIAEoCRIRCglidWlsZF9jbWQYAyABKAkiggEKG0J1aWxkQ29uZmlnU3RhdGljRG9ja2VyZmlsZRI5Cg1zdGF0aWNfY29uZmlnGAEgASgLMiIubmVvc2hvd2Nhc2UucHJvdG9idWYuU3RhdGljQ29uZmlnEhcKD2RvY2tlcmZpbGVfbmFtZRgCIAEoCRIPCgdjb250ZXh0GAMgASgJIm4KHEJ1aWxkQ29uZmlnRnVuY3Rpb25CdWlsZHBhY2sSPQoPZnVuY3Rpb25fY29uZmlnGAEgASgLMiQubmVvc2hvd2Nhc2UucHJvdG9idWYuRnVuY3Rpb25Db25maWcSDwoHY29udGV4dBgCIAEoCSJ+ChZCdWlsZENvbmZpZ0Z1bmN0aW9uQ21kEj0KD2Z1bmN0aW9uX2NvbmZpZxgBIAEoCzIkLm5lb3Nob3djYXNlLnByb3RvYnVmLkZ1bmN0aW9uQ29uZmlnEhIKCmJhc2VfaW1hZ2UYAiABKAkSEQoJYnVpbGRfY21kGAMgASgJIogBCh1CdWlsZENvbmZpZ0Z1bmN0aW9uRG9ja2VyZmlsZRI9Cg9mdW5jdGlvbl9jb25maWcYASABKAsyJC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5GdW5jdGlvbkNvbmZpZxIXCg9kb2NrZXJmaWxlX25hbWUYAiABKAkSDwoHY29udGV4dBgDIAEoCSLVBQoRQXBwbGljYXRpb25Db25maWcSTgoRcnVudGltZV9idWlsZHBhY2sYASABKAsyMS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZENvbmZpZ1J1bnRpbWVCdWlsZHBhY2tIABJCCgtydW50aW1lX2NtZBgCIAEoCzIrLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnUnVudGltZUNtZEgAElAKEnJ1bnRpbWVfZG9ja2VyZmlsZRgDIAEoCzIyLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnUnVudGltZURvY2tlcmZpbGVIABJMChBzdGF0aWNfYnVpbGRwYWNrGAQgASgLMjAubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRDb25maWdTdGF0aWNCdWlsZHBhY2tIABJACgpzdGF0aWNfY21kGAUgASgLMioubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRDb25maWdTdGF0aWNDbWRIABJOChFzdGF0aWNfZG9ja2VyZmlsZRgGIAEoCzIxLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnU3RhdGljRG9ja2VyZmlsZUgAElAKEmZ1bmN0aW9uX2J1aWxkcGFjaxgHIAEoCzIyLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnRnVuY3Rpb25CdWlsZHBhY2tIABJECgxmdW5jdGlvbl9jbWQYCCABKAsyLC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZENvbmZpZ0Z1bmN0aW9uQ21kSAASUgoTZnVuY3Rpb25fZG9ja2VyZmlsZRgJIAEoCzIzLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkQ29uZmlnRnVuY3Rpb25Eb2NrZXJmaWxlSABCDgoMYnVpbGRfY29uZmlnIr8BCgdXZWJzaXRlEgoKAmlkGAEgASgJEgwKBGZxZG4YAiABKAkSEwoLcGF0aF9wcmVmaXgYAyABKAkSFAoMc3RyaXBfcHJlZml4GAQgASgIEg0KBWh0dHBzGAUgASgIEgsKA2gyYxgGIAEoCBIRCglodHRwX3BvcnQYByABKAUSQAoOYXV0aGVudGljYXRpb24YCCABKA4yKC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BdXRoZW50aWNhdGlvblR5cGUigwEKD1BvcnRQdWJsaWNhdGlvbhIVCg1pbnRlcm5ldF9wb3J0GAEgASgFEhgKEGFwcGxpY2F0aW9uX3BvcnQYAiABKAUSPwoIcHJvdG9jb2wYAyABKA4yLS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5Qb3J0UHVibGljYXRpb25Qcm90b2NvbCKLBgoLQXBwbGljYXRpb24SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1yZXBvc2l0b3J5X2lkGAMgASgJEhAKCHJlZl9uYW1lGAQgASgJEg4KBmNvbW1pdBgFIAEoCRI1CgtkZXBsb3lfdHlwZRgGIAEoDjIgLm5lb3Nob3djYXNlLnByb3RvYnVmLkRlcGxveVR5cGUSDwoHcnVubmluZxgHIAEoCBJDCgljb250YWluZXIYCCABKA4yMC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbi5Db250YWluZXJTdGF0ZRIZChFjb250YWluZXJfbWVzc2FnZRgJIAEoCRIVCg1jdXJyZW50X2J1aWxkGAogASgJEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKBmNvbmZpZxgNIAEoCzInLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uQ29uZmlnEi8KCHdlYnNpdGVzGA4gAygLMh0ubmVvc2hvd2Nhc2UucHJvdG9idWYuV2Vic2l0ZRJAChFwb3J0X3B1YmxpY2F0aW9ucxgPIAMoCzIlLm5lb3Nob3djYXNlLnByb3RvYnVmLlBvcnRQdWJsaWNhdGlvbhIRCglvd25lcl9pZHMYECADKAkSQwoTbGF0ZXN0X2J1aWxkX3N0YXR1cxgRIAEoDjIhLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkU3RhdHVzSACIAQEibgoOQ29udGFpbmVyU3RhdGUSCwoHTUlTU0lORxAAEgwKCFNUQVJUSU5HEAESDgoKUkVTVEFSVElORxACEgsKB1JVTk5JTkcQAxIKCgZFWElURUQQBBILCgdFUlJPUkVEEAUSCwoHVU5LTk9XThAGQhYKFF9sYXRlc3RfYnVpbGRfc3RhdHVzIlcKEUFwcGxpY2F0aW9uRW52VmFyEhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgV2YWx1ZRgDIAEoCRIOCgZzeXN0ZW0YBCABKAgiUAoSQXBwbGljYXRpb25FbnZWYXJzEjoKCXZhcmlhYmxlcxgBIAMoCzInLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uRW52VmFyIq0BCghBcnRpZmFjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCGJ1aWxkX2lkGAMgASgJEgwKBHNpemUYBCABKAMSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNwoKZGVsZXRlZF9hdBgGIAEoCzIjLm5lb3Nob3djYXNlLnByb3RvYnVmLk51bGxUaW1lc3RhbXAiNAoPQXJ0aWZhY3RDb250ZW50EhAKCGZpbGVuYW1lGAEgASgJEg8KB2NvbnRlbnQYAiABKAwiagoMUnVudGltZUltYWdlEgoKAmlkGAEgASgJEhAKCGJ1aWxkX2lkGAIgASgJEgwKBHNpemUYAyABKAMSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiKQoQQXZhaWxhYmxlTWV0cmljcxIVCg1tZXRyaWNzX25hbWVzGAEgAygJIkwKEUFwcGxpY2F0aW9uTWV0cmljEigKBHRpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXZhbHVlGAIgASgBIk4KEkFwcGxpY2F0aW9uTWV0cmljcxI4CgdtZXRyaWNzGAEgAygLMicubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25NZXRyaWMiSgoRQXBwbGljYXRpb25PdXRwdXQSKAoEdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASCwoDbG9nGAIgASgJIk4KEkFwcGxpY2F0aW9uT3V0cHV0cxI4CgdvdXRwdXRzGAEgAygLMicubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25PdXRwdXQi4QMKBUJ1aWxkEgoKAmlkGAEgASgJEhYKDmFwcGxpY2F0aW9uX2lkGAIgASgJEg4KBmNvbW1pdBgDIAEoCRIxCgZzdGF0dXMYBCABKA4yIS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZFN0YXR1cxItCglxdWV1ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKCnN0YXJ0ZWRfYXQYBiABKAsyIy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5OdWxsVGltZXN0YW1wEjcKCnVwZGF0ZWRfYXQYByABKAsyIy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5OdWxsVGltZXN0YW1wEjgKC2ZpbmlzaGVkX2F0GAggASgLMiMubmVvc2hvd2Nhc2UucHJvdG9idWYuTnVsbFRpbWVzdGFtcBIRCglyZXRyaWFibGUYCSABKAgSMQoJYXJ0aWZhY3RzGAogAygLMh4ubmVvc2hvd2Nhc2UucHJvdG9idWYuQXJ0aWZhY3QSPgoNcnVudGltZV9pbWFnZRgLIAEoCzIiLm5lb3Nob3djYXNlLnByb3RvYnVmLlJ1bnRpbWVJbWFnZUgAiAEBQhAKDl9ydW50aW1lX2ltYWdlIhcKCEJ1aWxkTG9nEgsKA2xvZxgBIAEoDCIqCgZHaXRSZWYSEAoIcmVmX25hbWUYASABKAkSDgoGY29tbWl0GAIgASgJIj0KF0dlbmVyYXRlS2V5UGFpclJlc3BvbnNlEg4KBmtleV9pZBgBIAEoCRISCgpwdWJsaWNfa2V5GAIgASgJIj0KEEdldFVzZXJzUmVzcG9uc2USKQoFdXNlcnMYASADKAsyGi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5Vc2VyIkIKE0dldFVzZXJLZXlzUmVzcG9uc2USKwoEa2V5cxgBIAMoCzIdLm5lb3Nob3djYXNlLnByb3RvYnVmLlVzZXJLZXkiOAoUQ3JlYXRlVXNlcktleVJlcXVlc3QSEgoKcHVibGljX2tleRgBIAEoCRIMCgRuYW1lGAIgASgJIiYKFERlbGV0ZVVzZXJLZXlSZXF1ZXN0Eg4KBmtleV9pZBgBIAEoCSI/ChlDcmVhdGVSZXBvc2l0b3J5QXV0aEJhc2ljEhAKCHVzZXJuYW1lGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJIikKF0NyZWF0ZVJlcG9zaXRvcnlBdXRoU1NIEg4KBmtleV9pZBgBIAEoCSLGAQoUQ3JlYXRlUmVwb3NpdG9yeUF1dGgSJgoEbm9uZRgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEkAKBWJhc2ljGAIgASgLMi8ubmVvc2hvd2Nhc2UucHJvdG9idWYuQ3JlYXRlUmVwb3NpdG9yeUF1dGhCYXNpY0gAEjwKA3NzaBgDIAEoCzItLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVJlcG9zaXRvcnlBdXRoU1NISABCBgoEYXV0aCJuChdDcmVhdGVSZXBvc2l0b3J5UmVxdWVzdBIMCgRuYW1lGAEgASgJEgsKA3VybBgCIAEoCRI4CgRhdXRoGAMgASgLMioubmVvc2hvd2Nhc2UucHJvdG9idWYuQ3JlYXRlUmVwb3NpdG9yeUF1dGgikgEKFkdldFJlcG9zaXRvcmllc1JlcXVlc3QSQQoFc2NvcGUYASABKA4yMi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRSZXBvc2l0b3JpZXNSZXF1ZXN0LlNjb3BlIjUKBVNjb3BlEggKBE1JTkUQABINCglDUkVBVEFCTEUQARIKCgZQVUJMSUMQAhIHCgNBTEwQAyKoAgoXVXBkYXRlUmVwb3NpdG9yeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhAKA3VybBgDIAEoCUgBiAEBEj0KBGF1dGgYBCABKAsyKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5DcmVhdGVSZXBvc2l0b3J5QXV0aEgCiAEBElIKCW93bmVyX2lkcxgFIAEoCzI6Lm5lb3Nob3djYXNlLnByb3RvYnVmLlVwZGF0ZVJlcG9zaXRvcnlSZXF1ZXN0LlVwZGF0ZU93bmVyc0gDiAEBGiEKDFVwZGF0ZU93bmVycxIRCglvd25lcl9pZHMYASADKAlCBwoFX25hbWVCBgoEX3VybEIHCgVfYXV0aEIMCgpfb3duZXJfaWRzIiwKE1JlcG9zaXRvcnlJZFJlcXVlc3QSFQoNcmVwb3NpdG9yeV9pZBgBIAEoCSItChtHZXRSZXBvc2l0b3J5Q29tbWl0c1JlcXVlc3QSDgoGaGFzaGVzGAEgAygJIlMKHEdldFJlcG9zaXRvcnlDb21taXRzUmVzcG9uc2USMwoHY29tbWl0cxgBIAMoCzIiLm5lb3Nob3djYXNlLnByb3RvYnVmLlNpbXBsZUNvbW1pdCLAAQoUQ3JlYXRlV2Vic2l0ZVJlcXVlc3QSDAoEZnFkbhgBIAEoCRITCgtwYXRoX3ByZWZpeBgCIAEoCRIUCgxzdHJpcF9wcmVmaXgYAyABKAgSDQoFaHR0cHMYBCABKAgSCwoDaDJjGAUgASgIEhEKCWh0dHBfcG9ydBgGIAEoBRJACg5hdXRoZW50aWNhdGlvbhgHIAEoDjIoLm5lb3Nob3djYXNlLnByb3RvYnVmLkF1dGhlbnRpY2F0aW9uVHlwZSIiChREZWxldGVXZWJzaXRlUmVxdWVzdBIKCgJpZBgBIAEoCSKjAgoYQ3JlYXRlQXBwbGljYXRpb25SZXF1ZXN0EgwKBG5hbWUYASABKAkSFQoNcmVwb3NpdG9yeV9pZBgCIAEoCRIQCghyZWZfbmFtZRgDIAEoCRI3CgZjb25maWcYBCABKAsyJy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbkNvbmZpZxI8Cgh3ZWJzaXRlcxgFIAMoCzIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkNyZWF0ZVdlYnNpdGVSZXF1ZXN0EkAKEXBvcnRfcHVibGljYXRpb25zGAYgAygLMiUubmVvc2hvd2Nhc2UucHJvdG9idWYuUG9ydFB1YmxpY2F0aW9uEhcKD3N0YXJ0X29uX2NyZWF0ZRgHIAEoCCK1AQoWR2V0QXBwbGljYXRpb25zUmVxdWVzdBJBCgVzY29wZRgBIAEoDjIyLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldEFwcGxpY2F0aW9uc1JlcXVlc3QuU2NvcGUSGgoNcmVwb3NpdG9yeV9pZBgCIAEoCUgAiAEBIioKBVNjb3BlEggKBE1JTkUQABIHCgNBTEwQARIOCgpSRVBPU0lUT1JZEAJCEAoOX3JlcG9zaXRvcnlfaWQi2QUKGFVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGgoNcmVwb3NpdG9yeV9pZBgDIAEoCUgBiAEBEhUKCHJlZl9uYW1lGAQgASgJSAKIAQESPAoGY29uZmlnGAUgASgLMicubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25Db25maWdIA4gBARJUCgh3ZWJzaXRlcxgGIAEoCzI9Lm5lb3Nob3djYXNlLnByb3RvYnVmLlVwZGF0ZUFwcGxpY2F0aW9uUmVxdWVzdC5VcGRhdGVXZWJzaXRlc0gEiAEBEloKEXBvcnRfcHVibGljYXRpb25zGAcgASgLMjoubmVvc2hvd2Nhc2UucHJvdG9idWYuVXBkYXRlQXBwbGljYXRpb25SZXF1ZXN0LlVwZGF0ZVBvcnRzSAWIAQESUwoJb3duZXJfaWRzGAggASgLMjsubmVvc2hvd2Nhc2UucHJvdG9idWYuVXBkYXRlQXBwbGljYXRpb25SZXF1ZXN0LlVwZGF0ZU93bmVyc0gGiAEBGk4KDlVwZGF0ZVdlYnNpdGVzEjwKCHdlYnNpdGVzGAEgAygLMioubmVvc2hvd2Nhc2UucHJvdG9idWYuQ3JlYXRlV2Vic2l0ZVJlcXVlc3QaTwoLVXBkYXRlUG9ydHMSQAoRcG9ydF9wdWJsaWNhdGlvbnMYASADKAsyJS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5Qb3J0UHVibGljYXRpb24aIQoMVXBkYXRlT3duZXJzEhEKCW93bmVyX2lkcxgBIAMoCUIHCgVfbmFtZUIQCg5fcmVwb3NpdG9yeV9pZEILCglfcmVmX25hbWVCCQoHX2NvbmZpZ0ILCglfd2Vic2l0ZXNCFAoSX3BvcnRfcHVibGljYXRpb25zQgwKCl9vd25lcl9pZHMiUQoXR2V0UmVwb3NpdG9yaWVzUmVzcG9uc2USNgoMcmVwb3NpdG9yaWVzGAEgAygLMiAubmVvc2hvd2Nhc2UucHJvdG9idWYuUmVwb3NpdG9yeSJSChdHZXRBcHBsaWNhdGlvbnNSZXNwb25zZRI3CgxhcHBsaWNhdGlvbnMYASADKAsyIS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbiIiChRBcHBsaWNhdGlvbklkUmVxdWVzdBIKCgJpZBgBIAEoCSIyChNHZXRBbGxCdWlsZHNSZXF1ZXN0EgwKBHBhZ2UYASABKAUSDQoFbGltaXQYAiABKAUiIgoOQnVpbGRJZFJlcXVlc3QSEAoIYnVpbGRfaWQYASABKAkiKAoRQXJ0aWZhY3RJZFJlcXVlc3QSEwoLYXJ0aWZhY3RfaWQYASABKAkiQAoRR2V0QnVpbGRzUmVzcG9uc2USKwoGYnVpbGRzGAEgAygLMhsubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGQiUQobU2V0QXBwbGljYXRpb25FbnZWYXJSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEgsKA2tleRgCIAEoCRINCgV2YWx1ZRgDIAEoCSJFCh5EZWxldGVBcHBsaWNhdGlvbkVudlZhclJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkSCwoDa2V5GAIgASgJIo8BChxHZXRBcHBsaWNhdGlvbk1ldHJpY3NSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEhQKDG1ldHJpY3NfbmFtZRgCIAEoCRIqCgZiZWZvcmUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWxpbWl0X3NlY29uZHMYBCABKAMiZQoQR2V0T3V0cHV0UmVxdWVzdBIWCg5hcHBsaWNhdGlvbl9pZBgBIAEoCRIqCgZiZWZvcmUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBWxpbWl0GAMgASgFIlsKFkdldE91dHB1dFN0cmVhbVJlcXVlc3QSFgoOYXBwbGljYXRpb25faWQYASABKAkSKQoFYmVnaW4YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIkEKF1JldHJ5Q29tbWl0QnVpbGRSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgASgJEg4KBmNvbW1pdBgCIAEoCSJHChlHZXRSZXBvc2l0b3J5UmVmc1Jlc3BvbnNlEioKBHJlZnMYASADKAsyHC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HaXRSZWYqMwoKRGVwbG95VHlwZRILCgdSVU5USU1FEAASCgoGU1RBVElDEAESDAoIRlVOQ1RJT04QAioxChJBdXRoZW50aWNhdGlvblR5cGUSBwoDT0ZGEAASCAoEU09GVBABEggKBEhBUkQQAiorChdQb3J0UHVibGljYXRpb25Qcm90b2NvbBIHCgNUQ1AQABIHCgNVRFAQASpeCgtCdWlsZFN0YXR1cxIKCgZRVUVVRUQQABIMCghCVUlMRElORxABEg0KCVNVQ0NFRURFRBACEgoKBkZBSUxFRBADEg0KCUNBTkNFTExFRBAEEgsKB1NLSVBQRUQQBTLuGwoKQVBJU2VydmljZRJOCg1HZXRTeXN0ZW1JbmZvEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiAubmVvc2hvd2Nhc2UucHJvdG9idWYuU3lzdGVtSW5mbyIDkAIBElgKD0dlbmVyYXRlS2V5UGFpchIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRotLm5lb3Nob3djYXNlLnByb3RvYnVmLkdlbmVyYXRlS2V5UGFpclJlc3BvbnNlEkAKBUdldE1lEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhoubmVvc2hvd2Nhc2UucHJvdG9idWYuVXNlciIDkAIBEk8KCEdldFVzZXJzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiYubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0VXNlcnNSZXNwb25zZSIDkAIBEloKDUNyZWF0ZVVzZXJLZXkSKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5DcmVhdGVVc2VyS2V5UmVxdWVzdBodLm5lb3Nob3djYXNlLnByb3RvYnVmLlVzZXJLZXkSVQoLR2V0VXNlcktleXMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRVc2VyS2V5c1Jlc3BvbnNlIgOQAgESUwoNRGVsZXRlVXNlcktleRIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkRlbGV0ZVVzZXJLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmMKEENyZWF0ZVJlcG9zaXRvcnkSLS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5DcmVhdGVSZXBvc2l0b3J5UmVxdWVzdBogLm5lb3Nob3djYXNlLnByb3RvYnVmLlJlcG9zaXRvcnkScwoPR2V0UmVwb3NpdG9yaWVzEiwubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0UmVwb3NpdG9yaWVzUmVxdWVzdBotLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldFJlcG9zaXRvcmllc1Jlc3BvbnNlIgOQAgESggEKFEdldFJlcG9zaXRvcnlDb21taXRzEjEubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0UmVwb3NpdG9yeUNvbW1pdHNSZXF1ZXN0GjIubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0UmVwb3NpdG9yeUNvbW1pdHNSZXNwb25zZSIDkAIBEmEKDUdldFJlcG9zaXRvcnkSKS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SZXBvc2l0b3J5SWRSZXF1ZXN0GiAubmVvc2hvd2Nhc2UucHJvdG9idWYuUmVwb3NpdG9yeSIDkAIBEnQKEUdldFJlcG9zaXRvcnlSZWZzEikubmVvc2hvd2Nhc2UucHJvdG9idWYuUmVwb3NpdG9yeUlkUmVxdWVzdBovLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldFJlcG9zaXRvcnlSZWZzUmVzcG9uc2UiA5ACARJZChBVcGRhdGVSZXBvc2l0b3J5Ei0ubmVvc2hvd2Nhc2UucHJvdG9idWYuVXBkYXRlUmVwb3NpdG9yeVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSVgoRUmVmcmVzaFJlcG9zaXRvcnkSKS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SZXBvc2l0b3J5SWRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElUKEERlbGV0ZVJlcG9zaXRvcnkSKS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SZXBvc2l0b3J5SWRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmYKEUNyZWF0ZUFwcGxpY2F0aW9uEi4ubmVvc2hvd2Nhc2UucHJvdG9idWYuQ3JlYXRlQXBwbGljYXRpb25SZXF1ZXN0GiEubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb24ScwoPR2V0QXBwbGljYXRpb25zEiwubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0QXBwbGljYXRpb25zUmVxdWVzdBotLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldEFwcGxpY2F0aW9uc1Jlc3BvbnNlIgOQAgESZAoOR2V0QXBwbGljYXRpb24SKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbklkUmVxdWVzdBohLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uIgOQAgESWwoRVXBkYXRlQXBwbGljYXRpb24SLi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5VcGRhdGVBcHBsaWNhdGlvblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSVwoRRGVsZXRlQXBwbGljYXRpb24SKi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbklkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJaChNHZXRBdmFpbGFibGVNZXRyaWNzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiYubmVvc2hvd2Nhc2UucHJvdG9idWYuQXZhaWxhYmxlTWV0cmljcyIDkAIBEnoKFUdldEFwcGxpY2F0aW9uTWV0cmljcxIyLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldEFwcGxpY2F0aW9uTWV0cmljc1JlcXVlc3QaKC5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcHBsaWNhdGlvbk1ldHJpY3MiA5ACARJiCglHZXRPdXRwdXQSJi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRPdXRwdXRSZXF1ZXN0GigubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25PdXRwdXRzIgOQAgESagoPR2V0T3V0cHV0U3RyZWFtEiwubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0T3V0cHV0U3RyZWFtUmVxdWVzdBonLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uT3V0cHV0MAESZwoKR2V0RW52VmFycxIqLm5lb3Nob3djYXNlLnByb3RvYnVmLkFwcGxpY2F0aW9uSWRSZXF1ZXN0GigubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25FbnZWYXJzIgOQAgESVgoJU2V0RW52VmFyEjEubmVvc2hvd2Nhc2UucHJvdG9idWYuU2V0QXBwbGljYXRpb25FbnZWYXJSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElwKDERlbGV0ZUVudlZhchI0Lm5lb3Nob3djYXNlLnByb3RvYnVmLkRlbGV0ZUFwcGxpY2F0aW9uRW52VmFyUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJWChBTdGFydEFwcGxpY2F0aW9uEioubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25JZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSVQoPU3RvcEFwcGxpY2F0aW9uEioubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25JZFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZwoMR2V0QWxsQnVpbGRzEikubmVvc2hvd2Nhc2UucHJvdG9idWYuR2V0QWxsQnVpbGRzUmVxdWVzdBonLm5lb3Nob3djYXNlLnByb3RvYnVmLkdldEJ1aWxkc1Jlc3BvbnNlIgOQAgESZQoJR2V0QnVpbGRzEioubmVvc2hvd2Nhc2UucHJvdG9idWYuQXBwbGljYXRpb25JZFJlcXVlc3QaJy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5HZXRCdWlsZHNSZXNwb25zZSIDkAIBElIKCEdldEJ1aWxkEiQubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRJZFJlcXVlc3QaGy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZCIDkAIBElkKEFJldHJ5Q29tbWl0QnVpbGQSLS5uZW9zaG93Y2FzZS5wcm90b2J1Zi5SZXRyeUNvbW1pdEJ1aWxkUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJLCgtDYW5jZWxCdWlsZBIkLm5lb3Nob3djYXNlLnByb3RvYnVmLkJ1aWxkSWRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElgKC0dldEJ1aWxkTG9nEiQubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRJZFJlcXVlc3QaHi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZExvZyIDkAIBElsKEUdldEJ1aWxkTG9nU3RyZWFtEiQubmVvc2hvd2Nhc2UucHJvdG9idWYuQnVpbGRJZFJlcXVlc3QaHi5uZW9zaG93Y2FzZS5wcm90b2J1Zi5CdWlsZExvZzABEmcKEEdldEJ1aWxkQXJ0aWZhY3QSJy5uZW9zaG93Y2FzZS5wcm90b2J1Zi5BcnRpZmFjdElkUmVxdWVzdBolLm5lb3Nob3djYXNlLnByb3RvYnVmLkFydGlmYWN0Q29udGVudCIDkAIBYgZwcm90bzM", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_neoshowcase_protobuf_null]); /** * @generated from message neoshowcase.protobuf.SSHInfo @@ -534,6 +534,23 @@ export type StaticConfig = Message<"neoshowcase.protobuf.StaticConfig"> & { export const StaticConfigSchema: GenMessage = /*@__PURE__*/ messageDesc(file_neoshowcase_protobuf_gateway, 14); +/** + * @generated from message neoshowcase.protobuf.FunctionConfig + */ +export type FunctionConfig = Message<"neoshowcase.protobuf.FunctionConfig"> & { + /** + * @generated from field: string artifact_path = 1; + */ + artifactPath: string; +}; + +/** + * Describes the message neoshowcase.protobuf.FunctionConfig. + * Use `create(FunctionConfigSchema)` to create a new message. + */ +export const FunctionConfigSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_neoshowcase_protobuf_gateway, 15); + /** * @generated from message neoshowcase.protobuf.BuildConfigStaticBuildpack */ @@ -554,7 +571,7 @@ export type BuildConfigStaticBuildpack = Message<"neoshowcase.protobuf.BuildConf * Use `create(BuildConfigStaticBuildpackSchema)` to create a new message. */ export const BuildConfigStaticBuildpackSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 15); + messageDesc(file_neoshowcase_protobuf_gateway, 16); /** * @generated from message neoshowcase.protobuf.BuildConfigStaticCmd @@ -581,7 +598,7 @@ export type BuildConfigStaticCmd = Message<"neoshowcase.protobuf.BuildConfigStat * Use `create(BuildConfigStaticCmdSchema)` to create a new message. */ export const BuildConfigStaticCmdSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 16); + messageDesc(file_neoshowcase_protobuf_gateway, 17); /** * @generated from message neoshowcase.protobuf.BuildConfigStaticDockerfile @@ -608,7 +625,83 @@ export type BuildConfigStaticDockerfile = Message<"neoshowcase.protobuf.BuildCon * Use `create(BuildConfigStaticDockerfileSchema)` to create a new message. */ export const BuildConfigStaticDockerfileSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 17); + messageDesc(file_neoshowcase_protobuf_gateway, 18); + +/** + * @generated from message neoshowcase.protobuf.BuildConfigFunctionBuildpack + */ +export type BuildConfigFunctionBuildpack = Message<"neoshowcase.protobuf.BuildConfigFunctionBuildpack"> & { + /** + * @generated from field: neoshowcase.protobuf.FunctionConfig function_config = 1; + */ + functionConfig?: FunctionConfig; + + /** + * @generated from field: string context = 2; + */ + context: string; +}; + +/** + * Describes the message neoshowcase.protobuf.BuildConfigFunctionBuildpack. + * Use `create(BuildConfigFunctionBuildpackSchema)` to create a new message. + */ +export const BuildConfigFunctionBuildpackSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_neoshowcase_protobuf_gateway, 19); + +/** + * @generated from message neoshowcase.protobuf.BuildConfigFunctionCmd + */ +export type BuildConfigFunctionCmd = Message<"neoshowcase.protobuf.BuildConfigFunctionCmd"> & { + /** + * @generated from field: neoshowcase.protobuf.FunctionConfig function_config = 1; + */ + functionConfig?: FunctionConfig; + + /** + * @generated from field: string base_image = 2; + */ + baseImage: string; + + /** + * @generated from field: string build_cmd = 3; + */ + buildCmd: string; +}; + +/** + * Describes the message neoshowcase.protobuf.BuildConfigFunctionCmd. + * Use `create(BuildConfigFunctionCmdSchema)` to create a new message. + */ +export const BuildConfigFunctionCmdSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_neoshowcase_protobuf_gateway, 20); + +/** + * @generated from message neoshowcase.protobuf.BuildConfigFunctionDockerfile + */ +export type BuildConfigFunctionDockerfile = Message<"neoshowcase.protobuf.BuildConfigFunctionDockerfile"> & { + /** + * @generated from field: neoshowcase.protobuf.FunctionConfig function_config = 1; + */ + functionConfig?: FunctionConfig; + + /** + * @generated from field: string dockerfile_name = 2; + */ + dockerfileName: string; + + /** + * @generated from field: string context = 3; + */ + context: string; +}; + +/** + * Describes the message neoshowcase.protobuf.BuildConfigFunctionDockerfile. + * Use `create(BuildConfigFunctionDockerfileSchema)` to create a new message. + */ +export const BuildConfigFunctionDockerfileSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_neoshowcase_protobuf_gateway, 21); /** * @generated from message neoshowcase.protobuf.ApplicationConfig @@ -653,6 +746,24 @@ export type ApplicationConfig = Message<"neoshowcase.protobuf.ApplicationConfig" */ value: BuildConfigStaticDockerfile; case: "staticDockerfile"; + } | { + /** + * @generated from field: neoshowcase.protobuf.BuildConfigFunctionBuildpack function_buildpack = 7; + */ + value: BuildConfigFunctionBuildpack; + case: "functionBuildpack"; + } | { + /** + * @generated from field: neoshowcase.protobuf.BuildConfigFunctionCmd function_cmd = 8; + */ + value: BuildConfigFunctionCmd; + case: "functionCmd"; + } | { + /** + * @generated from field: neoshowcase.protobuf.BuildConfigFunctionDockerfile function_dockerfile = 9; + */ + value: BuildConfigFunctionDockerfile; + case: "functionDockerfile"; } | { case: undefined; value?: undefined }; }; @@ -661,7 +772,7 @@ export type ApplicationConfig = Message<"neoshowcase.protobuf.ApplicationConfig" * Use `create(ApplicationConfigSchema)` to create a new message. */ export const ApplicationConfigSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 18); + messageDesc(file_neoshowcase_protobuf_gateway, 22); /** * @generated from message neoshowcase.protobuf.Website @@ -713,7 +824,7 @@ export type Website = Message<"neoshowcase.protobuf.Website"> & { * Use `create(WebsiteSchema)` to create a new message. */ export const WebsiteSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 19); + messageDesc(file_neoshowcase_protobuf_gateway, 23); /** * @generated from message neoshowcase.protobuf.PortPublication @@ -740,7 +851,7 @@ export type PortPublication = Message<"neoshowcase.protobuf.PortPublication"> & * Use `create(PortPublicationSchema)` to create a new message. */ export const PortPublicationSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 20); + messageDesc(file_neoshowcase_protobuf_gateway, 24); /** * @generated from message neoshowcase.protobuf.Application @@ -837,7 +948,7 @@ export type Application = Message<"neoshowcase.protobuf.Application"> & { * Use `create(ApplicationSchema)` to create a new message. */ export const ApplicationSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 21); + messageDesc(file_neoshowcase_protobuf_gateway, 25); /** * @generated from enum neoshowcase.protobuf.Application.ContainerState @@ -883,7 +994,7 @@ export enum Application_ContainerState { * Describes the enum neoshowcase.protobuf.Application.ContainerState. */ export const Application_ContainerStateSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_neoshowcase_protobuf_gateway, 21, 0); + enumDesc(file_neoshowcase_protobuf_gateway, 25, 0); /** * @generated from message neoshowcase.protobuf.ApplicationEnvVar @@ -915,7 +1026,7 @@ export type ApplicationEnvVar = Message<"neoshowcase.protobuf.ApplicationEnvVar" * Use `create(ApplicationEnvVarSchema)` to create a new message. */ export const ApplicationEnvVarSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 22); + messageDesc(file_neoshowcase_protobuf_gateway, 26); /** * @generated from message neoshowcase.protobuf.ApplicationEnvVars @@ -932,7 +1043,7 @@ export type ApplicationEnvVars = Message<"neoshowcase.protobuf.ApplicationEnvVar * Use `create(ApplicationEnvVarsSchema)` to create a new message. */ export const ApplicationEnvVarsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 23); + messageDesc(file_neoshowcase_protobuf_gateway, 27); /** * @generated from message neoshowcase.protobuf.Artifact @@ -974,7 +1085,7 @@ export type Artifact = Message<"neoshowcase.protobuf.Artifact"> & { * Use `create(ArtifactSchema)` to create a new message. */ export const ArtifactSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 24); + messageDesc(file_neoshowcase_protobuf_gateway, 28); /** * @generated from message neoshowcase.protobuf.ArtifactContent @@ -996,7 +1107,7 @@ export type ArtifactContent = Message<"neoshowcase.protobuf.ArtifactContent"> & * Use `create(ArtifactContentSchema)` to create a new message. */ export const ArtifactContentSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 25); + messageDesc(file_neoshowcase_protobuf_gateway, 29); /** * @generated from message neoshowcase.protobuf.RuntimeImage @@ -1028,7 +1139,7 @@ export type RuntimeImage = Message<"neoshowcase.protobuf.RuntimeImage"> & { * Use `create(RuntimeImageSchema)` to create a new message. */ export const RuntimeImageSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 26); + messageDesc(file_neoshowcase_protobuf_gateway, 30); /** * @generated from message neoshowcase.protobuf.AvailableMetrics @@ -1045,7 +1156,7 @@ export type AvailableMetrics = Message<"neoshowcase.protobuf.AvailableMetrics"> * Use `create(AvailableMetricsSchema)` to create a new message. */ export const AvailableMetricsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 27); + messageDesc(file_neoshowcase_protobuf_gateway, 31); /** * @generated from message neoshowcase.protobuf.ApplicationMetric @@ -1067,7 +1178,7 @@ export type ApplicationMetric = Message<"neoshowcase.protobuf.ApplicationMetric" * Use `create(ApplicationMetricSchema)` to create a new message. */ export const ApplicationMetricSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 28); + messageDesc(file_neoshowcase_protobuf_gateway, 32); /** * @generated from message neoshowcase.protobuf.ApplicationMetrics @@ -1084,7 +1195,7 @@ export type ApplicationMetrics = Message<"neoshowcase.protobuf.ApplicationMetric * Use `create(ApplicationMetricsSchema)` to create a new message. */ export const ApplicationMetricsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 29); + messageDesc(file_neoshowcase_protobuf_gateway, 33); /** * @generated from message neoshowcase.protobuf.ApplicationOutput @@ -1106,7 +1217,7 @@ export type ApplicationOutput = Message<"neoshowcase.protobuf.ApplicationOutput" * Use `create(ApplicationOutputSchema)` to create a new message. */ export const ApplicationOutputSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 30); + messageDesc(file_neoshowcase_protobuf_gateway, 34); /** * @generated from message neoshowcase.protobuf.ApplicationOutputs @@ -1123,7 +1234,7 @@ export type ApplicationOutputs = Message<"neoshowcase.protobuf.ApplicationOutput * Use `create(ApplicationOutputsSchema)` to create a new message. */ export const ApplicationOutputsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 31); + messageDesc(file_neoshowcase_protobuf_gateway, 35); /** * @generated from message neoshowcase.protobuf.Build @@ -1190,7 +1301,7 @@ export type Build = Message<"neoshowcase.protobuf.Build"> & { * Use `create(BuildSchema)` to create a new message. */ export const BuildSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 32); + messageDesc(file_neoshowcase_protobuf_gateway, 36); /** * @generated from message neoshowcase.protobuf.BuildLog @@ -1207,7 +1318,7 @@ export type BuildLog = Message<"neoshowcase.protobuf.BuildLog"> & { * Use `create(BuildLogSchema)` to create a new message. */ export const BuildLogSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 33); + messageDesc(file_neoshowcase_protobuf_gateway, 37); /** * @generated from message neoshowcase.protobuf.GitRef @@ -1229,7 +1340,7 @@ export type GitRef = Message<"neoshowcase.protobuf.GitRef"> & { * Use `create(GitRefSchema)` to create a new message. */ export const GitRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 34); + messageDesc(file_neoshowcase_protobuf_gateway, 38); /** * @generated from message neoshowcase.protobuf.GenerateKeyPairResponse @@ -1251,7 +1362,7 @@ export type GenerateKeyPairResponse = Message<"neoshowcase.protobuf.GenerateKeyP * Use `create(GenerateKeyPairResponseSchema)` to create a new message. */ export const GenerateKeyPairResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 35); + messageDesc(file_neoshowcase_protobuf_gateway, 39); /** * @generated from message neoshowcase.protobuf.GetUsersResponse @@ -1268,7 +1379,7 @@ export type GetUsersResponse = Message<"neoshowcase.protobuf.GetUsersResponse"> * Use `create(GetUsersResponseSchema)` to create a new message. */ export const GetUsersResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 36); + messageDesc(file_neoshowcase_protobuf_gateway, 40); /** * @generated from message neoshowcase.protobuf.GetUserKeysResponse @@ -1285,7 +1396,7 @@ export type GetUserKeysResponse = Message<"neoshowcase.protobuf.GetUserKeysRespo * Use `create(GetUserKeysResponseSchema)` to create a new message. */ export const GetUserKeysResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 37); + messageDesc(file_neoshowcase_protobuf_gateway, 41); /** * @generated from message neoshowcase.protobuf.CreateUserKeyRequest @@ -1307,7 +1418,7 @@ export type CreateUserKeyRequest = Message<"neoshowcase.protobuf.CreateUserKeyRe * Use `create(CreateUserKeyRequestSchema)` to create a new message. */ export const CreateUserKeyRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 38); + messageDesc(file_neoshowcase_protobuf_gateway, 42); /** * @generated from message neoshowcase.protobuf.DeleteUserKeyRequest @@ -1324,7 +1435,7 @@ export type DeleteUserKeyRequest = Message<"neoshowcase.protobuf.DeleteUserKeyRe * Use `create(DeleteUserKeyRequestSchema)` to create a new message. */ export const DeleteUserKeyRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 39); + messageDesc(file_neoshowcase_protobuf_gateway, 43); /** * @generated from message neoshowcase.protobuf.CreateRepositoryAuthBasic @@ -1346,7 +1457,7 @@ export type CreateRepositoryAuthBasic = Message<"neoshowcase.protobuf.CreateRepo * Use `create(CreateRepositoryAuthBasicSchema)` to create a new message. */ export const CreateRepositoryAuthBasicSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 40); + messageDesc(file_neoshowcase_protobuf_gateway, 44); /** * @generated from message neoshowcase.protobuf.CreateRepositoryAuthSSH @@ -1363,7 +1474,7 @@ export type CreateRepositoryAuthSSH = Message<"neoshowcase.protobuf.CreateReposi * Use `create(CreateRepositoryAuthSSHSchema)` to create a new message. */ export const CreateRepositoryAuthSSHSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 41); + messageDesc(file_neoshowcase_protobuf_gateway, 45); /** * @generated from message neoshowcase.protobuf.CreateRepositoryAuth @@ -1398,7 +1509,7 @@ export type CreateRepositoryAuth = Message<"neoshowcase.protobuf.CreateRepositor * Use `create(CreateRepositoryAuthSchema)` to create a new message. */ export const CreateRepositoryAuthSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 42); + messageDesc(file_neoshowcase_protobuf_gateway, 46); /** * @generated from message neoshowcase.protobuf.CreateRepositoryRequest @@ -1425,7 +1536,7 @@ export type CreateRepositoryRequest = Message<"neoshowcase.protobuf.CreateReposi * Use `create(CreateRepositoryRequestSchema)` to create a new message. */ export const CreateRepositoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 43); + messageDesc(file_neoshowcase_protobuf_gateway, 47); /** * @generated from message neoshowcase.protobuf.GetRepositoriesRequest @@ -1442,7 +1553,7 @@ export type GetRepositoriesRequest = Message<"neoshowcase.protobuf.GetRepositori * Use `create(GetRepositoriesRequestSchema)` to create a new message. */ export const GetRepositoriesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 44); + messageDesc(file_neoshowcase_protobuf_gateway, 48); /** * @generated from enum neoshowcase.protobuf.GetRepositoriesRequest.Scope @@ -1475,7 +1586,7 @@ export enum GetRepositoriesRequest_Scope { * Describes the enum neoshowcase.protobuf.GetRepositoriesRequest.Scope. */ export const GetRepositoriesRequest_ScopeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_neoshowcase_protobuf_gateway, 44, 0); + enumDesc(file_neoshowcase_protobuf_gateway, 48, 0); /** * @generated from message neoshowcase.protobuf.UpdateRepositoryRequest @@ -1512,7 +1623,7 @@ export type UpdateRepositoryRequest = Message<"neoshowcase.protobuf.UpdateReposi * Use `create(UpdateRepositoryRequestSchema)` to create a new message. */ export const UpdateRepositoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 45); + messageDesc(file_neoshowcase_protobuf_gateway, 49); /** * @generated from message neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners @@ -1529,7 +1640,7 @@ export type UpdateRepositoryRequest_UpdateOwners = Message<"neoshowcase.protobuf * Use `create(UpdateRepositoryRequest_UpdateOwnersSchema)` to create a new message. */ export const UpdateRepositoryRequest_UpdateOwnersSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 45, 0); + messageDesc(file_neoshowcase_protobuf_gateway, 49, 0); /** * @generated from message neoshowcase.protobuf.RepositoryIdRequest @@ -1546,7 +1657,7 @@ export type RepositoryIdRequest = Message<"neoshowcase.protobuf.RepositoryIdRequ * Use `create(RepositoryIdRequestSchema)` to create a new message. */ export const RepositoryIdRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 46); + messageDesc(file_neoshowcase_protobuf_gateway, 50); /** * @generated from message neoshowcase.protobuf.GetRepositoryCommitsRequest @@ -1563,7 +1674,7 @@ export type GetRepositoryCommitsRequest = Message<"neoshowcase.protobuf.GetRepos * Use `create(GetRepositoryCommitsRequestSchema)` to create a new message. */ export const GetRepositoryCommitsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 47); + messageDesc(file_neoshowcase_protobuf_gateway, 51); /** * @generated from message neoshowcase.protobuf.GetRepositoryCommitsResponse @@ -1580,7 +1691,7 @@ export type GetRepositoryCommitsResponse = Message<"neoshowcase.protobuf.GetRepo * Use `create(GetRepositoryCommitsResponseSchema)` to create a new message. */ export const GetRepositoryCommitsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 48); + messageDesc(file_neoshowcase_protobuf_gateway, 52); /** * @generated from message neoshowcase.protobuf.CreateWebsiteRequest @@ -1627,7 +1738,7 @@ export type CreateWebsiteRequest = Message<"neoshowcase.protobuf.CreateWebsiteRe * Use `create(CreateWebsiteRequestSchema)` to create a new message. */ export const CreateWebsiteRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 49); + messageDesc(file_neoshowcase_protobuf_gateway, 53); /** * @generated from message neoshowcase.protobuf.DeleteWebsiteRequest @@ -1644,7 +1755,7 @@ export type DeleteWebsiteRequest = Message<"neoshowcase.protobuf.DeleteWebsiteRe * Use `create(DeleteWebsiteRequestSchema)` to create a new message. */ export const DeleteWebsiteRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 50); + messageDesc(file_neoshowcase_protobuf_gateway, 54); /** * @generated from message neoshowcase.protobuf.CreateApplicationRequest @@ -1691,7 +1802,7 @@ export type CreateApplicationRequest = Message<"neoshowcase.protobuf.CreateAppli * Use `create(CreateApplicationRequestSchema)` to create a new message. */ export const CreateApplicationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 51); + messageDesc(file_neoshowcase_protobuf_gateway, 55); /** * @generated from message neoshowcase.protobuf.GetApplicationsRequest @@ -1713,7 +1824,7 @@ export type GetApplicationsRequest = Message<"neoshowcase.protobuf.GetApplicatio * Use `create(GetApplicationsRequestSchema)` to create a new message. */ export const GetApplicationsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 52); + messageDesc(file_neoshowcase_protobuf_gateway, 56); /** * @generated from enum neoshowcase.protobuf.GetApplicationsRequest.Scope @@ -1739,7 +1850,7 @@ export enum GetApplicationsRequest_Scope { * Describes the enum neoshowcase.protobuf.GetApplicationsRequest.Scope. */ export const GetApplicationsRequest_ScopeSchema: GenEnum = /*@__PURE__*/ - enumDesc(file_neoshowcase_protobuf_gateway, 52, 0); + enumDesc(file_neoshowcase_protobuf_gateway, 56, 0); /** * @generated from message neoshowcase.protobuf.UpdateApplicationRequest @@ -1791,7 +1902,7 @@ export type UpdateApplicationRequest = Message<"neoshowcase.protobuf.UpdateAppli * Use `create(UpdateApplicationRequestSchema)` to create a new message. */ export const UpdateApplicationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 53); + messageDesc(file_neoshowcase_protobuf_gateway, 57); /** * @generated from message neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites @@ -1808,7 +1919,7 @@ export type UpdateApplicationRequest_UpdateWebsites = Message<"neoshowcase.proto * Use `create(UpdateApplicationRequest_UpdateWebsitesSchema)` to create a new message. */ export const UpdateApplicationRequest_UpdateWebsitesSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 53, 0); + messageDesc(file_neoshowcase_protobuf_gateway, 57, 0); /** * @generated from message neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts @@ -1825,7 +1936,7 @@ export type UpdateApplicationRequest_UpdatePorts = Message<"neoshowcase.protobuf * Use `create(UpdateApplicationRequest_UpdatePortsSchema)` to create a new message. */ export const UpdateApplicationRequest_UpdatePortsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 53, 1); + messageDesc(file_neoshowcase_protobuf_gateway, 57, 1); /** * @generated from message neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners @@ -1842,7 +1953,7 @@ export type UpdateApplicationRequest_UpdateOwners = Message<"neoshowcase.protobu * Use `create(UpdateApplicationRequest_UpdateOwnersSchema)` to create a new message. */ export const UpdateApplicationRequest_UpdateOwnersSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 53, 2); + messageDesc(file_neoshowcase_protobuf_gateway, 57, 2); /** * @generated from message neoshowcase.protobuf.GetRepositoriesResponse @@ -1859,7 +1970,7 @@ export type GetRepositoriesResponse = Message<"neoshowcase.protobuf.GetRepositor * Use `create(GetRepositoriesResponseSchema)` to create a new message. */ export const GetRepositoriesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 54); + messageDesc(file_neoshowcase_protobuf_gateway, 58); /** * @generated from message neoshowcase.protobuf.GetApplicationsResponse @@ -1876,7 +1987,7 @@ export type GetApplicationsResponse = Message<"neoshowcase.protobuf.GetApplicati * Use `create(GetApplicationsResponseSchema)` to create a new message. */ export const GetApplicationsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 55); + messageDesc(file_neoshowcase_protobuf_gateway, 59); /** * @generated from message neoshowcase.protobuf.ApplicationIdRequest @@ -1893,7 +2004,7 @@ export type ApplicationIdRequest = Message<"neoshowcase.protobuf.ApplicationIdRe * Use `create(ApplicationIdRequestSchema)` to create a new message. */ export const ApplicationIdRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 56); + messageDesc(file_neoshowcase_protobuf_gateway, 60); /** * @generated from message neoshowcase.protobuf.GetAllBuildsRequest @@ -1917,7 +2028,7 @@ export type GetAllBuildsRequest = Message<"neoshowcase.protobuf.GetAllBuildsRequ * Use `create(GetAllBuildsRequestSchema)` to create a new message. */ export const GetAllBuildsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 57); + messageDesc(file_neoshowcase_protobuf_gateway, 61); /** * @generated from message neoshowcase.protobuf.BuildIdRequest @@ -1934,7 +2045,7 @@ export type BuildIdRequest = Message<"neoshowcase.protobuf.BuildIdRequest"> & { * Use `create(BuildIdRequestSchema)` to create a new message. */ export const BuildIdRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 58); + messageDesc(file_neoshowcase_protobuf_gateway, 62); /** * @generated from message neoshowcase.protobuf.ArtifactIdRequest @@ -1951,7 +2062,7 @@ export type ArtifactIdRequest = Message<"neoshowcase.protobuf.ArtifactIdRequest" * Use `create(ArtifactIdRequestSchema)` to create a new message. */ export const ArtifactIdRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 59); + messageDesc(file_neoshowcase_protobuf_gateway, 63); /** * @generated from message neoshowcase.protobuf.GetBuildsResponse @@ -1968,7 +2079,7 @@ export type GetBuildsResponse = Message<"neoshowcase.protobuf.GetBuildsResponse" * Use `create(GetBuildsResponseSchema)` to create a new message. */ export const GetBuildsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 60); + messageDesc(file_neoshowcase_protobuf_gateway, 64); /** * @generated from message neoshowcase.protobuf.SetApplicationEnvVarRequest @@ -1995,7 +2106,7 @@ export type SetApplicationEnvVarRequest = Message<"neoshowcase.protobuf.SetAppli * Use `create(SetApplicationEnvVarRequestSchema)` to create a new message. */ export const SetApplicationEnvVarRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 61); + messageDesc(file_neoshowcase_protobuf_gateway, 65); /** * @generated from message neoshowcase.protobuf.DeleteApplicationEnvVarRequest @@ -2017,7 +2128,7 @@ export type DeleteApplicationEnvVarRequest = Message<"neoshowcase.protobuf.Delet * Use `create(DeleteApplicationEnvVarRequestSchema)` to create a new message. */ export const DeleteApplicationEnvVarRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 62); + messageDesc(file_neoshowcase_protobuf_gateway, 66); /** * @generated from message neoshowcase.protobuf.GetApplicationMetricsRequest @@ -2049,7 +2160,7 @@ export type GetApplicationMetricsRequest = Message<"neoshowcase.protobuf.GetAppl * Use `create(GetApplicationMetricsRequestSchema)` to create a new message. */ export const GetApplicationMetricsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 63); + messageDesc(file_neoshowcase_protobuf_gateway, 67); /** * @generated from message neoshowcase.protobuf.GetOutputRequest @@ -2076,7 +2187,7 @@ export type GetOutputRequest = Message<"neoshowcase.protobuf.GetOutputRequest"> * Use `create(GetOutputRequestSchema)` to create a new message. */ export const GetOutputRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 64); + messageDesc(file_neoshowcase_protobuf_gateway, 68); /** * @generated from message neoshowcase.protobuf.GetOutputStreamRequest @@ -2098,7 +2209,7 @@ export type GetOutputStreamRequest = Message<"neoshowcase.protobuf.GetOutputStre * Use `create(GetOutputStreamRequestSchema)` to create a new message. */ export const GetOutputStreamRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 65); + messageDesc(file_neoshowcase_protobuf_gateway, 69); /** * @generated from message neoshowcase.protobuf.RetryCommitBuildRequest @@ -2120,7 +2231,7 @@ export type RetryCommitBuildRequest = Message<"neoshowcase.protobuf.RetryCommitB * Use `create(RetryCommitBuildRequestSchema)` to create a new message. */ export const RetryCommitBuildRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 66); + messageDesc(file_neoshowcase_protobuf_gateway, 70); /** * @generated from message neoshowcase.protobuf.GetRepositoryRefsResponse @@ -2137,7 +2248,7 @@ export type GetRepositoryRefsResponse = Message<"neoshowcase.protobuf.GetReposit * Use `create(GetRepositoryRefsResponseSchema)` to create a new message. */ export const GetRepositoryRefsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_neoshowcase_protobuf_gateway, 67); + messageDesc(file_neoshowcase_protobuf_gateway, 71); /** * @generated from enum neoshowcase.protobuf.DeployType @@ -2152,6 +2263,11 @@ export enum DeployType { * @generated from enum value: STATIC = 1; */ STATIC = 1, + + /** + * @generated from enum value: FUNCTION = 2; + */ + FUNCTION = 2, } /** diff --git a/dashboard/src/features/application/schema/applicationConfigSchema.ts b/dashboard/src/features/application/schema/applicationConfigSchema.ts index 0890eb58f..1da531ac5 100644 --- a/dashboard/src/features/application/schema/applicationConfigSchema.ts +++ b/dashboard/src/features/application/schema/applicationConfigSchema.ts @@ -288,6 +288,14 @@ export const configMessageToSchema = (config: ApplicationConfig): ApplicationCon }, }), ) + .with( + { + case: P.union('functionBuildpack', 'functionDockerfile', 'functionCmd'), + }, + (buildConfig) => { + throw new Error(`Currently function build config type ${buildConfig.case} is not supported`) + }, + ) .with({ case: undefined }, () => undefined) .exhaustive() @@ -326,6 +334,14 @@ export const configMessageToSchema = (config: ApplicationConfig): ApplicationCon }, }), ) + .with( + { + case: P.union('functionBuildpack', 'functionCmd', 'functionDockerfile'), + }, + (buildConfig) => { + throw new Error(`Currently function build config type ${buildConfig.case} is not supported`) + }, + ) .with({ case: undefined }, () => undefined) .exhaustive() diff --git a/migrations/schema.sql b/migrations/schema.sql index f5a647ffc..457b922fb 100644 --- a/migrations/schema.sql +++ b/migrations/schema.sql @@ -59,15 +59,15 @@ CREATE TABLE `repository_owners` CREATE TABLE `repository_commits` ( - `hash` CHAR(40) PRIMARY KEY COMMENT 'Commit SHA-1 Hash', - `author_name` VARCHAR(256) NOT NULL COMMENT 'Author Name', - `author_email` VARCHAR(256) NOT NULL COMMENT 'Author Email', - `author_date` DATETIME(6) NOT NULL COMMENT 'Author Date', - `committer_name` VARCHAR(256) NOT NULL COMMENT 'Committer Name', - `committer_email` VARCHAR(256) NOT NULL COMMENT 'Committer Email', - `committer_date` DATETIME(6) NOT NULL COMMENT 'Commit Date', - `message` TEXT NOT NULL COMMENT 'Commit Message', - `error` TINYINT(1) NOT NULL COMMENT 'メタ情報取得に失敗したか' + `hash` CHAR(40) PRIMARY KEY COMMENT 'Commit SHA-1 Hash', + `author_name` VARCHAR(256) NOT NULL COMMENT 'Author Name', + `author_email` VARCHAR(256) NOT NULL COMMENT 'Author Email', + `author_date` DATETIME(6) NOT NULL COMMENT 'Author Date', + `committer_name` VARCHAR(256) NOT NULL COMMENT 'Committer Name', + `committer_email` VARCHAR(256) NOT NULL COMMENT 'Committer Email', + `committer_date` DATETIME(6) NOT NULL COMMENT 'Commit Date', + `message` TEXT NOT NULL COMMENT 'Commit Message', + `error` TINYINT(1) NOT NULL COMMENT 'メタ情報取得に失敗したか' ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'コミットメタ情報テーブル'; @@ -79,7 +79,11 @@ CREATE TABLE `applications` `repository_id` VARCHAR(22) NOT NULL COMMENT 'リポジトリID', `ref_name` VARCHAR(100) NOT NULL COMMENT 'Gitブランチ・タグ名', `commit` CHAR(40) NOT NULL COMMENT '解決されたコミット', - `deploy_type` ENUM ('runtime', 'static') NOT NULL COMMENT 'デプロイタイプ', + `deploy_type` ENUM ( + 'runtime', + 'static', + 'function' + ) NOT NULL COMMENT 'デプロイタイプ', `running` TINYINT(1) NOT NULL COMMENT 'アプリを起動させるか(desired state)', `container` ENUM ( 'missing', @@ -117,7 +121,10 @@ CREATE TABLE `application_config` 'runtime-dockerfile', 'static-buildpack', 'static-cmd', - 'static-dockerfile' + 'static-dockerfile', + 'function-buildpack', + 'function-cmd', + 'function-dockerfile' ) NOT NULL COMMENT 'ビルドタイプ', `base_image` VARCHAR(1000) NOT NULL COMMENT 'ベースイメージの名前', `build_cmd` TEXT NOT NULL COMMENT 'ビルドコマンド', diff --git a/pkg/domain/app.go b/pkg/domain/app.go index f51e42ab9..ca4cc221f 100644 --- a/pkg/domain/app.go +++ b/pkg/domain/app.go @@ -39,6 +39,7 @@ type DeployType int const ( DeployTypeRuntime DeployType = iota DeployTypeStatic + DeployTypeFunction ) var EmptyCommit = strings.Repeat("0", 40) diff --git a/pkg/domain/app_artifact.go b/pkg/domain/app_artifact.go index 1bb3e6ce0..f079ac6cd 100644 --- a/pkg/domain/app_artifact.go +++ b/pkg/domain/app_artifact.go @@ -8,6 +8,8 @@ import ( const BuilderStaticArtifactName = "website.tar.gz" +const BuilderFunctionArtifactName = "function.tar.gz" + type Artifact struct { ID string Name string diff --git a/pkg/domain/app_build_config.go b/pkg/domain/app_build_config.go index fa5875796..775561053 100644 --- a/pkg/domain/app_build_config.go +++ b/pkg/domain/app_build_config.go @@ -18,6 +18,9 @@ const ( BuildTypeStaticBuildpack BuildTypeStaticCmd BuildTypeStaticDockerfile + BuildTypeFunctionBuildpack + BuildTypeFunctionCmd + BuildTypeFunctionDockerfile ) func (b BuildType) DeployType() DeployType { @@ -26,6 +29,8 @@ func (b BuildType) DeployType() DeployType { return DeployTypeRuntime case BuildTypeStaticBuildpack, BuildTypeStaticCmd, BuildTypeStaticDockerfile: return DeployTypeStatic + case BuildTypeFunctionBuildpack, BuildTypeFunctionCmd, BuildTypeFunctionDockerfile: + return DeployTypeFunction default: panic(fmt.Sprintf("unknown build type: %v", b)) } @@ -107,6 +112,10 @@ func (rc *RuntimeConfig) GetStaticConfig() StaticConfig { panic("not static config") } +func (rc *RuntimeConfig) GetFunctionConfig() FunctionConfig { + panic("not function config") +} + type StaticConfig struct { ArtifactPath string SPA bool @@ -135,6 +144,41 @@ func (sc *StaticConfig) GetStaticConfig() StaticConfig { return *sc } +func (sc *StaticConfig) GetFunctionConfig() FunctionConfig { + panic("not function config") +} + +type FunctionConfig struct { + ArtifactPath string +} + +func (fc *FunctionConfig) Validate() error { + if fc.ArtifactPath == "" { + return errors.New("artifact_path is required for function builds") + } + return nil +} + +func (fc *FunctionConfig) MariaDB() bool { + return false +} + +func (fc *FunctionConfig) MongoDB() bool { + return false +} + +func (fc *FunctionConfig) GetRuntimeConfig() RuntimeConfig { + panic("not runtime config") +} + +func (fc *FunctionConfig) GetStaticConfig() StaticConfig { + panic("not static config") +} + +func (fc *FunctionConfig) GetFunctionConfig() FunctionConfig { + return *fc +} + type BuildConfig interface { isBuildConfig() BuildType() BuildType @@ -145,6 +189,7 @@ type BuildConfig interface { GetRuntimeConfig() RuntimeConfig GetStaticConfig() StaticConfig + GetFunctionConfig() FunctionConfig } type buildConfigEmbed struct{} @@ -277,3 +322,65 @@ func (bc *BuildConfigStaticDockerfile) Validate() error { } return nil } + +type BuildConfigFunctionBuildpack struct { + FunctionConfig + Context string + buildConfigEmbed +} + +func (bc *BuildConfigFunctionBuildpack) BuildType() BuildType { + return BuildTypeFunctionBuildpack +} + +func (bc *BuildConfigFunctionBuildpack) Validate() error { + if err := bc.FunctionConfig.Validate(); err != nil { + return err + } + // NOTE: context is not necessary + return nil +} + +type BuildConfigFunctionCmd struct { + FunctionConfig + BaseImage string + BuildCmd string + buildConfigEmbed +} + +func (bc *BuildConfigFunctionCmd) BuildType() BuildType { + return BuildTypeFunctionCmd +} + +func (bc *BuildConfigFunctionCmd) Validate() error { + if err := bc.FunctionConfig.Validate(); err != nil { + return err + } + // NOTE: base image is not necessary (default: scratch) + // NOTE: build cmd is not necessary + if bc.ArtifactPath == "" { + return errors.New("artifact_path is required") + } + return nil +} + +type BuildConfigFunctionDockerfile struct { + FunctionConfig + DockerfileName string + Context string + buildConfigEmbed +} + +func (bc *BuildConfigFunctionDockerfile) BuildType() BuildType { + return BuildTypeFunctionDockerfile +} + +func (bc *BuildConfigFunctionDockerfile) Validate() error { + if err := bc.FunctionConfig.Validate(); err != nil { + return err + } + if bc.DockerfileName == "" { + return errors.New("dockerfile_name is required") + } + return nil +} diff --git a/pkg/infrastructure/grpc/pb/gateway.pb.go b/pkg/infrastructure/grpc/pb/gateway.pb.go index 90b8459a5..57a60a489 100644 --- a/pkg/infrastructure/grpc/pb/gateway.pb.go +++ b/pkg/infrastructure/grpc/pb/gateway.pb.go @@ -26,8 +26,9 @@ const ( type DeployType int32 const ( - DeployType_RUNTIME DeployType = 0 - DeployType_STATIC DeployType = 1 + DeployType_RUNTIME DeployType = 0 + DeployType_STATIC DeployType = 1 + DeployType_FUNCTION DeployType = 2 ) // Enum value maps for DeployType. @@ -35,10 +36,12 @@ var ( DeployType_name = map[int32]string{ 0: "RUNTIME", 1: "STATIC", + 2: "FUNCTION", } DeployType_value = map[string]int32{ - "RUNTIME": 0, - "STATIC": 1, + "RUNTIME": 0, + "STATIC": 1, + "FUNCTION": 2, } ) @@ -378,7 +381,7 @@ func (x Application_ContainerState) Number() protoreflect.EnumNumber { // Deprecated: Use Application_ContainerState.Descriptor instead. func (Application_ContainerState) EnumDescriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{21, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{25, 0} } type GetRepositoriesRequest_Scope int32 @@ -431,7 +434,7 @@ func (x GetRepositoriesRequest_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use GetRepositoriesRequest_Scope.Descriptor instead. func (GetRepositoriesRequest_Scope) EnumDescriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{48, 0} } type GetApplicationsRequest_Scope int32 @@ -480,7 +483,7 @@ func (x GetApplicationsRequest_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use GetApplicationsRequest_Scope.Descriptor instead. func (GetApplicationsRequest_Scope) EnumDescriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{56, 0} } type SSHInfo struct { @@ -1463,6 +1466,50 @@ func (x *StaticConfig) GetSpa() bool { return false } +type FunctionConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + ArtifactPath string `protobuf:"bytes,1,opt,name=artifact_path,json=artifactPath,proto3" json:"artifact_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FunctionConfig) Reset() { + *x = FunctionConfig{} + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FunctionConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FunctionConfig) ProtoMessage() {} + +func (x *FunctionConfig) ProtoReflect() protoreflect.Message { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FunctionConfig.ProtoReflect.Descriptor instead. +func (*FunctionConfig) Descriptor() ([]byte, []int) { + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{15} +} + +func (x *FunctionConfig) GetArtifactPath() string { + if x != nil { + return x.ArtifactPath + } + return "" +} + type BuildConfigStaticBuildpack struct { state protoimpl.MessageState `protogen:"open.v1"` StaticConfig *StaticConfig `protobuf:"bytes,1,opt,name=static_config,json=staticConfig,proto3" json:"static_config,omitempty"` @@ -1473,7 +1520,7 @@ type BuildConfigStaticBuildpack struct { func (x *BuildConfigStaticBuildpack) Reset() { *x = BuildConfigStaticBuildpack{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +1532,7 @@ func (x *BuildConfigStaticBuildpack) String() string { func (*BuildConfigStaticBuildpack) ProtoMessage() {} func (x *BuildConfigStaticBuildpack) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[15] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +1545,7 @@ func (x *BuildConfigStaticBuildpack) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigStaticBuildpack.ProtoReflect.Descriptor instead. func (*BuildConfigStaticBuildpack) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{15} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{16} } func (x *BuildConfigStaticBuildpack) GetStaticConfig() *StaticConfig { @@ -1526,7 +1573,7 @@ type BuildConfigStaticCmd struct { func (x *BuildConfigStaticCmd) Reset() { *x = BuildConfigStaticCmd{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1538,7 +1585,7 @@ func (x *BuildConfigStaticCmd) String() string { func (*BuildConfigStaticCmd) ProtoMessage() {} func (x *BuildConfigStaticCmd) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[16] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1551,7 +1598,7 @@ func (x *BuildConfigStaticCmd) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigStaticCmd.ProtoReflect.Descriptor instead. func (*BuildConfigStaticCmd) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{16} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{17} } func (x *BuildConfigStaticCmd) GetStaticConfig() *StaticConfig { @@ -1586,7 +1633,7 @@ type BuildConfigStaticDockerfile struct { func (x *BuildConfigStaticDockerfile) Reset() { *x = BuildConfigStaticDockerfile{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1598,7 +1645,7 @@ func (x *BuildConfigStaticDockerfile) String() string { func (*BuildConfigStaticDockerfile) ProtoMessage() {} func (x *BuildConfigStaticDockerfile) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[17] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1611,7 +1658,7 @@ func (x *BuildConfigStaticDockerfile) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildConfigStaticDockerfile.ProtoReflect.Descriptor instead. func (*BuildConfigStaticDockerfile) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{17} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{18} } func (x *BuildConfigStaticDockerfile) GetStaticConfig() *StaticConfig { @@ -1635,6 +1682,178 @@ func (x *BuildConfigStaticDockerfile) GetContext() string { return "" } +type BuildConfigFunctionBuildpack struct { + state protoimpl.MessageState `protogen:"open.v1"` + FunctionConfig *FunctionConfig `protobuf:"bytes,1,opt,name=function_config,json=functionConfig,proto3" json:"function_config,omitempty"` + Context string `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildConfigFunctionBuildpack) Reset() { + *x = BuildConfigFunctionBuildpack{} + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildConfigFunctionBuildpack) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildConfigFunctionBuildpack) ProtoMessage() {} + +func (x *BuildConfigFunctionBuildpack) ProtoReflect() protoreflect.Message { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildConfigFunctionBuildpack.ProtoReflect.Descriptor instead. +func (*BuildConfigFunctionBuildpack) Descriptor() ([]byte, []int) { + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{19} +} + +func (x *BuildConfigFunctionBuildpack) GetFunctionConfig() *FunctionConfig { + if x != nil { + return x.FunctionConfig + } + return nil +} + +func (x *BuildConfigFunctionBuildpack) GetContext() string { + if x != nil { + return x.Context + } + return "" +} + +type BuildConfigFunctionCmd struct { + state protoimpl.MessageState `protogen:"open.v1"` + FunctionConfig *FunctionConfig `protobuf:"bytes,1,opt,name=function_config,json=functionConfig,proto3" json:"function_config,omitempty"` + BaseImage string `protobuf:"bytes,2,opt,name=base_image,json=baseImage,proto3" json:"base_image,omitempty"` + BuildCmd string `protobuf:"bytes,3,opt,name=build_cmd,json=buildCmd,proto3" json:"build_cmd,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildConfigFunctionCmd) Reset() { + *x = BuildConfigFunctionCmd{} + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildConfigFunctionCmd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildConfigFunctionCmd) ProtoMessage() {} + +func (x *BuildConfigFunctionCmd) ProtoReflect() protoreflect.Message { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildConfigFunctionCmd.ProtoReflect.Descriptor instead. +func (*BuildConfigFunctionCmd) Descriptor() ([]byte, []int) { + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{20} +} + +func (x *BuildConfigFunctionCmd) GetFunctionConfig() *FunctionConfig { + if x != nil { + return x.FunctionConfig + } + return nil +} + +func (x *BuildConfigFunctionCmd) GetBaseImage() string { + if x != nil { + return x.BaseImage + } + return "" +} + +func (x *BuildConfigFunctionCmd) GetBuildCmd() string { + if x != nil { + return x.BuildCmd + } + return "" +} + +type BuildConfigFunctionDockerfile struct { + state protoimpl.MessageState `protogen:"open.v1"` + FunctionConfig *FunctionConfig `protobuf:"bytes,1,opt,name=function_config,json=functionConfig,proto3" json:"function_config,omitempty"` + DockerfileName string `protobuf:"bytes,2,opt,name=dockerfile_name,json=dockerfileName,proto3" json:"dockerfile_name,omitempty"` + Context string `protobuf:"bytes,3,opt,name=context,proto3" json:"context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BuildConfigFunctionDockerfile) Reset() { + *x = BuildConfigFunctionDockerfile{} + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BuildConfigFunctionDockerfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildConfigFunctionDockerfile) ProtoMessage() {} + +func (x *BuildConfigFunctionDockerfile) ProtoReflect() protoreflect.Message { + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BuildConfigFunctionDockerfile.ProtoReflect.Descriptor instead. +func (*BuildConfigFunctionDockerfile) Descriptor() ([]byte, []int) { + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{21} +} + +func (x *BuildConfigFunctionDockerfile) GetFunctionConfig() *FunctionConfig { + if x != nil { + return x.FunctionConfig + } + return nil +} + +func (x *BuildConfigFunctionDockerfile) GetDockerfileName() string { + if x != nil { + return x.DockerfileName + } + return "" +} + +func (x *BuildConfigFunctionDockerfile) GetContext() string { + if x != nil { + return x.Context + } + return "" +} + type ApplicationConfig struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to BuildConfig: @@ -1645,6 +1864,9 @@ type ApplicationConfig struct { // *ApplicationConfig_StaticBuildpack // *ApplicationConfig_StaticCmd // *ApplicationConfig_StaticDockerfile + // *ApplicationConfig_FunctionBuildpack + // *ApplicationConfig_FunctionCmd + // *ApplicationConfig_FunctionDockerfile BuildConfig isApplicationConfig_BuildConfig `protobuf_oneof:"build_config"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1652,7 +1874,7 @@ type ApplicationConfig struct { func (x *ApplicationConfig) Reset() { *x = ApplicationConfig{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1664,7 +1886,7 @@ func (x *ApplicationConfig) String() string { func (*ApplicationConfig) ProtoMessage() {} func (x *ApplicationConfig) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[18] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1677,7 +1899,7 @@ func (x *ApplicationConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationConfig.ProtoReflect.Descriptor instead. func (*ApplicationConfig) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{18} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{22} } func (x *ApplicationConfig) GetBuildConfig() isApplicationConfig_BuildConfig { @@ -1741,6 +1963,33 @@ func (x *ApplicationConfig) GetStaticDockerfile() *BuildConfigStaticDockerfile { return nil } +func (x *ApplicationConfig) GetFunctionBuildpack() *BuildConfigFunctionBuildpack { + if x != nil { + if x, ok := x.BuildConfig.(*ApplicationConfig_FunctionBuildpack); ok { + return x.FunctionBuildpack + } + } + return nil +} + +func (x *ApplicationConfig) GetFunctionCmd() *BuildConfigFunctionCmd { + if x != nil { + if x, ok := x.BuildConfig.(*ApplicationConfig_FunctionCmd); ok { + return x.FunctionCmd + } + } + return nil +} + +func (x *ApplicationConfig) GetFunctionDockerfile() *BuildConfigFunctionDockerfile { + if x != nil { + if x, ok := x.BuildConfig.(*ApplicationConfig_FunctionDockerfile); ok { + return x.FunctionDockerfile + } + } + return nil +} + type isApplicationConfig_BuildConfig interface { isApplicationConfig_BuildConfig() } @@ -1769,6 +2018,18 @@ type ApplicationConfig_StaticDockerfile struct { StaticDockerfile *BuildConfigStaticDockerfile `protobuf:"bytes,6,opt,name=static_dockerfile,json=staticDockerfile,proto3,oneof"` } +type ApplicationConfig_FunctionBuildpack struct { + FunctionBuildpack *BuildConfigFunctionBuildpack `protobuf:"bytes,7,opt,name=function_buildpack,json=functionBuildpack,proto3,oneof"` +} + +type ApplicationConfig_FunctionCmd struct { + FunctionCmd *BuildConfigFunctionCmd `protobuf:"bytes,8,opt,name=function_cmd,json=functionCmd,proto3,oneof"` +} + +type ApplicationConfig_FunctionDockerfile struct { + FunctionDockerfile *BuildConfigFunctionDockerfile `protobuf:"bytes,9,opt,name=function_dockerfile,json=functionDockerfile,proto3,oneof"` +} + func (*ApplicationConfig_RuntimeBuildpack) isApplicationConfig_BuildConfig() {} func (*ApplicationConfig_RuntimeCmd) isApplicationConfig_BuildConfig() {} @@ -1781,6 +2042,12 @@ func (*ApplicationConfig_StaticCmd) isApplicationConfig_BuildConfig() {} func (*ApplicationConfig_StaticDockerfile) isApplicationConfig_BuildConfig() {} +func (*ApplicationConfig_FunctionBuildpack) isApplicationConfig_BuildConfig() {} + +func (*ApplicationConfig_FunctionCmd) isApplicationConfig_BuildConfig() {} + +func (*ApplicationConfig_FunctionDockerfile) isApplicationConfig_BuildConfig() {} + type Website struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -1797,7 +2064,7 @@ type Website struct { func (x *Website) Reset() { *x = Website{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1809,7 +2076,7 @@ func (x *Website) String() string { func (*Website) ProtoMessage() {} func (x *Website) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[19] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1822,7 +2089,7 @@ func (x *Website) ProtoReflect() protoreflect.Message { // Deprecated: Use Website.ProtoReflect.Descriptor instead. func (*Website) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{19} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{23} } func (x *Website) GetId() string { @@ -1892,7 +2159,7 @@ type PortPublication struct { func (x *PortPublication) Reset() { *x = PortPublication{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1904,7 +2171,7 @@ func (x *PortPublication) String() string { func (*PortPublication) ProtoMessage() {} func (x *PortPublication) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[20] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1917,7 +2184,7 @@ func (x *PortPublication) ProtoReflect() protoreflect.Message { // Deprecated: Use PortPublication.ProtoReflect.Descriptor instead. func (*PortPublication) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{20} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{24} } func (x *PortPublication) GetInternetPort() int32 { @@ -1966,7 +2233,7 @@ type Application struct { func (x *Application) Reset() { *x = Application{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1978,7 +2245,7 @@ func (x *Application) String() string { func (*Application) ProtoMessage() {} func (x *Application) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[21] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1991,7 +2258,7 @@ func (x *Application) ProtoReflect() protoreflect.Message { // Deprecated: Use Application.ProtoReflect.Descriptor instead. func (*Application) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{21} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{25} } func (x *Application) GetId() string { @@ -2125,7 +2392,7 @@ type ApplicationEnvVar struct { func (x *ApplicationEnvVar) Reset() { *x = ApplicationEnvVar{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2137,7 +2404,7 @@ func (x *ApplicationEnvVar) String() string { func (*ApplicationEnvVar) ProtoMessage() {} func (x *ApplicationEnvVar) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[22] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2150,7 +2417,7 @@ func (x *ApplicationEnvVar) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationEnvVar.ProtoReflect.Descriptor instead. func (*ApplicationEnvVar) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{22} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{26} } func (x *ApplicationEnvVar) GetApplicationId() string { @@ -2190,7 +2457,7 @@ type ApplicationEnvVars struct { func (x *ApplicationEnvVars) Reset() { *x = ApplicationEnvVars{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2202,7 +2469,7 @@ func (x *ApplicationEnvVars) String() string { func (*ApplicationEnvVars) ProtoMessage() {} func (x *ApplicationEnvVars) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[23] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2215,7 +2482,7 @@ func (x *ApplicationEnvVars) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationEnvVars.ProtoReflect.Descriptor instead. func (*ApplicationEnvVars) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{23} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{27} } func (x *ApplicationEnvVars) GetVariables() []*ApplicationEnvVar { @@ -2239,7 +2506,7 @@ type Artifact struct { func (x *Artifact) Reset() { *x = Artifact{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2251,7 +2518,7 @@ func (x *Artifact) String() string { func (*Artifact) ProtoMessage() {} func (x *Artifact) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[24] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2264,7 +2531,7 @@ func (x *Artifact) ProtoReflect() protoreflect.Message { // Deprecated: Use Artifact.ProtoReflect.Descriptor instead. func (*Artifact) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{24} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{28} } func (x *Artifact) GetId() string { @@ -2319,7 +2586,7 @@ type ArtifactContent struct { func (x *ArtifactContent) Reset() { *x = ArtifactContent{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2331,7 +2598,7 @@ func (x *ArtifactContent) String() string { func (*ArtifactContent) ProtoMessage() {} func (x *ArtifactContent) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[25] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2344,7 +2611,7 @@ func (x *ArtifactContent) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactContent.ProtoReflect.Descriptor instead. func (*ArtifactContent) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{25} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{29} } func (x *ArtifactContent) GetFilename() string { @@ -2373,7 +2640,7 @@ type RuntimeImage struct { func (x *RuntimeImage) Reset() { *x = RuntimeImage{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2385,7 +2652,7 @@ func (x *RuntimeImage) String() string { func (*RuntimeImage) ProtoMessage() {} func (x *RuntimeImage) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[26] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2398,7 +2665,7 @@ func (x *RuntimeImage) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeImage.ProtoReflect.Descriptor instead. func (*RuntimeImage) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{26} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{30} } func (x *RuntimeImage) GetId() string { @@ -2438,7 +2705,7 @@ type AvailableMetrics struct { func (x *AvailableMetrics) Reset() { *x = AvailableMetrics{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2450,7 +2717,7 @@ func (x *AvailableMetrics) String() string { func (*AvailableMetrics) ProtoMessage() {} func (x *AvailableMetrics) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[27] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2463,7 +2730,7 @@ func (x *AvailableMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use AvailableMetrics.ProtoReflect.Descriptor instead. func (*AvailableMetrics) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{27} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{31} } func (x *AvailableMetrics) GetMetricsNames() []string { @@ -2483,7 +2750,7 @@ type ApplicationMetric struct { func (x *ApplicationMetric) Reset() { *x = ApplicationMetric{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2495,7 +2762,7 @@ func (x *ApplicationMetric) String() string { func (*ApplicationMetric) ProtoMessage() {} func (x *ApplicationMetric) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[28] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2508,7 +2775,7 @@ func (x *ApplicationMetric) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationMetric.ProtoReflect.Descriptor instead. func (*ApplicationMetric) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{28} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{32} } func (x *ApplicationMetric) GetTime() *timestamppb.Timestamp { @@ -2534,7 +2801,7 @@ type ApplicationMetrics struct { func (x *ApplicationMetrics) Reset() { *x = ApplicationMetrics{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2546,7 +2813,7 @@ func (x *ApplicationMetrics) String() string { func (*ApplicationMetrics) ProtoMessage() {} func (x *ApplicationMetrics) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[29] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2559,7 +2826,7 @@ func (x *ApplicationMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationMetrics.ProtoReflect.Descriptor instead. func (*ApplicationMetrics) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{29} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{33} } func (x *ApplicationMetrics) GetMetrics() []*ApplicationMetric { @@ -2579,7 +2846,7 @@ type ApplicationOutput struct { func (x *ApplicationOutput) Reset() { *x = ApplicationOutput{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2591,7 +2858,7 @@ func (x *ApplicationOutput) String() string { func (*ApplicationOutput) ProtoMessage() {} func (x *ApplicationOutput) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[30] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2604,7 +2871,7 @@ func (x *ApplicationOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationOutput.ProtoReflect.Descriptor instead. func (*ApplicationOutput) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{30} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{34} } func (x *ApplicationOutput) GetTime() *timestamppb.Timestamp { @@ -2630,7 +2897,7 @@ type ApplicationOutputs struct { func (x *ApplicationOutputs) Reset() { *x = ApplicationOutputs{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2642,7 +2909,7 @@ func (x *ApplicationOutputs) String() string { func (*ApplicationOutputs) ProtoMessage() {} func (x *ApplicationOutputs) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[31] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2655,7 +2922,7 @@ func (x *ApplicationOutputs) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationOutputs.ProtoReflect.Descriptor instead. func (*ApplicationOutputs) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{31} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{35} } func (x *ApplicationOutputs) GetOutputs() []*ApplicationOutput { @@ -2684,7 +2951,7 @@ type Build struct { func (x *Build) Reset() { *x = Build{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2696,7 +2963,7 @@ func (x *Build) String() string { func (*Build) ProtoMessage() {} func (x *Build) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[32] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2709,7 +2976,7 @@ func (x *Build) ProtoReflect() protoreflect.Message { // Deprecated: Use Build.ProtoReflect.Descriptor instead. func (*Build) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{32} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{36} } func (x *Build) GetId() string { @@ -2798,7 +3065,7 @@ type BuildLog struct { func (x *BuildLog) Reset() { *x = BuildLog{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2810,7 +3077,7 @@ func (x *BuildLog) String() string { func (*BuildLog) ProtoMessage() {} func (x *BuildLog) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[33] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2823,7 +3090,7 @@ func (x *BuildLog) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildLog.ProtoReflect.Descriptor instead. func (*BuildLog) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{33} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{37} } func (x *BuildLog) GetLog() []byte { @@ -2843,7 +3110,7 @@ type GitRef struct { func (x *GitRef) Reset() { *x = GitRef{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2855,7 +3122,7 @@ func (x *GitRef) String() string { func (*GitRef) ProtoMessage() {} func (x *GitRef) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[34] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2868,7 +3135,7 @@ func (x *GitRef) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRef.ProtoReflect.Descriptor instead. func (*GitRef) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{34} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{38} } func (x *GitRef) GetRefName() string { @@ -2895,7 +3162,7 @@ type GenerateKeyPairResponse struct { func (x *GenerateKeyPairResponse) Reset() { *x = GenerateKeyPairResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2907,7 +3174,7 @@ func (x *GenerateKeyPairResponse) String() string { func (*GenerateKeyPairResponse) ProtoMessage() {} func (x *GenerateKeyPairResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[35] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2920,7 +3187,7 @@ func (x *GenerateKeyPairResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateKeyPairResponse.ProtoReflect.Descriptor instead. func (*GenerateKeyPairResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{35} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{39} } func (x *GenerateKeyPairResponse) GetKeyId() string { @@ -2946,7 +3213,7 @@ type GetUsersResponse struct { func (x *GetUsersResponse) Reset() { *x = GetUsersResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2958,7 +3225,7 @@ func (x *GetUsersResponse) String() string { func (*GetUsersResponse) ProtoMessage() {} func (x *GetUsersResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[36] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2971,7 +3238,7 @@ func (x *GetUsersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUsersResponse.ProtoReflect.Descriptor instead. func (*GetUsersResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{36} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{40} } func (x *GetUsersResponse) GetUsers() []*User { @@ -2990,7 +3257,7 @@ type GetUserKeysResponse struct { func (x *GetUserKeysResponse) Reset() { *x = GetUserKeysResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3002,7 +3269,7 @@ func (x *GetUserKeysResponse) String() string { func (*GetUserKeysResponse) ProtoMessage() {} func (x *GetUserKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[37] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3015,7 +3282,7 @@ func (x *GetUserKeysResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserKeysResponse.ProtoReflect.Descriptor instead. func (*GetUserKeysResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{37} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{41} } func (x *GetUserKeysResponse) GetKeys() []*UserKey { @@ -3035,7 +3302,7 @@ type CreateUserKeyRequest struct { func (x *CreateUserKeyRequest) Reset() { *x = CreateUserKeyRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3047,7 +3314,7 @@ func (x *CreateUserKeyRequest) String() string { func (*CreateUserKeyRequest) ProtoMessage() {} func (x *CreateUserKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[38] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3060,7 +3327,7 @@ func (x *CreateUserKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserKeyRequest.ProtoReflect.Descriptor instead. func (*CreateUserKeyRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{38} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{42} } func (x *CreateUserKeyRequest) GetPublicKey() string { @@ -3086,7 +3353,7 @@ type DeleteUserKeyRequest struct { func (x *DeleteUserKeyRequest) Reset() { *x = DeleteUserKeyRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3098,7 +3365,7 @@ func (x *DeleteUserKeyRequest) String() string { func (*DeleteUserKeyRequest) ProtoMessage() {} func (x *DeleteUserKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[39] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3111,7 +3378,7 @@ func (x *DeleteUserKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserKeyRequest.ProtoReflect.Descriptor instead. func (*DeleteUserKeyRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{39} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{43} } func (x *DeleteUserKeyRequest) GetKeyId() string { @@ -3131,7 +3398,7 @@ type CreateRepositoryAuthBasic struct { func (x *CreateRepositoryAuthBasic) Reset() { *x = CreateRepositoryAuthBasic{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3143,7 +3410,7 @@ func (x *CreateRepositoryAuthBasic) String() string { func (*CreateRepositoryAuthBasic) ProtoMessage() {} func (x *CreateRepositoryAuthBasic) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[40] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3156,7 +3423,7 @@ func (x *CreateRepositoryAuthBasic) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryAuthBasic.ProtoReflect.Descriptor instead. func (*CreateRepositoryAuthBasic) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{40} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44} } func (x *CreateRepositoryAuthBasic) GetUsername() string { @@ -3182,7 +3449,7 @@ type CreateRepositoryAuthSSH struct { func (x *CreateRepositoryAuthSSH) Reset() { *x = CreateRepositoryAuthSSH{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3194,7 +3461,7 @@ func (x *CreateRepositoryAuthSSH) String() string { func (*CreateRepositoryAuthSSH) ProtoMessage() {} func (x *CreateRepositoryAuthSSH) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[41] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3207,7 +3474,7 @@ func (x *CreateRepositoryAuthSSH) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryAuthSSH.ProtoReflect.Descriptor instead. func (*CreateRepositoryAuthSSH) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{41} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{45} } func (x *CreateRepositoryAuthSSH) GetKeyId() string { @@ -3231,7 +3498,7 @@ type CreateRepositoryAuth struct { func (x *CreateRepositoryAuth) Reset() { *x = CreateRepositoryAuth{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3243,7 +3510,7 @@ func (x *CreateRepositoryAuth) String() string { func (*CreateRepositoryAuth) ProtoMessage() {} func (x *CreateRepositoryAuth) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[42] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3256,7 +3523,7 @@ func (x *CreateRepositoryAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryAuth.ProtoReflect.Descriptor instead. func (*CreateRepositoryAuth) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{42} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{46} } func (x *CreateRepositoryAuth) GetAuth() isCreateRepositoryAuth_Auth { @@ -3326,7 +3593,7 @@ type CreateRepositoryRequest struct { func (x *CreateRepositoryRequest) Reset() { *x = CreateRepositoryRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3338,7 +3605,7 @@ func (x *CreateRepositoryRequest) String() string { func (*CreateRepositoryRequest) ProtoMessage() {} func (x *CreateRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[43] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3351,7 +3618,7 @@ func (x *CreateRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepositoryRequest.ProtoReflect.Descriptor instead. func (*CreateRepositoryRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{43} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{47} } func (x *CreateRepositoryRequest) GetName() string { @@ -3384,7 +3651,7 @@ type GetRepositoriesRequest struct { func (x *GetRepositoriesRequest) Reset() { *x = GetRepositoriesRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3396,7 +3663,7 @@ func (x *GetRepositoriesRequest) String() string { func (*GetRepositoriesRequest) ProtoMessage() {} func (x *GetRepositoriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[44] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3409,7 +3676,7 @@ func (x *GetRepositoriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoriesRequest.ProtoReflect.Descriptor instead. func (*GetRepositoriesRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{44} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{48} } func (x *GetRepositoriesRequest) GetScope() GetRepositoriesRequest_Scope { @@ -3432,7 +3699,7 @@ type UpdateRepositoryRequest struct { func (x *UpdateRepositoryRequest) Reset() { *x = UpdateRepositoryRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3444,7 +3711,7 @@ func (x *UpdateRepositoryRequest) String() string { func (*UpdateRepositoryRequest) ProtoMessage() {} func (x *UpdateRepositoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[45] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3457,7 +3724,7 @@ func (x *UpdateRepositoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRepositoryRequest.ProtoReflect.Descriptor instead. func (*UpdateRepositoryRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{45} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{49} } func (x *UpdateRepositoryRequest) GetId() string { @@ -3504,7 +3771,7 @@ type RepositoryIdRequest struct { func (x *RepositoryIdRequest) Reset() { *x = RepositoryIdRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3516,7 +3783,7 @@ func (x *RepositoryIdRequest) String() string { func (*RepositoryIdRequest) ProtoMessage() {} func (x *RepositoryIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[46] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3529,7 +3796,7 @@ func (x *RepositoryIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryIdRequest.ProtoReflect.Descriptor instead. func (*RepositoryIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{46} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{50} } func (x *RepositoryIdRequest) GetRepositoryId() string { @@ -3548,7 +3815,7 @@ type GetRepositoryCommitsRequest struct { func (x *GetRepositoryCommitsRequest) Reset() { *x = GetRepositoryCommitsRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3560,7 +3827,7 @@ func (x *GetRepositoryCommitsRequest) String() string { func (*GetRepositoryCommitsRequest) ProtoMessage() {} func (x *GetRepositoryCommitsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[47] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3573,7 +3840,7 @@ func (x *GetRepositoryCommitsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryCommitsRequest.ProtoReflect.Descriptor instead. func (*GetRepositoryCommitsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{47} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{51} } func (x *GetRepositoryCommitsRequest) GetHashes() []string { @@ -3592,7 +3859,7 @@ type GetRepositoryCommitsResponse struct { func (x *GetRepositoryCommitsResponse) Reset() { *x = GetRepositoryCommitsResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3604,7 +3871,7 @@ func (x *GetRepositoryCommitsResponse) String() string { func (*GetRepositoryCommitsResponse) ProtoMessage() {} func (x *GetRepositoryCommitsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[48] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3617,7 +3884,7 @@ func (x *GetRepositoryCommitsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryCommitsResponse.ProtoReflect.Descriptor instead. func (*GetRepositoryCommitsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{48} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52} } func (x *GetRepositoryCommitsResponse) GetCommits() []*SimpleCommit { @@ -3642,7 +3909,7 @@ type CreateWebsiteRequest struct { func (x *CreateWebsiteRequest) Reset() { *x = CreateWebsiteRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3654,7 +3921,7 @@ func (x *CreateWebsiteRequest) String() string { func (*CreateWebsiteRequest) ProtoMessage() {} func (x *CreateWebsiteRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[49] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3667,7 +3934,7 @@ func (x *CreateWebsiteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateWebsiteRequest.ProtoReflect.Descriptor instead. func (*CreateWebsiteRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{49} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53} } func (x *CreateWebsiteRequest) GetFqdn() string { @@ -3728,7 +3995,7 @@ type DeleteWebsiteRequest struct { func (x *DeleteWebsiteRequest) Reset() { *x = DeleteWebsiteRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3740,7 +4007,7 @@ func (x *DeleteWebsiteRequest) String() string { func (*DeleteWebsiteRequest) ProtoMessage() {} func (x *DeleteWebsiteRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[50] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3753,7 +4020,7 @@ func (x *DeleteWebsiteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWebsiteRequest.ProtoReflect.Descriptor instead. func (*DeleteWebsiteRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{50} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{54} } func (x *DeleteWebsiteRequest) GetId() string { @@ -3778,7 +4045,7 @@ type CreateApplicationRequest struct { func (x *CreateApplicationRequest) Reset() { *x = CreateApplicationRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3790,7 +4057,7 @@ func (x *CreateApplicationRequest) String() string { func (*CreateApplicationRequest) ProtoMessage() {} func (x *CreateApplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[51] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3803,7 +4070,7 @@ func (x *CreateApplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateApplicationRequest.ProtoReflect.Descriptor instead. func (*CreateApplicationRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{51} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{55} } func (x *CreateApplicationRequest) GetName() string { @@ -3865,7 +4132,7 @@ type GetApplicationsRequest struct { func (x *GetApplicationsRequest) Reset() { *x = GetApplicationsRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3877,7 +4144,7 @@ func (x *GetApplicationsRequest) String() string { func (*GetApplicationsRequest) ProtoMessage() {} func (x *GetApplicationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[52] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3890,7 +4157,7 @@ func (x *GetApplicationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationsRequest.ProtoReflect.Descriptor instead. func (*GetApplicationsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{52} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{56} } func (x *GetApplicationsRequest) GetScope() GetApplicationsRequest_Scope { @@ -3923,7 +4190,7 @@ type UpdateApplicationRequest struct { func (x *UpdateApplicationRequest) Reset() { *x = UpdateApplicationRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3935,7 +4202,7 @@ func (x *UpdateApplicationRequest) String() string { func (*UpdateApplicationRequest) ProtoMessage() {} func (x *UpdateApplicationRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[53] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3948,7 +4215,7 @@ func (x *UpdateApplicationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateApplicationRequest.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57} } func (x *UpdateApplicationRequest) GetId() string { @@ -4016,7 +4283,7 @@ type GetRepositoriesResponse struct { func (x *GetRepositoriesResponse) Reset() { *x = GetRepositoriesResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4028,7 +4295,7 @@ func (x *GetRepositoriesResponse) String() string { func (*GetRepositoriesResponse) ProtoMessage() {} func (x *GetRepositoriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[54] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4041,7 +4308,7 @@ func (x *GetRepositoriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoriesResponse.ProtoReflect.Descriptor instead. func (*GetRepositoriesResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{54} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{58} } func (x *GetRepositoriesResponse) GetRepositories() []*Repository { @@ -4060,7 +4327,7 @@ type GetApplicationsResponse struct { func (x *GetApplicationsResponse) Reset() { *x = GetApplicationsResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4072,7 +4339,7 @@ func (x *GetApplicationsResponse) String() string { func (*GetApplicationsResponse) ProtoMessage() {} func (x *GetApplicationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[55] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4085,7 +4352,7 @@ func (x *GetApplicationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationsResponse.ProtoReflect.Descriptor instead. func (*GetApplicationsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{55} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{59} } func (x *GetApplicationsResponse) GetApplications() []*Application { @@ -4104,7 +4371,7 @@ type ApplicationIdRequest struct { func (x *ApplicationIdRequest) Reset() { *x = ApplicationIdRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4116,7 +4383,7 @@ func (x *ApplicationIdRequest) String() string { func (*ApplicationIdRequest) ProtoMessage() {} func (x *ApplicationIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[56] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4129,7 +4396,7 @@ func (x *ApplicationIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationIdRequest.ProtoReflect.Descriptor instead. func (*ApplicationIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{56} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{60} } func (x *ApplicationIdRequest) GetId() string { @@ -4150,7 +4417,7 @@ type GetAllBuildsRequest struct { func (x *GetAllBuildsRequest) Reset() { *x = GetAllBuildsRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4162,7 +4429,7 @@ func (x *GetAllBuildsRequest) String() string { func (*GetAllBuildsRequest) ProtoMessage() {} func (x *GetAllBuildsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[57] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4175,7 +4442,7 @@ func (x *GetAllBuildsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllBuildsRequest.ProtoReflect.Descriptor instead. func (*GetAllBuildsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{61} } func (x *GetAllBuildsRequest) GetPage() int32 { @@ -4201,7 +4468,7 @@ type BuildIdRequest struct { func (x *BuildIdRequest) Reset() { *x = BuildIdRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4213,7 +4480,7 @@ func (x *BuildIdRequest) String() string { func (*BuildIdRequest) ProtoMessage() {} func (x *BuildIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[58] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4226,7 +4493,7 @@ func (x *BuildIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildIdRequest.ProtoReflect.Descriptor instead. func (*BuildIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{58} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{62} } func (x *BuildIdRequest) GetBuildId() string { @@ -4245,7 +4512,7 @@ type ArtifactIdRequest struct { func (x *ArtifactIdRequest) Reset() { *x = ArtifactIdRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4257,7 +4524,7 @@ func (x *ArtifactIdRequest) String() string { func (*ArtifactIdRequest) ProtoMessage() {} func (x *ArtifactIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[59] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4270,7 +4537,7 @@ func (x *ArtifactIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ArtifactIdRequest.ProtoReflect.Descriptor instead. func (*ArtifactIdRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{59} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{63} } func (x *ArtifactIdRequest) GetArtifactId() string { @@ -4289,7 +4556,7 @@ type GetBuildsResponse struct { func (x *GetBuildsResponse) Reset() { *x = GetBuildsResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4301,7 +4568,7 @@ func (x *GetBuildsResponse) String() string { func (*GetBuildsResponse) ProtoMessage() {} func (x *GetBuildsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[60] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4314,7 +4581,7 @@ func (x *GetBuildsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBuildsResponse.ProtoReflect.Descriptor instead. func (*GetBuildsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{60} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{64} } func (x *GetBuildsResponse) GetBuilds() []*Build { @@ -4335,7 +4602,7 @@ type SetApplicationEnvVarRequest struct { func (x *SetApplicationEnvVarRequest) Reset() { *x = SetApplicationEnvVarRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4347,7 +4614,7 @@ func (x *SetApplicationEnvVarRequest) String() string { func (*SetApplicationEnvVarRequest) ProtoMessage() {} func (x *SetApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[61] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4360,7 +4627,7 @@ func (x *SetApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetApplicationEnvVarRequest.ProtoReflect.Descriptor instead. func (*SetApplicationEnvVarRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{61} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{65} } func (x *SetApplicationEnvVarRequest) GetApplicationId() string { @@ -4394,7 +4661,7 @@ type DeleteApplicationEnvVarRequest struct { func (x *DeleteApplicationEnvVarRequest) Reset() { *x = DeleteApplicationEnvVarRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4406,7 +4673,7 @@ func (x *DeleteApplicationEnvVarRequest) String() string { func (*DeleteApplicationEnvVarRequest) ProtoMessage() {} func (x *DeleteApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[62] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4419,7 +4686,7 @@ func (x *DeleteApplicationEnvVarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteApplicationEnvVarRequest.ProtoReflect.Descriptor instead. func (*DeleteApplicationEnvVarRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{62} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{66} } func (x *DeleteApplicationEnvVarRequest) GetApplicationId() string { @@ -4448,7 +4715,7 @@ type GetApplicationMetricsRequest struct { func (x *GetApplicationMetricsRequest) Reset() { *x = GetApplicationMetricsRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4460,7 +4727,7 @@ func (x *GetApplicationMetricsRequest) String() string { func (*GetApplicationMetricsRequest) ProtoMessage() {} func (x *GetApplicationMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[63] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4473,7 +4740,7 @@ func (x *GetApplicationMetricsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetApplicationMetricsRequest.ProtoReflect.Descriptor instead. func (*GetApplicationMetricsRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{63} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{67} } func (x *GetApplicationMetricsRequest) GetApplicationId() string { @@ -4515,7 +4782,7 @@ type GetOutputRequest struct { func (x *GetOutputRequest) Reset() { *x = GetOutputRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4527,7 +4794,7 @@ func (x *GetOutputRequest) String() string { func (*GetOutputRequest) ProtoMessage() {} func (x *GetOutputRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[64] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4540,7 +4807,7 @@ func (x *GetOutputRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutputRequest.ProtoReflect.Descriptor instead. func (*GetOutputRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{64} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{68} } func (x *GetOutputRequest) GetApplicationId() string { @@ -4574,7 +4841,7 @@ type GetOutputStreamRequest struct { func (x *GetOutputStreamRequest) Reset() { *x = GetOutputStreamRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4586,7 +4853,7 @@ func (x *GetOutputStreamRequest) String() string { func (*GetOutputStreamRequest) ProtoMessage() {} func (x *GetOutputStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[65] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4599,7 +4866,7 @@ func (x *GetOutputStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOutputStreamRequest.ProtoReflect.Descriptor instead. func (*GetOutputStreamRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{65} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{69} } func (x *GetOutputStreamRequest) GetApplicationId() string { @@ -4626,7 +4893,7 @@ type RetryCommitBuildRequest struct { func (x *RetryCommitBuildRequest) Reset() { *x = RetryCommitBuildRequest{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4638,7 +4905,7 @@ func (x *RetryCommitBuildRequest) String() string { func (*RetryCommitBuildRequest) ProtoMessage() {} func (x *RetryCommitBuildRequest) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[66] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4651,7 +4918,7 @@ func (x *RetryCommitBuildRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryCommitBuildRequest.ProtoReflect.Descriptor instead. func (*RetryCommitBuildRequest) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{66} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{70} } func (x *RetryCommitBuildRequest) GetApplicationId() string { @@ -4677,7 +4944,7 @@ type GetRepositoryRefsResponse struct { func (x *GetRepositoryRefsResponse) Reset() { *x = GetRepositoryRefsResponse{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4689,7 +4956,7 @@ func (x *GetRepositoryRefsResponse) String() string { func (*GetRepositoryRefsResponse) ProtoMessage() {} func (x *GetRepositoryRefsResponse) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[67] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4702,7 +4969,7 @@ func (x *GetRepositoryRefsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepositoryRefsResponse.ProtoReflect.Descriptor instead. func (*GetRepositoryRefsResponse) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{67} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{71} } func (x *GetRepositoryRefsResponse) GetRefs() []*GitRef { @@ -4721,7 +4988,7 @@ type UpdateRepositoryRequest_UpdateOwners struct { func (x *UpdateRepositoryRequest_UpdateOwners) Reset() { *x = UpdateRepositoryRequest_UpdateOwners{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4733,7 +5000,7 @@ func (x *UpdateRepositoryRequest_UpdateOwners) String() string { func (*UpdateRepositoryRequest_UpdateOwners) ProtoMessage() {} func (x *UpdateRepositoryRequest_UpdateOwners) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[68] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4746,7 +5013,7 @@ func (x *UpdateRepositoryRequest_UpdateOwners) ProtoReflect() protoreflect.Messa // Deprecated: Use UpdateRepositoryRequest_UpdateOwners.ProtoReflect.Descriptor instead. func (*UpdateRepositoryRequest_UpdateOwners) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{45, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{49, 0} } func (x *UpdateRepositoryRequest_UpdateOwners) GetOwnerIds() []string { @@ -4765,7 +5032,7 @@ type UpdateApplicationRequest_UpdateWebsites struct { func (x *UpdateApplicationRequest_UpdateWebsites) Reset() { *x = UpdateApplicationRequest_UpdateWebsites{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4777,7 +5044,7 @@ func (x *UpdateApplicationRequest_UpdateWebsites) String() string { func (*UpdateApplicationRequest_UpdateWebsites) ProtoMessage() {} func (x *UpdateApplicationRequest_UpdateWebsites) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[69] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4790,7 +5057,7 @@ func (x *UpdateApplicationRequest_UpdateWebsites) ProtoReflect() protoreflect.Me // Deprecated: Use UpdateApplicationRequest_UpdateWebsites.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest_UpdateWebsites) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53, 0} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57, 0} } func (x *UpdateApplicationRequest_UpdateWebsites) GetWebsites() []*CreateWebsiteRequest { @@ -4809,7 +5076,7 @@ type UpdateApplicationRequest_UpdatePorts struct { func (x *UpdateApplicationRequest_UpdatePorts) Reset() { *x = UpdateApplicationRequest_UpdatePorts{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4821,7 +5088,7 @@ func (x *UpdateApplicationRequest_UpdatePorts) String() string { func (*UpdateApplicationRequest_UpdatePorts) ProtoMessage() {} func (x *UpdateApplicationRequest_UpdatePorts) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[70] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4834,7 +5101,7 @@ func (x *UpdateApplicationRequest_UpdatePorts) ProtoReflect() protoreflect.Messa // Deprecated: Use UpdateApplicationRequest_UpdatePorts.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest_UpdatePorts) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53, 1} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57, 1} } func (x *UpdateApplicationRequest_UpdatePorts) GetPortPublications() []*PortPublication { @@ -4853,7 +5120,7 @@ type UpdateApplicationRequest_UpdateOwners struct { func (x *UpdateApplicationRequest_UpdateOwners) Reset() { *x = UpdateApplicationRequest_UpdateOwners{} - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[71] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4865,7 +5132,7 @@ func (x *UpdateApplicationRequest_UpdateOwners) String() string { func (*UpdateApplicationRequest_UpdateOwners) ProtoMessage() {} func (x *UpdateApplicationRequest_UpdateOwners) ProtoReflect() protoreflect.Message { - mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[71] + mi := &file_neoshowcase_protobuf_gateway_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4878,7 +5145,7 @@ func (x *UpdateApplicationRequest_UpdateOwners) ProtoReflect() protoreflect.Mess // Deprecated: Use UpdateApplicationRequest_UpdateOwners.ProtoReflect.Descriptor instead. func (*UpdateApplicationRequest_UpdateOwners) Descriptor() ([]byte, []int) { - return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{53, 2} + return file_neoshowcase_protobuf_gateway_proto_rawDescGZIP(), []int{57, 2} } func (x *UpdateApplicationRequest_UpdateOwners) GetOwnerIds() []string { @@ -4985,7 +5252,9 @@ const file_neoshowcase_protobuf_gateway_proto_rawDesc = "" + "\acontext\x18\x03 \x01(\tR\acontext\"E\n" + "\fStaticConfig\x12#\n" + "\rartifact_path\x18\x01 \x01(\tR\fartifactPath\x12\x10\n" + - "\x03spa\x18\x02 \x01(\bR\x03spa\"\x7f\n" + + "\x03spa\x18\x02 \x01(\bR\x03spa\"5\n" + + "\x0eFunctionConfig\x12#\n" + + "\rartifact_path\x18\x01 \x01(\tR\fartifactPath\"\x7f\n" + "\x1aBuildConfigStaticBuildpack\x12G\n" + "\rstatic_config\x18\x01 \x01(\v2\".neoshowcase.protobuf.StaticConfigR\fstaticConfig\x12\x18\n" + "\acontext\x18\x02 \x01(\tR\acontext\"\x9b\x01\n" + @@ -4997,7 +5266,19 @@ const file_neoshowcase_protobuf_gateway_proto_rawDesc = "" + "\x1bBuildConfigStaticDockerfile\x12G\n" + "\rstatic_config\x18\x01 \x01(\v2\".neoshowcase.protobuf.StaticConfigR\fstaticConfig\x12'\n" + "\x0fdockerfile_name\x18\x02 \x01(\tR\x0edockerfileName\x12\x18\n" + - "\acontext\x18\x03 \x01(\tR\acontext\"\xc8\x04\n" + + "\acontext\x18\x03 \x01(\tR\acontext\"\x87\x01\n" + + "\x1cBuildConfigFunctionBuildpack\x12M\n" + + "\x0ffunction_config\x18\x01 \x01(\v2$.neoshowcase.protobuf.FunctionConfigR\x0efunctionConfig\x12\x18\n" + + "\acontext\x18\x02 \x01(\tR\acontext\"\xa3\x01\n" + + "\x16BuildConfigFunctionCmd\x12M\n" + + "\x0ffunction_config\x18\x01 \x01(\v2$.neoshowcase.protobuf.FunctionConfigR\x0efunctionConfig\x12\x1d\n" + + "\n" + + "base_image\x18\x02 \x01(\tR\tbaseImage\x12\x1b\n" + + "\tbuild_cmd\x18\x03 \x01(\tR\bbuildCmd\"\xb1\x01\n" + + "\x1dBuildConfigFunctionDockerfile\x12M\n" + + "\x0ffunction_config\x18\x01 \x01(\v2$.neoshowcase.protobuf.FunctionConfigR\x0efunctionConfig\x12'\n" + + "\x0fdockerfile_name\x18\x02 \x01(\tR\x0edockerfileName\x12\x18\n" + + "\acontext\x18\x03 \x01(\tR\acontext\"\xe8\x06\n" + "\x11ApplicationConfig\x12`\n" + "\x11runtime_buildpack\x18\x01 \x01(\v21.neoshowcase.protobuf.BuildConfigRuntimeBuildpackH\x00R\x10runtimeBuildpack\x12N\n" + "\vruntime_cmd\x18\x02 \x01(\v2+.neoshowcase.protobuf.BuildConfigRuntimeCmdH\x00R\n" + @@ -5006,7 +5287,10 @@ const file_neoshowcase_protobuf_gateway_proto_rawDesc = "" + "\x10static_buildpack\x18\x04 \x01(\v20.neoshowcase.protobuf.BuildConfigStaticBuildpackH\x00R\x0fstaticBuildpack\x12K\n" + "\n" + "static_cmd\x18\x05 \x01(\v2*.neoshowcase.protobuf.BuildConfigStaticCmdH\x00R\tstaticCmd\x12`\n" + - "\x11static_dockerfile\x18\x06 \x01(\v21.neoshowcase.protobuf.BuildConfigStaticDockerfileH\x00R\x10staticDockerfileB\x0e\n" + + "\x11static_dockerfile\x18\x06 \x01(\v21.neoshowcase.protobuf.BuildConfigStaticDockerfileH\x00R\x10staticDockerfile\x12c\n" + + "\x12function_buildpack\x18\a \x01(\v22.neoshowcase.protobuf.BuildConfigFunctionBuildpackH\x00R\x11functionBuildpack\x12Q\n" + + "\ffunction_cmd\x18\b \x01(\v2,.neoshowcase.protobuf.BuildConfigFunctionCmdH\x00R\vfunctionCmd\x12f\n" + + "\x13function_dockerfile\x18\t \x01(\v23.neoshowcase.protobuf.BuildConfigFunctionDockerfileH\x00R\x12functionDockerfileB\x0e\n" + "\fbuild_config\"\x88\x02\n" + "\aWebsite\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + @@ -5259,12 +5543,13 @@ const file_neoshowcase_protobuf_gateway_proto_rawDesc = "" + "\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12\x16\n" + "\x06commit\x18\x02 \x01(\tR\x06commit\"M\n" + "\x19GetRepositoryRefsResponse\x120\n" + - "\x04refs\x18\x01 \x03(\v2\x1c.neoshowcase.protobuf.GitRefR\x04refs*%\n" + + "\x04refs\x18\x01 \x03(\v2\x1c.neoshowcase.protobuf.GitRefR\x04refs*3\n" + "\n" + "DeployType\x12\v\n" + "\aRUNTIME\x10\x00\x12\n" + "\n" + - "\x06STATIC\x10\x01*1\n" + + "\x06STATIC\x10\x01\x12\f\n" + + "\bFUNCTION\x10\x02*1\n" + "\x12AuthenticationType\x12\a\n" + "\x03OFF\x10\x00\x12\b\n" + "\x04SOFT\x10\x01\x12\b\n" + @@ -5336,7 +5621,7 @@ func file_neoshowcase_protobuf_gateway_proto_rawDescGZIP() []byte { } var file_neoshowcase_protobuf_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_neoshowcase_protobuf_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 72) +var file_neoshowcase_protobuf_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 76) var file_neoshowcase_protobuf_gateway_proto_goTypes = []any{ (DeployType)(0), // 0: neoshowcase.protobuf.DeployType (AuthenticationType)(0), // 1: neoshowcase.protobuf.AuthenticationType @@ -5362,66 +5647,70 @@ var file_neoshowcase_protobuf_gateway_proto_goTypes = []any{ (*BuildConfigRuntimeCmd)(nil), // 21: neoshowcase.protobuf.BuildConfigRuntimeCmd (*BuildConfigRuntimeDockerfile)(nil), // 22: neoshowcase.protobuf.BuildConfigRuntimeDockerfile (*StaticConfig)(nil), // 23: neoshowcase.protobuf.StaticConfig - (*BuildConfigStaticBuildpack)(nil), // 24: neoshowcase.protobuf.BuildConfigStaticBuildpack - (*BuildConfigStaticCmd)(nil), // 25: neoshowcase.protobuf.BuildConfigStaticCmd - (*BuildConfigStaticDockerfile)(nil), // 26: neoshowcase.protobuf.BuildConfigStaticDockerfile - (*ApplicationConfig)(nil), // 27: neoshowcase.protobuf.ApplicationConfig - (*Website)(nil), // 28: neoshowcase.protobuf.Website - (*PortPublication)(nil), // 29: neoshowcase.protobuf.PortPublication - (*Application)(nil), // 30: neoshowcase.protobuf.Application - (*ApplicationEnvVar)(nil), // 31: neoshowcase.protobuf.ApplicationEnvVar - (*ApplicationEnvVars)(nil), // 32: neoshowcase.protobuf.ApplicationEnvVars - (*Artifact)(nil), // 33: neoshowcase.protobuf.Artifact - (*ArtifactContent)(nil), // 34: neoshowcase.protobuf.ArtifactContent - (*RuntimeImage)(nil), // 35: neoshowcase.protobuf.RuntimeImage - (*AvailableMetrics)(nil), // 36: neoshowcase.protobuf.AvailableMetrics - (*ApplicationMetric)(nil), // 37: neoshowcase.protobuf.ApplicationMetric - (*ApplicationMetrics)(nil), // 38: neoshowcase.protobuf.ApplicationMetrics - (*ApplicationOutput)(nil), // 39: neoshowcase.protobuf.ApplicationOutput - (*ApplicationOutputs)(nil), // 40: neoshowcase.protobuf.ApplicationOutputs - (*Build)(nil), // 41: neoshowcase.protobuf.Build - (*BuildLog)(nil), // 42: neoshowcase.protobuf.BuildLog - (*GitRef)(nil), // 43: neoshowcase.protobuf.GitRef - (*GenerateKeyPairResponse)(nil), // 44: neoshowcase.protobuf.GenerateKeyPairResponse - (*GetUsersResponse)(nil), // 45: neoshowcase.protobuf.GetUsersResponse - (*GetUserKeysResponse)(nil), // 46: neoshowcase.protobuf.GetUserKeysResponse - (*CreateUserKeyRequest)(nil), // 47: neoshowcase.protobuf.CreateUserKeyRequest - (*DeleteUserKeyRequest)(nil), // 48: neoshowcase.protobuf.DeleteUserKeyRequest - (*CreateRepositoryAuthBasic)(nil), // 49: neoshowcase.protobuf.CreateRepositoryAuthBasic - (*CreateRepositoryAuthSSH)(nil), // 50: neoshowcase.protobuf.CreateRepositoryAuthSSH - (*CreateRepositoryAuth)(nil), // 51: neoshowcase.protobuf.CreateRepositoryAuth - (*CreateRepositoryRequest)(nil), // 52: neoshowcase.protobuf.CreateRepositoryRequest - (*GetRepositoriesRequest)(nil), // 53: neoshowcase.protobuf.GetRepositoriesRequest - (*UpdateRepositoryRequest)(nil), // 54: neoshowcase.protobuf.UpdateRepositoryRequest - (*RepositoryIdRequest)(nil), // 55: neoshowcase.protobuf.RepositoryIdRequest - (*GetRepositoryCommitsRequest)(nil), // 56: neoshowcase.protobuf.GetRepositoryCommitsRequest - (*GetRepositoryCommitsResponse)(nil), // 57: neoshowcase.protobuf.GetRepositoryCommitsResponse - (*CreateWebsiteRequest)(nil), // 58: neoshowcase.protobuf.CreateWebsiteRequest - (*DeleteWebsiteRequest)(nil), // 59: neoshowcase.protobuf.DeleteWebsiteRequest - (*CreateApplicationRequest)(nil), // 60: neoshowcase.protobuf.CreateApplicationRequest - (*GetApplicationsRequest)(nil), // 61: neoshowcase.protobuf.GetApplicationsRequest - (*UpdateApplicationRequest)(nil), // 62: neoshowcase.protobuf.UpdateApplicationRequest - (*GetRepositoriesResponse)(nil), // 63: neoshowcase.protobuf.GetRepositoriesResponse - (*GetApplicationsResponse)(nil), // 64: neoshowcase.protobuf.GetApplicationsResponse - (*ApplicationIdRequest)(nil), // 65: neoshowcase.protobuf.ApplicationIdRequest - (*GetAllBuildsRequest)(nil), // 66: neoshowcase.protobuf.GetAllBuildsRequest - (*BuildIdRequest)(nil), // 67: neoshowcase.protobuf.BuildIdRequest - (*ArtifactIdRequest)(nil), // 68: neoshowcase.protobuf.ArtifactIdRequest - (*GetBuildsResponse)(nil), // 69: neoshowcase.protobuf.GetBuildsResponse - (*SetApplicationEnvVarRequest)(nil), // 70: neoshowcase.protobuf.SetApplicationEnvVarRequest - (*DeleteApplicationEnvVarRequest)(nil), // 71: neoshowcase.protobuf.DeleteApplicationEnvVarRequest - (*GetApplicationMetricsRequest)(nil), // 72: neoshowcase.protobuf.GetApplicationMetricsRequest - (*GetOutputRequest)(nil), // 73: neoshowcase.protobuf.GetOutputRequest - (*GetOutputStreamRequest)(nil), // 74: neoshowcase.protobuf.GetOutputStreamRequest - (*RetryCommitBuildRequest)(nil), // 75: neoshowcase.protobuf.RetryCommitBuildRequest - (*GetRepositoryRefsResponse)(nil), // 76: neoshowcase.protobuf.GetRepositoryRefsResponse - (*UpdateRepositoryRequest_UpdateOwners)(nil), // 77: neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners - (*UpdateApplicationRequest_UpdateWebsites)(nil), // 78: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites - (*UpdateApplicationRequest_UpdatePorts)(nil), // 79: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts - (*UpdateApplicationRequest_UpdateOwners)(nil), // 80: neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners - (*timestamppb.Timestamp)(nil), // 81: google.protobuf.Timestamp - (*NullTimestamp)(nil), // 82: neoshowcase.protobuf.NullTimestamp - (*emptypb.Empty)(nil), // 83: google.protobuf.Empty + (*FunctionConfig)(nil), // 24: neoshowcase.protobuf.FunctionConfig + (*BuildConfigStaticBuildpack)(nil), // 25: neoshowcase.protobuf.BuildConfigStaticBuildpack + (*BuildConfigStaticCmd)(nil), // 26: neoshowcase.protobuf.BuildConfigStaticCmd + (*BuildConfigStaticDockerfile)(nil), // 27: neoshowcase.protobuf.BuildConfigStaticDockerfile + (*BuildConfigFunctionBuildpack)(nil), // 28: neoshowcase.protobuf.BuildConfigFunctionBuildpack + (*BuildConfigFunctionCmd)(nil), // 29: neoshowcase.protobuf.BuildConfigFunctionCmd + (*BuildConfigFunctionDockerfile)(nil), // 30: neoshowcase.protobuf.BuildConfigFunctionDockerfile + (*ApplicationConfig)(nil), // 31: neoshowcase.protobuf.ApplicationConfig + (*Website)(nil), // 32: neoshowcase.protobuf.Website + (*PortPublication)(nil), // 33: neoshowcase.protobuf.PortPublication + (*Application)(nil), // 34: neoshowcase.protobuf.Application + (*ApplicationEnvVar)(nil), // 35: neoshowcase.protobuf.ApplicationEnvVar + (*ApplicationEnvVars)(nil), // 36: neoshowcase.protobuf.ApplicationEnvVars + (*Artifact)(nil), // 37: neoshowcase.protobuf.Artifact + (*ArtifactContent)(nil), // 38: neoshowcase.protobuf.ArtifactContent + (*RuntimeImage)(nil), // 39: neoshowcase.protobuf.RuntimeImage + (*AvailableMetrics)(nil), // 40: neoshowcase.protobuf.AvailableMetrics + (*ApplicationMetric)(nil), // 41: neoshowcase.protobuf.ApplicationMetric + (*ApplicationMetrics)(nil), // 42: neoshowcase.protobuf.ApplicationMetrics + (*ApplicationOutput)(nil), // 43: neoshowcase.protobuf.ApplicationOutput + (*ApplicationOutputs)(nil), // 44: neoshowcase.protobuf.ApplicationOutputs + (*Build)(nil), // 45: neoshowcase.protobuf.Build + (*BuildLog)(nil), // 46: neoshowcase.protobuf.BuildLog + (*GitRef)(nil), // 47: neoshowcase.protobuf.GitRef + (*GenerateKeyPairResponse)(nil), // 48: neoshowcase.protobuf.GenerateKeyPairResponse + (*GetUsersResponse)(nil), // 49: neoshowcase.protobuf.GetUsersResponse + (*GetUserKeysResponse)(nil), // 50: neoshowcase.protobuf.GetUserKeysResponse + (*CreateUserKeyRequest)(nil), // 51: neoshowcase.protobuf.CreateUserKeyRequest + (*DeleteUserKeyRequest)(nil), // 52: neoshowcase.protobuf.DeleteUserKeyRequest + (*CreateRepositoryAuthBasic)(nil), // 53: neoshowcase.protobuf.CreateRepositoryAuthBasic + (*CreateRepositoryAuthSSH)(nil), // 54: neoshowcase.protobuf.CreateRepositoryAuthSSH + (*CreateRepositoryAuth)(nil), // 55: neoshowcase.protobuf.CreateRepositoryAuth + (*CreateRepositoryRequest)(nil), // 56: neoshowcase.protobuf.CreateRepositoryRequest + (*GetRepositoriesRequest)(nil), // 57: neoshowcase.protobuf.GetRepositoriesRequest + (*UpdateRepositoryRequest)(nil), // 58: neoshowcase.protobuf.UpdateRepositoryRequest + (*RepositoryIdRequest)(nil), // 59: neoshowcase.protobuf.RepositoryIdRequest + (*GetRepositoryCommitsRequest)(nil), // 60: neoshowcase.protobuf.GetRepositoryCommitsRequest + (*GetRepositoryCommitsResponse)(nil), // 61: neoshowcase.protobuf.GetRepositoryCommitsResponse + (*CreateWebsiteRequest)(nil), // 62: neoshowcase.protobuf.CreateWebsiteRequest + (*DeleteWebsiteRequest)(nil), // 63: neoshowcase.protobuf.DeleteWebsiteRequest + (*CreateApplicationRequest)(nil), // 64: neoshowcase.protobuf.CreateApplicationRequest + (*GetApplicationsRequest)(nil), // 65: neoshowcase.protobuf.GetApplicationsRequest + (*UpdateApplicationRequest)(nil), // 66: neoshowcase.protobuf.UpdateApplicationRequest + (*GetRepositoriesResponse)(nil), // 67: neoshowcase.protobuf.GetRepositoriesResponse + (*GetApplicationsResponse)(nil), // 68: neoshowcase.protobuf.GetApplicationsResponse + (*ApplicationIdRequest)(nil), // 69: neoshowcase.protobuf.ApplicationIdRequest + (*GetAllBuildsRequest)(nil), // 70: neoshowcase.protobuf.GetAllBuildsRequest + (*BuildIdRequest)(nil), // 71: neoshowcase.protobuf.BuildIdRequest + (*ArtifactIdRequest)(nil), // 72: neoshowcase.protobuf.ArtifactIdRequest + (*GetBuildsResponse)(nil), // 73: neoshowcase.protobuf.GetBuildsResponse + (*SetApplicationEnvVarRequest)(nil), // 74: neoshowcase.protobuf.SetApplicationEnvVarRequest + (*DeleteApplicationEnvVarRequest)(nil), // 75: neoshowcase.protobuf.DeleteApplicationEnvVarRequest + (*GetApplicationMetricsRequest)(nil), // 76: neoshowcase.protobuf.GetApplicationMetricsRequest + (*GetOutputRequest)(nil), // 77: neoshowcase.protobuf.GetOutputRequest + (*GetOutputStreamRequest)(nil), // 78: neoshowcase.protobuf.GetOutputStreamRequest + (*RetryCommitBuildRequest)(nil), // 79: neoshowcase.protobuf.RetryCommitBuildRequest + (*GetRepositoryRefsResponse)(nil), // 80: neoshowcase.protobuf.GetRepositoryRefsResponse + (*UpdateRepositoryRequest_UpdateOwners)(nil), // 81: neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners + (*UpdateApplicationRequest_UpdateWebsites)(nil), // 82: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites + (*UpdateApplicationRequest_UpdatePorts)(nil), // 83: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts + (*UpdateApplicationRequest_UpdateOwners)(nil), // 84: neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners + (*timestamppb.Timestamp)(nil), // 85: google.protobuf.Timestamp + (*NullTimestamp)(nil), // 86: neoshowcase.protobuf.NullTimestamp + (*emptypb.Empty)(nil), // 87: google.protobuf.Empty } var file_neoshowcase_protobuf_gateway_proto_depIdxs = []int32{ 2, // 0: neoshowcase.protobuf.AvailablePort.protocol:type_name -> neoshowcase.protobuf.PortPublicationProtocol @@ -5429,9 +5718,9 @@ var file_neoshowcase_protobuf_gateway_proto_depIdxs = []int32{ 10, // 2: neoshowcase.protobuf.SystemInfo.domains:type_name -> neoshowcase.protobuf.AvailableDomain 11, // 3: neoshowcase.protobuf.SystemInfo.ports:type_name -> neoshowcase.protobuf.AvailablePort 12, // 4: neoshowcase.protobuf.SystemInfo.additional_links:type_name -> neoshowcase.protobuf.AdditionalLink - 81, // 5: neoshowcase.protobuf.UserKey.created_at:type_name -> google.protobuf.Timestamp + 85, // 5: neoshowcase.protobuf.UserKey.created_at:type_name -> google.protobuf.Timestamp 4, // 6: neoshowcase.protobuf.Repository.auth_method:type_name -> neoshowcase.protobuf.Repository.AuthMethod - 81, // 7: neoshowcase.protobuf.SimpleCommit.commit_date:type_name -> google.protobuf.Timestamp + 85, // 7: neoshowcase.protobuf.SimpleCommit.commit_date:type_name -> google.protobuf.Timestamp 5, // 8: neoshowcase.protobuf.AutoShutdownConfig.startup:type_name -> neoshowcase.protobuf.AutoShutdownConfig.StartupBehavior 18, // 9: neoshowcase.protobuf.RuntimeConfig.auto_shutdown:type_name -> neoshowcase.protobuf.AutoShutdownConfig 19, // 10: neoshowcase.protobuf.BuildConfigRuntimeBuildpack.runtime_config:type_name -> neoshowcase.protobuf.RuntimeConfig @@ -5440,144 +5729,150 @@ var file_neoshowcase_protobuf_gateway_proto_depIdxs = []int32{ 23, // 13: neoshowcase.protobuf.BuildConfigStaticBuildpack.static_config:type_name -> neoshowcase.protobuf.StaticConfig 23, // 14: neoshowcase.protobuf.BuildConfigStaticCmd.static_config:type_name -> neoshowcase.protobuf.StaticConfig 23, // 15: neoshowcase.protobuf.BuildConfigStaticDockerfile.static_config:type_name -> neoshowcase.protobuf.StaticConfig - 20, // 16: neoshowcase.protobuf.ApplicationConfig.runtime_buildpack:type_name -> neoshowcase.protobuf.BuildConfigRuntimeBuildpack - 21, // 17: neoshowcase.protobuf.ApplicationConfig.runtime_cmd:type_name -> neoshowcase.protobuf.BuildConfigRuntimeCmd - 22, // 18: neoshowcase.protobuf.ApplicationConfig.runtime_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigRuntimeDockerfile - 24, // 19: neoshowcase.protobuf.ApplicationConfig.static_buildpack:type_name -> neoshowcase.protobuf.BuildConfigStaticBuildpack - 25, // 20: neoshowcase.protobuf.ApplicationConfig.static_cmd:type_name -> neoshowcase.protobuf.BuildConfigStaticCmd - 26, // 21: neoshowcase.protobuf.ApplicationConfig.static_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigStaticDockerfile - 1, // 22: neoshowcase.protobuf.Website.authentication:type_name -> neoshowcase.protobuf.AuthenticationType - 2, // 23: neoshowcase.protobuf.PortPublication.protocol:type_name -> neoshowcase.protobuf.PortPublicationProtocol - 0, // 24: neoshowcase.protobuf.Application.deploy_type:type_name -> neoshowcase.protobuf.DeployType - 6, // 25: neoshowcase.protobuf.Application.container:type_name -> neoshowcase.protobuf.Application.ContainerState - 81, // 26: neoshowcase.protobuf.Application.created_at:type_name -> google.protobuf.Timestamp - 81, // 27: neoshowcase.protobuf.Application.updated_at:type_name -> google.protobuf.Timestamp - 27, // 28: neoshowcase.protobuf.Application.config:type_name -> neoshowcase.protobuf.ApplicationConfig - 28, // 29: neoshowcase.protobuf.Application.websites:type_name -> neoshowcase.protobuf.Website - 29, // 30: neoshowcase.protobuf.Application.port_publications:type_name -> neoshowcase.protobuf.PortPublication - 3, // 31: neoshowcase.protobuf.Application.latest_build_status:type_name -> neoshowcase.protobuf.BuildStatus - 31, // 32: neoshowcase.protobuf.ApplicationEnvVars.variables:type_name -> neoshowcase.protobuf.ApplicationEnvVar - 81, // 33: neoshowcase.protobuf.Artifact.created_at:type_name -> google.protobuf.Timestamp - 82, // 34: neoshowcase.protobuf.Artifact.deleted_at:type_name -> neoshowcase.protobuf.NullTimestamp - 81, // 35: neoshowcase.protobuf.RuntimeImage.created_at:type_name -> google.protobuf.Timestamp - 81, // 36: neoshowcase.protobuf.ApplicationMetric.time:type_name -> google.protobuf.Timestamp - 37, // 37: neoshowcase.protobuf.ApplicationMetrics.metrics:type_name -> neoshowcase.protobuf.ApplicationMetric - 81, // 38: neoshowcase.protobuf.ApplicationOutput.time:type_name -> google.protobuf.Timestamp - 39, // 39: neoshowcase.protobuf.ApplicationOutputs.outputs:type_name -> neoshowcase.protobuf.ApplicationOutput - 3, // 40: neoshowcase.protobuf.Build.status:type_name -> neoshowcase.protobuf.BuildStatus - 81, // 41: neoshowcase.protobuf.Build.queued_at:type_name -> google.protobuf.Timestamp - 82, // 42: neoshowcase.protobuf.Build.started_at:type_name -> neoshowcase.protobuf.NullTimestamp - 82, // 43: neoshowcase.protobuf.Build.updated_at:type_name -> neoshowcase.protobuf.NullTimestamp - 82, // 44: neoshowcase.protobuf.Build.finished_at:type_name -> neoshowcase.protobuf.NullTimestamp - 33, // 45: neoshowcase.protobuf.Build.artifacts:type_name -> neoshowcase.protobuf.Artifact - 35, // 46: neoshowcase.protobuf.Build.runtime_image:type_name -> neoshowcase.protobuf.RuntimeImage - 14, // 47: neoshowcase.protobuf.GetUsersResponse.users:type_name -> neoshowcase.protobuf.User - 15, // 48: neoshowcase.protobuf.GetUserKeysResponse.keys:type_name -> neoshowcase.protobuf.UserKey - 83, // 49: neoshowcase.protobuf.CreateRepositoryAuth.none:type_name -> google.protobuf.Empty - 49, // 50: neoshowcase.protobuf.CreateRepositoryAuth.basic:type_name -> neoshowcase.protobuf.CreateRepositoryAuthBasic - 50, // 51: neoshowcase.protobuf.CreateRepositoryAuth.ssh:type_name -> neoshowcase.protobuf.CreateRepositoryAuthSSH - 51, // 52: neoshowcase.protobuf.CreateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth - 7, // 53: neoshowcase.protobuf.GetRepositoriesRequest.scope:type_name -> neoshowcase.protobuf.GetRepositoriesRequest.Scope - 51, // 54: neoshowcase.protobuf.UpdateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth - 77, // 55: neoshowcase.protobuf.UpdateRepositoryRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners - 17, // 56: neoshowcase.protobuf.GetRepositoryCommitsResponse.commits:type_name -> neoshowcase.protobuf.SimpleCommit - 1, // 57: neoshowcase.protobuf.CreateWebsiteRequest.authentication:type_name -> neoshowcase.protobuf.AuthenticationType - 27, // 58: neoshowcase.protobuf.CreateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig - 58, // 59: neoshowcase.protobuf.CreateApplicationRequest.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest - 29, // 60: neoshowcase.protobuf.CreateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.PortPublication - 8, // 61: neoshowcase.protobuf.GetApplicationsRequest.scope:type_name -> neoshowcase.protobuf.GetApplicationsRequest.Scope - 27, // 62: neoshowcase.protobuf.UpdateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig - 78, // 63: neoshowcase.protobuf.UpdateApplicationRequest.websites:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites - 79, // 64: neoshowcase.protobuf.UpdateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts - 80, // 65: neoshowcase.protobuf.UpdateApplicationRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners - 16, // 66: neoshowcase.protobuf.GetRepositoriesResponse.repositories:type_name -> neoshowcase.protobuf.Repository - 30, // 67: neoshowcase.protobuf.GetApplicationsResponse.applications:type_name -> neoshowcase.protobuf.Application - 41, // 68: neoshowcase.protobuf.GetBuildsResponse.builds:type_name -> neoshowcase.protobuf.Build - 81, // 69: neoshowcase.protobuf.GetApplicationMetricsRequest.before:type_name -> google.protobuf.Timestamp - 81, // 70: neoshowcase.protobuf.GetOutputRequest.before:type_name -> google.protobuf.Timestamp - 81, // 71: neoshowcase.protobuf.GetOutputStreamRequest.begin:type_name -> google.protobuf.Timestamp - 43, // 72: neoshowcase.protobuf.GetRepositoryRefsResponse.refs:type_name -> neoshowcase.protobuf.GitRef - 58, // 73: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest - 29, // 74: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts.port_publications:type_name -> neoshowcase.protobuf.PortPublication - 83, // 75: neoshowcase.protobuf.APIService.GetSystemInfo:input_type -> google.protobuf.Empty - 83, // 76: neoshowcase.protobuf.APIService.GenerateKeyPair:input_type -> google.protobuf.Empty - 83, // 77: neoshowcase.protobuf.APIService.GetMe:input_type -> google.protobuf.Empty - 83, // 78: neoshowcase.protobuf.APIService.GetUsers:input_type -> google.protobuf.Empty - 47, // 79: neoshowcase.protobuf.APIService.CreateUserKey:input_type -> neoshowcase.protobuf.CreateUserKeyRequest - 83, // 80: neoshowcase.protobuf.APIService.GetUserKeys:input_type -> google.protobuf.Empty - 48, // 81: neoshowcase.protobuf.APIService.DeleteUserKey:input_type -> neoshowcase.protobuf.DeleteUserKeyRequest - 52, // 82: neoshowcase.protobuf.APIService.CreateRepository:input_type -> neoshowcase.protobuf.CreateRepositoryRequest - 53, // 83: neoshowcase.protobuf.APIService.GetRepositories:input_type -> neoshowcase.protobuf.GetRepositoriesRequest - 56, // 84: neoshowcase.protobuf.APIService.GetRepositoryCommits:input_type -> neoshowcase.protobuf.GetRepositoryCommitsRequest - 55, // 85: neoshowcase.protobuf.APIService.GetRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 55, // 86: neoshowcase.protobuf.APIService.GetRepositoryRefs:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 54, // 87: neoshowcase.protobuf.APIService.UpdateRepository:input_type -> neoshowcase.protobuf.UpdateRepositoryRequest - 55, // 88: neoshowcase.protobuf.APIService.RefreshRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 55, // 89: neoshowcase.protobuf.APIService.DeleteRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest - 60, // 90: neoshowcase.protobuf.APIService.CreateApplication:input_type -> neoshowcase.protobuf.CreateApplicationRequest - 61, // 91: neoshowcase.protobuf.APIService.GetApplications:input_type -> neoshowcase.protobuf.GetApplicationsRequest - 65, // 92: neoshowcase.protobuf.APIService.GetApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 62, // 93: neoshowcase.protobuf.APIService.UpdateApplication:input_type -> neoshowcase.protobuf.UpdateApplicationRequest - 65, // 94: neoshowcase.protobuf.APIService.DeleteApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 83, // 95: neoshowcase.protobuf.APIService.GetAvailableMetrics:input_type -> google.protobuf.Empty - 72, // 96: neoshowcase.protobuf.APIService.GetApplicationMetrics:input_type -> neoshowcase.protobuf.GetApplicationMetricsRequest - 73, // 97: neoshowcase.protobuf.APIService.GetOutput:input_type -> neoshowcase.protobuf.GetOutputRequest - 74, // 98: neoshowcase.protobuf.APIService.GetOutputStream:input_type -> neoshowcase.protobuf.GetOutputStreamRequest - 65, // 99: neoshowcase.protobuf.APIService.GetEnvVars:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 70, // 100: neoshowcase.protobuf.APIService.SetEnvVar:input_type -> neoshowcase.protobuf.SetApplicationEnvVarRequest - 71, // 101: neoshowcase.protobuf.APIService.DeleteEnvVar:input_type -> neoshowcase.protobuf.DeleteApplicationEnvVarRequest - 65, // 102: neoshowcase.protobuf.APIService.StartApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 65, // 103: neoshowcase.protobuf.APIService.StopApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 66, // 104: neoshowcase.protobuf.APIService.GetAllBuilds:input_type -> neoshowcase.protobuf.GetAllBuildsRequest - 65, // 105: neoshowcase.protobuf.APIService.GetBuilds:input_type -> neoshowcase.protobuf.ApplicationIdRequest - 67, // 106: neoshowcase.protobuf.APIService.GetBuild:input_type -> neoshowcase.protobuf.BuildIdRequest - 75, // 107: neoshowcase.protobuf.APIService.RetryCommitBuild:input_type -> neoshowcase.protobuf.RetryCommitBuildRequest - 67, // 108: neoshowcase.protobuf.APIService.CancelBuild:input_type -> neoshowcase.protobuf.BuildIdRequest - 67, // 109: neoshowcase.protobuf.APIService.GetBuildLog:input_type -> neoshowcase.protobuf.BuildIdRequest - 67, // 110: neoshowcase.protobuf.APIService.GetBuildLogStream:input_type -> neoshowcase.protobuf.BuildIdRequest - 68, // 111: neoshowcase.protobuf.APIService.GetBuildArtifact:input_type -> neoshowcase.protobuf.ArtifactIdRequest - 13, // 112: neoshowcase.protobuf.APIService.GetSystemInfo:output_type -> neoshowcase.protobuf.SystemInfo - 44, // 113: neoshowcase.protobuf.APIService.GenerateKeyPair:output_type -> neoshowcase.protobuf.GenerateKeyPairResponse - 14, // 114: neoshowcase.protobuf.APIService.GetMe:output_type -> neoshowcase.protobuf.User - 45, // 115: neoshowcase.protobuf.APIService.GetUsers:output_type -> neoshowcase.protobuf.GetUsersResponse - 15, // 116: neoshowcase.protobuf.APIService.CreateUserKey:output_type -> neoshowcase.protobuf.UserKey - 46, // 117: neoshowcase.protobuf.APIService.GetUserKeys:output_type -> neoshowcase.protobuf.GetUserKeysResponse - 83, // 118: neoshowcase.protobuf.APIService.DeleteUserKey:output_type -> google.protobuf.Empty - 16, // 119: neoshowcase.protobuf.APIService.CreateRepository:output_type -> neoshowcase.protobuf.Repository - 63, // 120: neoshowcase.protobuf.APIService.GetRepositories:output_type -> neoshowcase.protobuf.GetRepositoriesResponse - 57, // 121: neoshowcase.protobuf.APIService.GetRepositoryCommits:output_type -> neoshowcase.protobuf.GetRepositoryCommitsResponse - 16, // 122: neoshowcase.protobuf.APIService.GetRepository:output_type -> neoshowcase.protobuf.Repository - 76, // 123: neoshowcase.protobuf.APIService.GetRepositoryRefs:output_type -> neoshowcase.protobuf.GetRepositoryRefsResponse - 83, // 124: neoshowcase.protobuf.APIService.UpdateRepository:output_type -> google.protobuf.Empty - 83, // 125: neoshowcase.protobuf.APIService.RefreshRepository:output_type -> google.protobuf.Empty - 83, // 126: neoshowcase.protobuf.APIService.DeleteRepository:output_type -> google.protobuf.Empty - 30, // 127: neoshowcase.protobuf.APIService.CreateApplication:output_type -> neoshowcase.protobuf.Application - 64, // 128: neoshowcase.protobuf.APIService.GetApplications:output_type -> neoshowcase.protobuf.GetApplicationsResponse - 30, // 129: neoshowcase.protobuf.APIService.GetApplication:output_type -> neoshowcase.protobuf.Application - 83, // 130: neoshowcase.protobuf.APIService.UpdateApplication:output_type -> google.protobuf.Empty - 83, // 131: neoshowcase.protobuf.APIService.DeleteApplication:output_type -> google.protobuf.Empty - 36, // 132: neoshowcase.protobuf.APIService.GetAvailableMetrics:output_type -> neoshowcase.protobuf.AvailableMetrics - 38, // 133: neoshowcase.protobuf.APIService.GetApplicationMetrics:output_type -> neoshowcase.protobuf.ApplicationMetrics - 40, // 134: neoshowcase.protobuf.APIService.GetOutput:output_type -> neoshowcase.protobuf.ApplicationOutputs - 39, // 135: neoshowcase.protobuf.APIService.GetOutputStream:output_type -> neoshowcase.protobuf.ApplicationOutput - 32, // 136: neoshowcase.protobuf.APIService.GetEnvVars:output_type -> neoshowcase.protobuf.ApplicationEnvVars - 83, // 137: neoshowcase.protobuf.APIService.SetEnvVar:output_type -> google.protobuf.Empty - 83, // 138: neoshowcase.protobuf.APIService.DeleteEnvVar:output_type -> google.protobuf.Empty - 83, // 139: neoshowcase.protobuf.APIService.StartApplication:output_type -> google.protobuf.Empty - 83, // 140: neoshowcase.protobuf.APIService.StopApplication:output_type -> google.protobuf.Empty - 69, // 141: neoshowcase.protobuf.APIService.GetAllBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse - 69, // 142: neoshowcase.protobuf.APIService.GetBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse - 41, // 143: neoshowcase.protobuf.APIService.GetBuild:output_type -> neoshowcase.protobuf.Build - 83, // 144: neoshowcase.protobuf.APIService.RetryCommitBuild:output_type -> google.protobuf.Empty - 83, // 145: neoshowcase.protobuf.APIService.CancelBuild:output_type -> google.protobuf.Empty - 42, // 146: neoshowcase.protobuf.APIService.GetBuildLog:output_type -> neoshowcase.protobuf.BuildLog - 42, // 147: neoshowcase.protobuf.APIService.GetBuildLogStream:output_type -> neoshowcase.protobuf.BuildLog - 34, // 148: neoshowcase.protobuf.APIService.GetBuildArtifact:output_type -> neoshowcase.protobuf.ArtifactContent - 112, // [112:149] is the sub-list for method output_type - 75, // [75:112] is the sub-list for method input_type - 75, // [75:75] is the sub-list for extension type_name - 75, // [75:75] is the sub-list for extension extendee - 0, // [0:75] is the sub-list for field type_name + 24, // 16: neoshowcase.protobuf.BuildConfigFunctionBuildpack.function_config:type_name -> neoshowcase.protobuf.FunctionConfig + 24, // 17: neoshowcase.protobuf.BuildConfigFunctionCmd.function_config:type_name -> neoshowcase.protobuf.FunctionConfig + 24, // 18: neoshowcase.protobuf.BuildConfigFunctionDockerfile.function_config:type_name -> neoshowcase.protobuf.FunctionConfig + 20, // 19: neoshowcase.protobuf.ApplicationConfig.runtime_buildpack:type_name -> neoshowcase.protobuf.BuildConfigRuntimeBuildpack + 21, // 20: neoshowcase.protobuf.ApplicationConfig.runtime_cmd:type_name -> neoshowcase.protobuf.BuildConfigRuntimeCmd + 22, // 21: neoshowcase.protobuf.ApplicationConfig.runtime_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigRuntimeDockerfile + 25, // 22: neoshowcase.protobuf.ApplicationConfig.static_buildpack:type_name -> neoshowcase.protobuf.BuildConfigStaticBuildpack + 26, // 23: neoshowcase.protobuf.ApplicationConfig.static_cmd:type_name -> neoshowcase.protobuf.BuildConfigStaticCmd + 27, // 24: neoshowcase.protobuf.ApplicationConfig.static_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigStaticDockerfile + 28, // 25: neoshowcase.protobuf.ApplicationConfig.function_buildpack:type_name -> neoshowcase.protobuf.BuildConfigFunctionBuildpack + 29, // 26: neoshowcase.protobuf.ApplicationConfig.function_cmd:type_name -> neoshowcase.protobuf.BuildConfigFunctionCmd + 30, // 27: neoshowcase.protobuf.ApplicationConfig.function_dockerfile:type_name -> neoshowcase.protobuf.BuildConfigFunctionDockerfile + 1, // 28: neoshowcase.protobuf.Website.authentication:type_name -> neoshowcase.protobuf.AuthenticationType + 2, // 29: neoshowcase.protobuf.PortPublication.protocol:type_name -> neoshowcase.protobuf.PortPublicationProtocol + 0, // 30: neoshowcase.protobuf.Application.deploy_type:type_name -> neoshowcase.protobuf.DeployType + 6, // 31: neoshowcase.protobuf.Application.container:type_name -> neoshowcase.protobuf.Application.ContainerState + 85, // 32: neoshowcase.protobuf.Application.created_at:type_name -> google.protobuf.Timestamp + 85, // 33: neoshowcase.protobuf.Application.updated_at:type_name -> google.protobuf.Timestamp + 31, // 34: neoshowcase.protobuf.Application.config:type_name -> neoshowcase.protobuf.ApplicationConfig + 32, // 35: neoshowcase.protobuf.Application.websites:type_name -> neoshowcase.protobuf.Website + 33, // 36: neoshowcase.protobuf.Application.port_publications:type_name -> neoshowcase.protobuf.PortPublication + 3, // 37: neoshowcase.protobuf.Application.latest_build_status:type_name -> neoshowcase.protobuf.BuildStatus + 35, // 38: neoshowcase.protobuf.ApplicationEnvVars.variables:type_name -> neoshowcase.protobuf.ApplicationEnvVar + 85, // 39: neoshowcase.protobuf.Artifact.created_at:type_name -> google.protobuf.Timestamp + 86, // 40: neoshowcase.protobuf.Artifact.deleted_at:type_name -> neoshowcase.protobuf.NullTimestamp + 85, // 41: neoshowcase.protobuf.RuntimeImage.created_at:type_name -> google.protobuf.Timestamp + 85, // 42: neoshowcase.protobuf.ApplicationMetric.time:type_name -> google.protobuf.Timestamp + 41, // 43: neoshowcase.protobuf.ApplicationMetrics.metrics:type_name -> neoshowcase.protobuf.ApplicationMetric + 85, // 44: neoshowcase.protobuf.ApplicationOutput.time:type_name -> google.protobuf.Timestamp + 43, // 45: neoshowcase.protobuf.ApplicationOutputs.outputs:type_name -> neoshowcase.protobuf.ApplicationOutput + 3, // 46: neoshowcase.protobuf.Build.status:type_name -> neoshowcase.protobuf.BuildStatus + 85, // 47: neoshowcase.protobuf.Build.queued_at:type_name -> google.protobuf.Timestamp + 86, // 48: neoshowcase.protobuf.Build.started_at:type_name -> neoshowcase.protobuf.NullTimestamp + 86, // 49: neoshowcase.protobuf.Build.updated_at:type_name -> neoshowcase.protobuf.NullTimestamp + 86, // 50: neoshowcase.protobuf.Build.finished_at:type_name -> neoshowcase.protobuf.NullTimestamp + 37, // 51: neoshowcase.protobuf.Build.artifacts:type_name -> neoshowcase.protobuf.Artifact + 39, // 52: neoshowcase.protobuf.Build.runtime_image:type_name -> neoshowcase.protobuf.RuntimeImage + 14, // 53: neoshowcase.protobuf.GetUsersResponse.users:type_name -> neoshowcase.protobuf.User + 15, // 54: neoshowcase.protobuf.GetUserKeysResponse.keys:type_name -> neoshowcase.protobuf.UserKey + 87, // 55: neoshowcase.protobuf.CreateRepositoryAuth.none:type_name -> google.protobuf.Empty + 53, // 56: neoshowcase.protobuf.CreateRepositoryAuth.basic:type_name -> neoshowcase.protobuf.CreateRepositoryAuthBasic + 54, // 57: neoshowcase.protobuf.CreateRepositoryAuth.ssh:type_name -> neoshowcase.protobuf.CreateRepositoryAuthSSH + 55, // 58: neoshowcase.protobuf.CreateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth + 7, // 59: neoshowcase.protobuf.GetRepositoriesRequest.scope:type_name -> neoshowcase.protobuf.GetRepositoriesRequest.Scope + 55, // 60: neoshowcase.protobuf.UpdateRepositoryRequest.auth:type_name -> neoshowcase.protobuf.CreateRepositoryAuth + 81, // 61: neoshowcase.protobuf.UpdateRepositoryRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateRepositoryRequest.UpdateOwners + 17, // 62: neoshowcase.protobuf.GetRepositoryCommitsResponse.commits:type_name -> neoshowcase.protobuf.SimpleCommit + 1, // 63: neoshowcase.protobuf.CreateWebsiteRequest.authentication:type_name -> neoshowcase.protobuf.AuthenticationType + 31, // 64: neoshowcase.protobuf.CreateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig + 62, // 65: neoshowcase.protobuf.CreateApplicationRequest.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest + 33, // 66: neoshowcase.protobuf.CreateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.PortPublication + 8, // 67: neoshowcase.protobuf.GetApplicationsRequest.scope:type_name -> neoshowcase.protobuf.GetApplicationsRequest.Scope + 31, // 68: neoshowcase.protobuf.UpdateApplicationRequest.config:type_name -> neoshowcase.protobuf.ApplicationConfig + 82, // 69: neoshowcase.protobuf.UpdateApplicationRequest.websites:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites + 83, // 70: neoshowcase.protobuf.UpdateApplicationRequest.port_publications:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts + 84, // 71: neoshowcase.protobuf.UpdateApplicationRequest.owner_ids:type_name -> neoshowcase.protobuf.UpdateApplicationRequest.UpdateOwners + 16, // 72: neoshowcase.protobuf.GetRepositoriesResponse.repositories:type_name -> neoshowcase.protobuf.Repository + 34, // 73: neoshowcase.protobuf.GetApplicationsResponse.applications:type_name -> neoshowcase.protobuf.Application + 45, // 74: neoshowcase.protobuf.GetBuildsResponse.builds:type_name -> neoshowcase.protobuf.Build + 85, // 75: neoshowcase.protobuf.GetApplicationMetricsRequest.before:type_name -> google.protobuf.Timestamp + 85, // 76: neoshowcase.protobuf.GetOutputRequest.before:type_name -> google.protobuf.Timestamp + 85, // 77: neoshowcase.protobuf.GetOutputStreamRequest.begin:type_name -> google.protobuf.Timestamp + 47, // 78: neoshowcase.protobuf.GetRepositoryRefsResponse.refs:type_name -> neoshowcase.protobuf.GitRef + 62, // 79: neoshowcase.protobuf.UpdateApplicationRequest.UpdateWebsites.websites:type_name -> neoshowcase.protobuf.CreateWebsiteRequest + 33, // 80: neoshowcase.protobuf.UpdateApplicationRequest.UpdatePorts.port_publications:type_name -> neoshowcase.protobuf.PortPublication + 87, // 81: neoshowcase.protobuf.APIService.GetSystemInfo:input_type -> google.protobuf.Empty + 87, // 82: neoshowcase.protobuf.APIService.GenerateKeyPair:input_type -> google.protobuf.Empty + 87, // 83: neoshowcase.protobuf.APIService.GetMe:input_type -> google.protobuf.Empty + 87, // 84: neoshowcase.protobuf.APIService.GetUsers:input_type -> google.protobuf.Empty + 51, // 85: neoshowcase.protobuf.APIService.CreateUserKey:input_type -> neoshowcase.protobuf.CreateUserKeyRequest + 87, // 86: neoshowcase.protobuf.APIService.GetUserKeys:input_type -> google.protobuf.Empty + 52, // 87: neoshowcase.protobuf.APIService.DeleteUserKey:input_type -> neoshowcase.protobuf.DeleteUserKeyRequest + 56, // 88: neoshowcase.protobuf.APIService.CreateRepository:input_type -> neoshowcase.protobuf.CreateRepositoryRequest + 57, // 89: neoshowcase.protobuf.APIService.GetRepositories:input_type -> neoshowcase.protobuf.GetRepositoriesRequest + 60, // 90: neoshowcase.protobuf.APIService.GetRepositoryCommits:input_type -> neoshowcase.protobuf.GetRepositoryCommitsRequest + 59, // 91: neoshowcase.protobuf.APIService.GetRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 59, // 92: neoshowcase.protobuf.APIService.GetRepositoryRefs:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 58, // 93: neoshowcase.protobuf.APIService.UpdateRepository:input_type -> neoshowcase.protobuf.UpdateRepositoryRequest + 59, // 94: neoshowcase.protobuf.APIService.RefreshRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 59, // 95: neoshowcase.protobuf.APIService.DeleteRepository:input_type -> neoshowcase.protobuf.RepositoryIdRequest + 64, // 96: neoshowcase.protobuf.APIService.CreateApplication:input_type -> neoshowcase.protobuf.CreateApplicationRequest + 65, // 97: neoshowcase.protobuf.APIService.GetApplications:input_type -> neoshowcase.protobuf.GetApplicationsRequest + 69, // 98: neoshowcase.protobuf.APIService.GetApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 66, // 99: neoshowcase.protobuf.APIService.UpdateApplication:input_type -> neoshowcase.protobuf.UpdateApplicationRequest + 69, // 100: neoshowcase.protobuf.APIService.DeleteApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 87, // 101: neoshowcase.protobuf.APIService.GetAvailableMetrics:input_type -> google.protobuf.Empty + 76, // 102: neoshowcase.protobuf.APIService.GetApplicationMetrics:input_type -> neoshowcase.protobuf.GetApplicationMetricsRequest + 77, // 103: neoshowcase.protobuf.APIService.GetOutput:input_type -> neoshowcase.protobuf.GetOutputRequest + 78, // 104: neoshowcase.protobuf.APIService.GetOutputStream:input_type -> neoshowcase.protobuf.GetOutputStreamRequest + 69, // 105: neoshowcase.protobuf.APIService.GetEnvVars:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 74, // 106: neoshowcase.protobuf.APIService.SetEnvVar:input_type -> neoshowcase.protobuf.SetApplicationEnvVarRequest + 75, // 107: neoshowcase.protobuf.APIService.DeleteEnvVar:input_type -> neoshowcase.protobuf.DeleteApplicationEnvVarRequest + 69, // 108: neoshowcase.protobuf.APIService.StartApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 69, // 109: neoshowcase.protobuf.APIService.StopApplication:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 70, // 110: neoshowcase.protobuf.APIService.GetAllBuilds:input_type -> neoshowcase.protobuf.GetAllBuildsRequest + 69, // 111: neoshowcase.protobuf.APIService.GetBuilds:input_type -> neoshowcase.protobuf.ApplicationIdRequest + 71, // 112: neoshowcase.protobuf.APIService.GetBuild:input_type -> neoshowcase.protobuf.BuildIdRequest + 79, // 113: neoshowcase.protobuf.APIService.RetryCommitBuild:input_type -> neoshowcase.protobuf.RetryCommitBuildRequest + 71, // 114: neoshowcase.protobuf.APIService.CancelBuild:input_type -> neoshowcase.protobuf.BuildIdRequest + 71, // 115: neoshowcase.protobuf.APIService.GetBuildLog:input_type -> neoshowcase.protobuf.BuildIdRequest + 71, // 116: neoshowcase.protobuf.APIService.GetBuildLogStream:input_type -> neoshowcase.protobuf.BuildIdRequest + 72, // 117: neoshowcase.protobuf.APIService.GetBuildArtifact:input_type -> neoshowcase.protobuf.ArtifactIdRequest + 13, // 118: neoshowcase.protobuf.APIService.GetSystemInfo:output_type -> neoshowcase.protobuf.SystemInfo + 48, // 119: neoshowcase.protobuf.APIService.GenerateKeyPair:output_type -> neoshowcase.protobuf.GenerateKeyPairResponse + 14, // 120: neoshowcase.protobuf.APIService.GetMe:output_type -> neoshowcase.protobuf.User + 49, // 121: neoshowcase.protobuf.APIService.GetUsers:output_type -> neoshowcase.protobuf.GetUsersResponse + 15, // 122: neoshowcase.protobuf.APIService.CreateUserKey:output_type -> neoshowcase.protobuf.UserKey + 50, // 123: neoshowcase.protobuf.APIService.GetUserKeys:output_type -> neoshowcase.protobuf.GetUserKeysResponse + 87, // 124: neoshowcase.protobuf.APIService.DeleteUserKey:output_type -> google.protobuf.Empty + 16, // 125: neoshowcase.protobuf.APIService.CreateRepository:output_type -> neoshowcase.protobuf.Repository + 67, // 126: neoshowcase.protobuf.APIService.GetRepositories:output_type -> neoshowcase.protobuf.GetRepositoriesResponse + 61, // 127: neoshowcase.protobuf.APIService.GetRepositoryCommits:output_type -> neoshowcase.protobuf.GetRepositoryCommitsResponse + 16, // 128: neoshowcase.protobuf.APIService.GetRepository:output_type -> neoshowcase.protobuf.Repository + 80, // 129: neoshowcase.protobuf.APIService.GetRepositoryRefs:output_type -> neoshowcase.protobuf.GetRepositoryRefsResponse + 87, // 130: neoshowcase.protobuf.APIService.UpdateRepository:output_type -> google.protobuf.Empty + 87, // 131: neoshowcase.protobuf.APIService.RefreshRepository:output_type -> google.protobuf.Empty + 87, // 132: neoshowcase.protobuf.APIService.DeleteRepository:output_type -> google.protobuf.Empty + 34, // 133: neoshowcase.protobuf.APIService.CreateApplication:output_type -> neoshowcase.protobuf.Application + 68, // 134: neoshowcase.protobuf.APIService.GetApplications:output_type -> neoshowcase.protobuf.GetApplicationsResponse + 34, // 135: neoshowcase.protobuf.APIService.GetApplication:output_type -> neoshowcase.protobuf.Application + 87, // 136: neoshowcase.protobuf.APIService.UpdateApplication:output_type -> google.protobuf.Empty + 87, // 137: neoshowcase.protobuf.APIService.DeleteApplication:output_type -> google.protobuf.Empty + 40, // 138: neoshowcase.protobuf.APIService.GetAvailableMetrics:output_type -> neoshowcase.protobuf.AvailableMetrics + 42, // 139: neoshowcase.protobuf.APIService.GetApplicationMetrics:output_type -> neoshowcase.protobuf.ApplicationMetrics + 44, // 140: neoshowcase.protobuf.APIService.GetOutput:output_type -> neoshowcase.protobuf.ApplicationOutputs + 43, // 141: neoshowcase.protobuf.APIService.GetOutputStream:output_type -> neoshowcase.protobuf.ApplicationOutput + 36, // 142: neoshowcase.protobuf.APIService.GetEnvVars:output_type -> neoshowcase.protobuf.ApplicationEnvVars + 87, // 143: neoshowcase.protobuf.APIService.SetEnvVar:output_type -> google.protobuf.Empty + 87, // 144: neoshowcase.protobuf.APIService.DeleteEnvVar:output_type -> google.protobuf.Empty + 87, // 145: neoshowcase.protobuf.APIService.StartApplication:output_type -> google.protobuf.Empty + 87, // 146: neoshowcase.protobuf.APIService.StopApplication:output_type -> google.protobuf.Empty + 73, // 147: neoshowcase.protobuf.APIService.GetAllBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse + 73, // 148: neoshowcase.protobuf.APIService.GetBuilds:output_type -> neoshowcase.protobuf.GetBuildsResponse + 45, // 149: neoshowcase.protobuf.APIService.GetBuild:output_type -> neoshowcase.protobuf.Build + 87, // 150: neoshowcase.protobuf.APIService.RetryCommitBuild:output_type -> google.protobuf.Empty + 87, // 151: neoshowcase.protobuf.APIService.CancelBuild:output_type -> google.protobuf.Empty + 46, // 152: neoshowcase.protobuf.APIService.GetBuildLog:output_type -> neoshowcase.protobuf.BuildLog + 46, // 153: neoshowcase.protobuf.APIService.GetBuildLogStream:output_type -> neoshowcase.protobuf.BuildLog + 38, // 154: neoshowcase.protobuf.APIService.GetBuildArtifact:output_type -> neoshowcase.protobuf.ArtifactContent + 118, // [118:155] is the sub-list for method output_type + 81, // [81:118] is the sub-list for method input_type + 81, // [81:81] is the sub-list for extension type_name + 81, // [81:81] is the sub-list for extension extendee + 0, // [0:81] is the sub-list for field type_name } func init() { file_neoshowcase_protobuf_gateway_proto_init() } @@ -5586,31 +5881,34 @@ func file_neoshowcase_protobuf_gateway_proto_init() { return } file_neoshowcase_protobuf_null_proto_init() - file_neoshowcase_protobuf_gateway_proto_msgTypes[18].OneofWrappers = []any{ + file_neoshowcase_protobuf_gateway_proto_msgTypes[22].OneofWrappers = []any{ (*ApplicationConfig_RuntimeBuildpack)(nil), (*ApplicationConfig_RuntimeCmd)(nil), (*ApplicationConfig_RuntimeDockerfile)(nil), (*ApplicationConfig_StaticBuildpack)(nil), (*ApplicationConfig_StaticCmd)(nil), (*ApplicationConfig_StaticDockerfile)(nil), + (*ApplicationConfig_FunctionBuildpack)(nil), + (*ApplicationConfig_FunctionCmd)(nil), + (*ApplicationConfig_FunctionDockerfile)(nil), } - file_neoshowcase_protobuf_gateway_proto_msgTypes[21].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[32].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[42].OneofWrappers = []any{ + file_neoshowcase_protobuf_gateway_proto_msgTypes[25].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[36].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[46].OneofWrappers = []any{ (*CreateRepositoryAuth_None)(nil), (*CreateRepositoryAuth_Basic)(nil), (*CreateRepositoryAuth_Ssh)(nil), } - file_neoshowcase_protobuf_gateway_proto_msgTypes[45].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[52].OneofWrappers = []any{} - file_neoshowcase_protobuf_gateway_proto_msgTypes[53].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[49].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[56].OneofWrappers = []any{} + file_neoshowcase_protobuf_gateway_proto_msgTypes[57].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_neoshowcase_protobuf_gateway_proto_rawDesc), len(file_neoshowcase_protobuf_gateway_proto_rawDesc)), NumEnums: 9, - NumMessages: 72, + NumMessages: 76, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/infrastructure/repository/models/boil_types.go b/pkg/infrastructure/repository/models/boil_types.go index 03203fea3..1feec66f7 100644 --- a/pkg/infrastructure/repository/models/boil_types.go +++ b/pkg/infrastructure/repository/models/boil_types.go @@ -66,12 +66,15 @@ func AllApplicationConfigStartupBehavior() []string { // Enum values for ApplicationConfigBuildType const ( - ApplicationConfigBuildTypeRuntimeBuildpack string = "runtime-buildpack" - ApplicationConfigBuildTypeRuntimeCMD string = "runtime-cmd" - ApplicationConfigBuildTypeRuntimeDockerfile string = "runtime-dockerfile" - ApplicationConfigBuildTypeStaticBuildpack string = "static-buildpack" - ApplicationConfigBuildTypeStaticCMD string = "static-cmd" - ApplicationConfigBuildTypeStaticDockerfile string = "static-dockerfile" + ApplicationConfigBuildTypeRuntimeBuildpack string = "runtime-buildpack" + ApplicationConfigBuildTypeRuntimeCMD string = "runtime-cmd" + ApplicationConfigBuildTypeRuntimeDockerfile string = "runtime-dockerfile" + ApplicationConfigBuildTypeStaticBuildpack string = "static-buildpack" + ApplicationConfigBuildTypeStaticCMD string = "static-cmd" + ApplicationConfigBuildTypeStaticDockerfile string = "static-dockerfile" + ApplicationConfigBuildTypeFunctionBuildpack string = "function-buildpack" + ApplicationConfigBuildTypeFunctionCMD string = "function-cmd" + ApplicationConfigBuildTypeFunctionDockerfile string = "function-dockerfile" ) func AllApplicationConfigBuildType() []string { @@ -82,19 +85,24 @@ func AllApplicationConfigBuildType() []string { ApplicationConfigBuildTypeStaticBuildpack, ApplicationConfigBuildTypeStaticCMD, ApplicationConfigBuildTypeStaticDockerfile, + ApplicationConfigBuildTypeFunctionBuildpack, + ApplicationConfigBuildTypeFunctionCMD, + ApplicationConfigBuildTypeFunctionDockerfile, } } // Enum values for ApplicationsDeployType const ( - ApplicationsDeployTypeRuntime string = "runtime" - ApplicationsDeployTypeStatic string = "static" + ApplicationsDeployTypeRuntime string = "runtime" + ApplicationsDeployTypeStatic string = "static" + ApplicationsDeployTypeFunction string = "function" ) func AllApplicationsDeployType() []string { return []string{ ApplicationsDeployTypeRuntime, ApplicationsDeployTypeStatic, + ApplicationsDeployTypeFunction, } } diff --git a/pkg/infrastructure/repository/repoconvert/application.go b/pkg/infrastructure/repository/repoconvert/application.go index dbc3f279f..531f94f54 100644 --- a/pkg/infrastructure/repository/repoconvert/application.go +++ b/pkg/infrastructure/repository/repoconvert/application.go @@ -8,8 +8,9 @@ import ( ) var DeployTypeMapper = mapper.MustNewValueMapper(map[string]domain.DeployType{ - models.ApplicationsDeployTypeRuntime: domain.DeployTypeRuntime, - models.ApplicationsDeployTypeStatic: domain.DeployTypeStatic, + models.ApplicationsDeployTypeRuntime: domain.DeployTypeRuntime, + models.ApplicationsDeployTypeStatic: domain.DeployTypeStatic, + models.ApplicationsDeployTypeFunction: domain.DeployTypeFunction, }) var ContainerStateMapper = mapper.MustNewValueMapper(map[string]domain.ContainerState{ diff --git a/pkg/infrastructure/repository/repoconvert/application_config.go b/pkg/infrastructure/repository/repoconvert/application_config.go index 6310c05f1..ce652d45d 100644 --- a/pkg/infrastructure/repository/repoconvert/application_config.go +++ b/pkg/infrastructure/repository/repoconvert/application_config.go @@ -22,12 +22,15 @@ func ToDomainApplicationConfig(c *models.ApplicationConfig) domain.ApplicationCo } var BuildTypeMapper = mapper.MustNewValueMapper(map[string]domain.BuildType{ - models.ApplicationConfigBuildTypeRuntimeBuildpack: domain.BuildTypeRuntimeBuildpack, - models.ApplicationConfigBuildTypeRuntimeCMD: domain.BuildTypeRuntimeCmd, - models.ApplicationConfigBuildTypeRuntimeDockerfile: domain.BuildTypeRuntimeDockerfile, - models.ApplicationConfigBuildTypeStaticBuildpack: domain.BuildTypeStaticBuildpack, - models.ApplicationConfigBuildTypeStaticCMD: domain.BuildTypeStaticCmd, - models.ApplicationConfigBuildTypeStaticDockerfile: domain.BuildTypeStaticDockerfile, + models.ApplicationConfigBuildTypeRuntimeBuildpack: domain.BuildTypeRuntimeBuildpack, + models.ApplicationConfigBuildTypeRuntimeCMD: domain.BuildTypeRuntimeCmd, + models.ApplicationConfigBuildTypeRuntimeDockerfile: domain.BuildTypeRuntimeDockerfile, + models.ApplicationConfigBuildTypeStaticBuildpack: domain.BuildTypeStaticBuildpack, + models.ApplicationConfigBuildTypeStaticCMD: domain.BuildTypeStaticCmd, + models.ApplicationConfigBuildTypeStaticDockerfile: domain.BuildTypeStaticDockerfile, + models.ApplicationConfigBuildTypeFunctionBuildpack: domain.BuildTypeFunctionBuildpack, + models.ApplicationConfigBuildTypeFunctionCMD: domain.BuildTypeFunctionCmd, + models.ApplicationConfigBuildTypeFunctionDockerfile: domain.BuildTypeFunctionDockerfile, }) var StartupBehaviorMapper = mapper.MustNewValueMapper(map[string]domain.StartupBehavior{ @@ -76,6 +79,16 @@ func ToDomainStaticConfig(c *models.ApplicationConfig) domain.StaticConfig { } } +func assignFunctionConfig(mc *models.ApplicationConfig, c *domain.FunctionConfig) { + mc.ArtifactPath = c.ArtifactPath +} + +func ToDomainFunctionConfig(c *models.ApplicationConfig) domain.FunctionConfig { + return domain.FunctionConfig{ + ArtifactPath: c.ArtifactPath, + } +} + func assignBuildConfig(mc *models.ApplicationConfig, c domain.BuildConfig) { switch bc := c.(type) { case *domain.BuildConfigRuntimeBuildpack: @@ -100,6 +113,17 @@ func assignBuildConfig(mc *models.ApplicationConfig, c domain.BuildConfig) { assignStaticConfig(mc, &bc.StaticConfig) mc.DockerfileName = bc.DockerfileName mc.Context = bc.Context + case *domain.BuildConfigFunctionBuildpack: + assignFunctionConfig(mc, &bc.FunctionConfig) + mc.Context = bc.Context + case *domain.BuildConfigFunctionCmd: + assignFunctionConfig(mc, &bc.FunctionConfig) + mc.BaseImage = bc.BaseImage + mc.BuildCMD = bc.BuildCmd + case *domain.BuildConfigFunctionDockerfile: + assignFunctionConfig(mc, &bc.FunctionConfig) + mc.DockerfileName = bc.DockerfileName + mc.Context = bc.Context default: panic("unknown domain build config type") } @@ -141,6 +165,23 @@ func ToDomainBuildConfig(c *models.ApplicationConfig) domain.BuildConfig { DockerfileName: c.DockerfileName, Context: c.Context, } + case domain.BuildTypeFunctionBuildpack: + return &domain.BuildConfigFunctionBuildpack{ + FunctionConfig: ToDomainFunctionConfig(c), + Context: c.Context, + } + case domain.BuildTypeFunctionCmd: + return &domain.BuildConfigFunctionCmd{ + FunctionConfig: ToDomainFunctionConfig(c), + BaseImage: c.BaseImage, + BuildCmd: c.BuildCMD, + } + case domain.BuildTypeFunctionDockerfile: + return &domain.BuildConfigFunctionDockerfile{ + FunctionConfig: ToDomainFunctionConfig(c), + DockerfileName: c.DockerfileName, + Context: c.Context, + } default: panic("unknown build type") } diff --git a/pkg/usecase/builder/build.go b/pkg/usecase/builder/build.go index 4a5017e72..ef1c42dcf 100644 --- a/pkg/usecase/builder/build.go +++ b/pkg/usecase/builder/build.go @@ -97,10 +97,10 @@ func (s *ServiceImpl) buildSteps(st *state) ([]buildStep, error) { }) }}) steps = append(steps, buildStep{"Cleanup Temporary Image", func(ctx context.Context) error { - return s.buildStaticCleanup(ctx, st) + return s.buildRegistryCleanup(ctx, st) }}) steps = append(steps, buildStep{"Save Artifact", func(ctx context.Context) error { - return s.saveArtifact(ctx, st) + return s.saveTarGzArtifact(ctx, st) }}) case *domain.BuildConfigStaticCmd: steps = append(steps, buildStep{"Build (Static Command)", func(ctx context.Context) error { @@ -114,10 +114,10 @@ func (s *ServiceImpl) buildSteps(st *state) ([]buildStep, error) { }) }}) steps = append(steps, buildStep{"Cleanup Temporary Image", func(ctx context.Context) error { - return s.buildStaticCleanup(ctx, st) + return s.buildRegistryCleanup(ctx, st) }}) steps = append(steps, buildStep{"Save Artifact", func(ctx context.Context) error { - return s.saveArtifact(ctx, st) + return s.saveTarGzArtifact(ctx, st) }}) case *domain.BuildConfigStaticDockerfile: steps = append(steps, buildStep{"Build (Static Dockerfile)", func(ctx context.Context) error { @@ -131,10 +131,59 @@ func (s *ServiceImpl) buildSteps(st *state) ([]buildStep, error) { }) }}) steps = append(steps, buildStep{"Cleanup Temporary Image", func(ctx context.Context) error { - return s.buildStaticCleanup(ctx, st) + return s.buildRegistryCleanup(ctx, st) }}) steps = append(steps, buildStep{"Save Artifact", func(ctx context.Context) error { - return s.saveArtifact(ctx, st) + return s.saveTarGzArtifact(ctx, st) + }}) + case *domain.BuildConfigFunctionBuildpack: + steps = append(steps, buildStep{"Build (Function Buildpack)", func(ctx context.Context) error { + return s.buildFunctionBuildpack(ctx, st, bc) + }}) + steps = append(steps, buildStep{"Extract Function Artifact", func(ctx context.Context) error { + return withBuildkitProgress(ctx, st.logWriter, func(ctx context.Context, ch chan *buildkit.SolveStatus) error { + return s.extractFunctionArtifact(ctx, st, ch) + }) + }}) + steps = append(steps, buildStep{"Cleanup Temporary Image", func(ctx context.Context) error { + return s.buildRegistryCleanup(ctx, st) + }}) + steps = append(steps, buildStep{"Save Artifact", func(ctx context.Context) error { + return s.saveFunctionArtifact(ctx, st) + }}) + case *domain.BuildConfigFunctionCmd: + steps = append(steps, buildStep{"Build (Function Command)", func(ctx context.Context) error { + return withBuildkitProgress(ctx, st.logWriter, func(ctx context.Context, ch chan *buildkit.SolveStatus) error { + return s.buildFunctionCmd(ctx, st, ch, bc) + }) + }}) + steps = append(steps, buildStep{"Extract Function Artifact", func(ctx context.Context) error { + return withBuildkitProgress(ctx, st.logWriter, func(ctx context.Context, ch chan *buildkit.SolveStatus) error { + return s.extractFunctionArtifact(ctx, st, ch) + }) + }}) + steps = append(steps, buildStep{"Cleanup Temporary Image", func(ctx context.Context) error { + return s.buildRegistryCleanup(ctx, st) + }}) + steps = append(steps, buildStep{"Save Artifact", func(ctx context.Context) error { + return s.saveFunctionArtifact(ctx, st) + }}) + case *domain.BuildConfigFunctionDockerfile: + steps = append(steps, buildStep{"Build (Function Dockerfile)", func(ctx context.Context) error { + return withBuildkitProgress(ctx, st.logWriter, func(ctx context.Context, ch chan *buildkit.SolveStatus) error { + return s.buildFunctionDockerfile(ctx, st, ch, bc) + }) + }}) + steps = append(steps, buildStep{"Extract Function Artifact", func(ctx context.Context) error { + return withBuildkitProgress(ctx, st.logWriter, func(ctx context.Context, ch chan *buildkit.SolveStatus) error { + return s.extractFunctionArtifact(ctx, st, ch) + }) + }}) + steps = append(steps, buildStep{"Cleanup Temporary Image", func(ctx context.Context) error { + return s.buildRegistryCleanup(ctx, st) + }}) + steps = append(steps, buildStep{"Save Artifact", func(ctx context.Context) error { + return s.saveFunctionArtifact(ctx, st) }}) default: return nil, errors.New("unknown build config type") diff --git a/pkg/usecase/builder/build_buildkit.go b/pkg/usecase/builder/build_buildkit.go index 2806a2bf3..a5de2f510 100644 --- a/pkg/usecase/builder/build_buildkit.go +++ b/pkg/usecase/builder/build_buildkit.go @@ -163,12 +163,12 @@ func (s *ServiceImpl) solveDockerfile( return err } -func (s *ServiceImpl) buildRuntimeCmd( - ctx context.Context, - st *state, - ch chan *buildkit.SolveStatus, - bc *domain.BuildConfigRuntimeCmd, -) error { +type BuildCmdOption struct { + BaseImage string + BuildCmd string +} + +func generateBuildCmdDockerfile(st *state, bc BuildCmdOption) (string, error) { // If .dockerignore exists, rename to prevent it from being picked up by buildkitd, // as this is not the behavior we want in 'Command' build which is supposed to execute commands against raw repository files. // See https://github.com/traPtitech/NeoShowcase/issues/877 for more details. @@ -176,7 +176,7 @@ func (s *ServiceImpl) buildRuntimeCmd( if dockerignoreExists { err := os.Rename(filepath.Join(st.repositoryTempDir, ".dockerignore"), filepath.Join(st.repositoryTempDir, temporaryDockerignoreName)) if err != nil { - return errors.Wrap(err, "renaming .dockerignore") + return "", errors.Wrap(err, "renaming .dockerignore") } } @@ -201,13 +201,30 @@ func (s *ServiceImpl) buildRuntimeCmd( if bc.BuildCmd != "" { err := createScriptFile(filepath.Join(st.repositoryTempDir, buildScriptName), bc.BuildCmd) if err != nil { - return err + return "", err } dockerfile.WriteString(fmt.Sprintf("RUN ./%v\n", buildScriptName)) dockerfile.WriteString(fmt.Sprintf("RUN rm ./%v\n", buildScriptName)) } - tmpName, cleanup, err := createTempFile("dockerfile-*", dockerfile.String()) + return dockerfile.String(), nil +} + +func (s *ServiceImpl) buildRuntimeCmd( + ctx context.Context, + st *state, + ch chan *buildkit.SolveStatus, + bc *domain.BuildConfigRuntimeCmd, +) error { + dockerfile, err := generateBuildCmdDockerfile(st, BuildCmdOption{ + BaseImage: bc.BaseImage, + BuildCmd: bc.BuildCmd, + }) + if err != nil { + return err + } + + tmpName, cleanup, err := createTempFile("dockerfile-*", dockerfile) if err != nil { return err } @@ -248,51 +265,72 @@ func (s *ServiceImpl) buildStaticCmd( ch chan *buildkit.SolveStatus, bc *domain.BuildConfigStaticCmd, ) error { - // If .dockerignore exists, rename to prevent it from being picked up by buildkitd, - // as this is not the behavior we want in 'Command' build which is supposed to execute commands against raw repository files. - // See https://github.com/traPtitech/NeoShowcase/issues/877 for more details. - dockerignoreExists := dockerignoreExists(st.repositoryTempDir) - if dockerignoreExists { - err := os.Rename(filepath.Join(st.repositoryTempDir, ".dockerignore"), filepath.Join(st.repositoryTempDir, temporaryDockerignoreName)) - if err != nil { - return errors.Wrap(err, "renaming .dockerignore") - } + dockerfile, err := generateBuildCmdDockerfile(st, BuildCmdOption{ + BaseImage: bc.BaseImage, + BuildCmd: bc.BuildCmd, + }) + if err != nil { + return err } - var dockerfile strings.Builder - - dockerfile.WriteString(fmt.Sprintf( - "FROM %s\n", - lo.Ternary(bc.BaseImage == "", "scratch", bc.BaseImage), - )) - - for key := range st.appEnv() { - dockerfile.WriteString(fmt.Sprintf("ARG %v\n", key)) - dockerfile.WriteString(fmt.Sprintf("ENV %v=$%v\n", key, key)) + tmpName, cleanup, err := createTempFile("dockerfile-*", dockerfile) + if err != nil { + return err } + defer cleanup() - dockerfile.WriteString("WORKDIR /srv\n") - dockerfile.WriteString("COPY . .\n") - if dockerignoreExists { - dockerfile.WriteString(fmt.Sprintf("RUN mv %s .dockerignore\n", temporaryDockerignoreName)) - } + st.staticDest = filepath.Join("/srv", bc.ArtifactPath) + return s.solveDockerfile( + ctx, + s.tmpDestImage(st.app, st.build), + st.repositoryTempDir, + filepath.Dir(tmpName), + filepath.Base(tmpName), + st.appEnv(), + ch, + ) +} - if bc.BuildCmd != "" { - err := createScriptFile(filepath.Join(st.repositoryTempDir, buildScriptName), bc.BuildCmd) - if err != nil { - return err - } - dockerfile.WriteString("RUN ./" + buildScriptName + "\n") - dockerfile.WriteString("RUN rm ./" + buildScriptName + "\n") +func (s *ServiceImpl) buildStaticDockerfile( + ctx context.Context, + st *state, + ch chan *buildkit.SolveStatus, + bc *domain.BuildConfigStaticDockerfile, +) error { + contextDir := lo.Ternary(bc.Context != "", bc.Context, ".") + st.staticDest = bc.ArtifactPath + return s.solveDockerfile( + ctx, + s.tmpDestImage(st.app, st.build), + filepath.Join(st.repositoryTempDir, contextDir), + filepath.Join(st.repositoryTempDir, contextDir), + bc.DockerfileName, + st.appEnv(), + ch, + ) +} + +func (s *ServiceImpl) buildFunctionCmd( + ctx context.Context, + st *state, + ch chan *buildkit.SolveStatus, + bc *domain.BuildConfigFunctionCmd, +) error { + dockerfile, err := generateBuildCmdDockerfile(st, BuildCmdOption{ + BaseImage: bc.BaseImage, + BuildCmd: bc.BuildCmd, + }) + if err != nil { + return err } - tmpName, cleanup, err := createTempFile("dockerfile-*", dockerfile.String()) + tmpName, cleanup, err := createTempFile("dockerfile-*", dockerfile) if err != nil { return err } defer cleanup() - st.staticDest = filepath.Join("/srv", bc.ArtifactPath) + st.functionDest = filepath.Join("/srv", bc.ArtifactPath) return s.solveDockerfile( ctx, s.tmpDestImage(st.app, st.build), @@ -304,14 +342,14 @@ func (s *ServiceImpl) buildStaticCmd( ) } -func (s *ServiceImpl) buildStaticDockerfile( +func (s *ServiceImpl) buildFunctionDockerfile( ctx context.Context, st *state, ch chan *buildkit.SolveStatus, - bc *domain.BuildConfigStaticDockerfile, + bc *domain.BuildConfigFunctionDockerfile, ) error { contextDir := lo.Ternary(bc.Context != "", bc.Context, ".") - st.staticDest = bc.ArtifactPath + st.functionDest = bc.ArtifactPath return s.solveDockerfile( ctx, s.tmpDestImage(st.app, st.build), diff --git a/pkg/usecase/builder/build_buildpack.go b/pkg/usecase/builder/build_buildpack.go index 9cc693b44..efb57ee00 100644 --- a/pkg/usecase/builder/build_buildpack.go +++ b/pkg/usecase/builder/build_buildpack.go @@ -34,3 +34,18 @@ func (s *ServiceImpl) buildStaticBuildpackPack( st.staticDest = filepath.Join(path, bc.ArtifactPath) return nil } + +func (s *ServiceImpl) buildFunctionBuildpack( + ctx context.Context, + st *state, + bc *domain.BuildConfigFunctionBuildpack, +) error { + contextDir := lo.Ternary(bc.Context != "", bc.Context, ".") + buildDir := filepath.Join(st.repositoryTempDir, contextDir) + path, err := s.buildpack.Pack(ctx, buildDir, s.tmpDestImage(st.app, st.build), s.imageConfig, st.appEnv(), st.Logger()) + if err != nil { + return err + } + st.functionDest = filepath.Join(path, bc.ArtifactPath) + return nil +} diff --git a/pkg/usecase/builder/build_static.go b/pkg/usecase/builder/build_extract.go similarity index 73% rename from pkg/usecase/builder/build_static.go rename to pkg/usecase/builder/build_extract.go index 3009c5e45..bdd253725 100644 --- a/pkg/usecase/builder/build_static.go +++ b/pkg/usecase/builder/build_extract.go @@ -10,16 +10,16 @@ import ( "github.com/tonistiigi/fsutil" ) -func (s *ServiceImpl) buildStaticExtract( +func (s *ServiceImpl) buildExtractFolderToTar( ctx context.Context, st *state, ch chan *buildkit.SolveStatus, + path string, ) error { ls := llb.Image(s.tmpDestImage(st.app, st.build)) - // ビルドで生成された静的ファイルのみを含むScratchイメージを構成 def, err := llb. Scratch(). - File(llb.Copy(ls, st.staticDest, "/", &llb.CopyInfo{ + File(llb.Copy(ls, path, "/", &llb.CopyInfo{ CopyDirContentsOnly: true, CreateDestPath: true, AllowWildcard: true, @@ -45,9 +45,18 @@ func (s *ServiceImpl) buildStaticExtract( return err } -func (s *ServiceImpl) buildStaticCleanup( +func (s *ServiceImpl) buildStaticExtract( ctx context.Context, st *state, + ch chan *buildkit.SolveStatus, +) error { + return s.buildExtractFolderToTar(ctx, st, ch, st.staticDest) +} + +func (s *ServiceImpl) extractFunctionArtifact( + ctx context.Context, + st *state, + ch chan *buildkit.SolveStatus, ) error { - return s.regclient.DeleteImage(ctx, s.imageConfig.TmpImageName(st.app.ID), s.imageTag(st.build)) + return s.buildExtractFolderToTar(ctx, st, ch, st.functionDest) } diff --git a/pkg/usecase/builder/build_registry.go b/pkg/usecase/builder/build_registry.go new file mode 100644 index 000000000..fe8d38dce --- /dev/null +++ b/pkg/usecase/builder/build_registry.go @@ -0,0 +1,10 @@ +package builder + +import "context" + +func (s *ServiceImpl) buildRegistryCleanup( + ctx context.Context, + st *state, +) error { + return s.regclient.DeleteImage(ctx, s.imageConfig.TmpImageName(st.app.ID), s.imageTag(st.build)) +} diff --git a/pkg/usecase/builder/build_save_artifact.go b/pkg/usecase/builder/build_save_artifact.go index 69c6128e7..ee357cf23 100644 --- a/pkg/usecase/builder/build_save_artifact.go +++ b/pkg/usecase/builder/build_save_artifact.go @@ -12,7 +12,7 @@ import ( "github.com/traPtitech/neoshowcase/pkg/domain" ) -func (s *ServiceImpl) saveArtifact(ctx context.Context, st *state) error { +func (s *ServiceImpl) saveGzArtifact(ctx context.Context, st *state, artifactName string) error { // Open artifact filename := st.artifactTempFile.Name() stat, err := os.Stat(filename) @@ -21,7 +21,7 @@ func (s *ServiceImpl) saveArtifact(ctx context.Context, st *state) error { } // Create artifact meta - artifact := domain.NewArtifact(st.build.ID, domain.BuilderStaticArtifactName, stat.Size()) + artifact := domain.NewArtifact(st.build.ID, artifactName, stat.Size()) // Create artifact .tar.gz file, err := os.Open(filename) @@ -49,3 +49,11 @@ func (s *ServiceImpl) saveArtifact(ctx context.Context, st *state) error { return nil } + +func (s *ServiceImpl) saveTarGzArtifact(ctx context.Context, st *state) error { + return s.saveGzArtifact(ctx, st, domain.BuilderStaticArtifactName) +} + +func (s *ServiceImpl) saveFunctionArtifact(ctx context.Context, st *state) error { + return s.saveGzArtifact(ctx, st, domain.BuilderFunctionArtifactName) +} diff --git a/pkg/usecase/builder/state.go b/pkg/usecase/builder/state.go index 6dda8b1bf..72ef6efdb 100644 --- a/pkg/usecase/builder/state.go +++ b/pkg/usecase/builder/state.go @@ -69,7 +69,8 @@ type state struct { artifactTempFile *os.File done chan struct{} - staticDest string + staticDest string + functionDest string } func newState(app *domain.Application, envs []*domain.Environment, build *domain.Build, repo *domain.Repository, client domain.ControllerBuilderServiceClient) (*state, error) {