Class: Fastlane::Actions::VersionBumpPodspecAction

Inherits:
Fastlane::Action show all
Defined in:
fastlane/lib/fastlane/actions/version_bump_podspec.rb

Constant Summary

Constants inherited from Fastlane::Action

Fastlane::Action::AVAILABLE_CATEGORIES, Fastlane::Action::RETURN_TYPES

Documentation collapse

Class Method Summary collapse

Methods inherited from Fastlane::Action

action_name, author, deprecated_notes, lane_context, method_missing, other_action, return_type, return_value, sample_return_value, shell_out_should_use_bundle_exec?, step_text

Class Method Details

.authorsObject



85
86
87
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 85

def self.authors
  ["Liquidsoul", "KrauseFx"]
end

.available_optionsObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 45

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :path,
                                 env_name: "FL_VERSION_BUMP_PODSPEC_PATH",
                                 description: "You must specify the path to the podspec file to update",
                                 code_gen_sensitive: true,
                                 default_value: Dir["*.podspec"].last,
                                 default_value_dynamic: true,
                                 verify_block: proc do |value|
                                   UI.user_error!("Please pass a path to the `version_bump_podspec` action") if value.length == 0
                                 end),
    FastlaneCore::ConfigItem.new(key: :bump_type,
                                 env_name: "FL_VERSION_BUMP_PODSPEC_BUMP_TYPE",
                                 description: "The type of this version bump. Available: patch, minor, major",
                                 default_value: "patch",
                                 verify_block: proc do |value|
                                   UI.user_error!("Available values are 'patch', 'minor' and 'major'") unless ['patch', 'minor', 'major'].include?(value)
                                 end),
    FastlaneCore::ConfigItem.new(key: :version_number,
                                 env_name: "FL_VERSION_BUMP_PODSPEC_VERSION_NUMBER",
                                 description: "Change to a specific version. This will replace the bump type value",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :version_appendix,
                                 env_name: "FL_VERSION_BUMP_PODSPEC_VERSION_APPENDIX",
                                 description: "Change version appendix to a specific value. For example 1.4.14.4.1 -> 1.4.14.5",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :require_variable_prefix,
                                 env_name: "FL_VERSION_BUMP_PODSPEC_VERSION_REQUIRE_VARIABLE_PREFIX",
                                 description: "true by default, this is used for non CocoaPods version bumps only",
                                 type: Boolean,
                                 default_value: true)
  ]
end

.categoryObject



100
101
102
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 100

def self.category
  :misc
end

.descriptionObject



32
33
34
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 32

def self.description
  "Increment or set the version in a podspec file"
end

.detailsObject



36
37
38
39
40
41
42
43
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 36

def self.details
  [
    "You can use this action to manipulate any 'version' variable contained in a ruby file.",
    "For example, you can use it to bump the version of a CocoaPods' podspec file.",
    "It also supports versions that are not semantic: `1.4.14.4.1`.",
    "For such versions, there is an option to change the appendix (e.g. `4.1`)."
  ].join("\n")
end

.example_codeObject



93
94
95
96
97
98
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 93

def self.example_code
  [
    'version = version_bump_podspec(path: "TSMessages.podspec", bump_type: "patch")',
    'version = version_bump_podspec(path: "TSMessages.podspec", version_number: "1.4")'
  ]
end

.is_supported?(platform) ⇒ Boolean

Returns:



89
90
91
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 89

def self.is_supported?(platform)
  [:ios, :mac].include?(platform)
end

.outputObject



79
80
81
82
83
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 79

def self.output
  [
    ['PODSPEC_VERSION_NUMBER', 'The new podspec version number']
  ]
end

.run(params) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'fastlane/lib/fastlane/actions/version_bump_podspec.rb', line 8

def self.run(params)
  podspec_path = params[:path]

  UI.user_error!("Could not find podspec file at path #{podspec_path}") unless File.exist?(podspec_path)

  version_podspec_file = Helper::PodspecHelper.new(podspec_path, params[:require_variable_prefix])

  if params[:version_number]
    new_version = params[:version_number]
  elsif params[:version_appendix]
    new_version = version_podspec_file.update_version_appendix(params[:version_appendix])
  else
    new_version = version_podspec_file.bump_version(params[:bump_type])
  end

  version_podspec_file.update_podspec(new_version)

  Actions.lane_context[SharedValues::PODSPEC_VERSION_NUMBER] = new_version
end