utils/github/actions: add format_multiline_string method

This commit is contained in:
Nanda H Krishna 2023-03-18 10:44:35 -04:00
parent b3684e55a7
commit b792a5fd20
No known key found for this signature in database
GPG Key ID: 067E5FCD58ADF3AA

View File

@ -1,6 +1,7 @@
# typed: true
# frozen_string_literal: true
require "securerandom"
require "utils/tty"
module GitHub
@ -18,6 +19,24 @@ module GitHub
.gsub("\r", "%0D")
end
sig { params(name: String, value: String).returns(String) }
def self.format_multiline_string(name, value)
# Format multiline strings for environment files
# See https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
delimiter = "ghadelimiter_#{SecureRandom.uuid}"
if name.include?(delimiter) || value.include?(delimiter)
raise Error, "`name` and `value` must not contain the delimiter"
end
<<~EOS
#{name}<<#{delimiter}
#{value}
#{delimiter}
EOS
end
# Helper class for formatting annotations on GitHub Actions.
class Annotation
extend T::Sig
@ -85,5 +104,9 @@ module GitHub
@file.descend.next.to_s != ".."
end
end
# Generic GitHub Actions error.
class Error < RuntimeError
end
end
end