Merge pull request #15002 from nandahkrishna/actions-multiline-envfile

utils/github/actions: add `format_multiline_string` method
This commit is contained in:
Nanda H Krishna 2023-03-18 15:31:12 -04:00 committed by GitHub
commit 27bb6ff1dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,7 @@
# typed: true # typed: true
# frozen_string_literal: true # frozen_string_literal: true
require "securerandom"
require "utils/tty" require "utils/tty"
module GitHub module GitHub
@ -18,6 +19,24 @@ module GitHub
.gsub("\r", "%0D") .gsub("\r", "%0D")
end 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. # Helper class for formatting annotations on GitHub Actions.
class Annotation class Annotation
extend T::Sig extend T::Sig
@ -85,5 +104,9 @@ module GitHub
@file.descend.next.to_s != ".." @file.descend.next.to_s != ".."
end end
end end
# Generic GitHub Actions error.
class Error < RuntimeError
end
end end
end end