update_change_log.rb 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. module Fastlane
  2. module Actions
  3. class UpdateChangeLogAction < Action
  4. def self.run(params)
  5. log = params[:log]
  6. raise "Invalid log object".red unless !log[:title].empty? and !log[:version].empty?
  7. readme = File.read(params[:changelogfile])
  8. log_text = "## [#{log[:title]}](https://github.com/onevcat/Kingfisher/releases/tag/#{log[:version]}) (#{Time.now.strftime("%Y-%m-%d")})\n\n"
  9. des = ""
  10. add = log[:add].map { |i| "* #{i}" }.join("\n") unless log[:add].nil?
  11. des = des + "#### Add\n#{add}\n\n" unless add.nil? or add.empty?
  12. fix = log[:fix].map { |i| "* #{i}" }.join("\n") unless log[:fix].nil?
  13. des = des + "#### Fix\n#{fix}\n\n" unless fix.nil? or fix.empty?
  14. remove = log[:remove].map { |i| "* #{i}" }.join("\n") unless log[:remove].nil?
  15. des = des + "#### Remove\n#{remove}\n\n" unless remove.nil? or remove.empty?
  16. log_text = log_text + des
  17. File.open(params[:changelogfile], 'w') { |file| file.write(readme.sub("-----", "-----\n\n#{log_text}---")) }
  18. return {:title => log[:title], :text => des}
  19. end
  20. #####################################################
  21. # @!group Documentation
  22. #####################################################
  23. def self.description
  24. "Update the change log file with the content of log"
  25. end
  26. def self.details
  27. "Generally speaking, the log is return value of extract_current_change_log action"
  28. end
  29. def self.available_options
  30. [
  31. FastlaneCore::ConfigItem.new(key: :log,
  32. env_name: "KF_UPDATE_CHANGE_LOG_LOG",
  33. description: "Change log extracted by pre change log file",
  34. is_string: false
  35. ),
  36. FastlaneCore::ConfigItem.new(key: :changelogfile,
  37. env_name: "KF_UPDATE_CHANGE_LOG_CHANGE_LOG_FILE",
  38. description: "The change log file, if not set, CHANGELOG.md will be used",
  39. default_value: "CHANGELOG.md")
  40. ]
  41. end
  42. def self.authors
  43. ["onevcat"]
  44. end
  45. def self.is_supported?(platform)
  46. true
  47. end
  48. end
  49. end
  50. end