Sha256: 7444b105fe4a7f8890cce45d75f124c0042b756ecdc3b373786fcfc02cfca4e2

Contents?: true

Size: 1.92 KB

Versions: 3

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require 'cocoapods'

module GoNative
  module Plugins
    module IOS
      class Publish
        module Release
          GONATIVE_SOURCE_NAME = 'gonative-specs'.freeze
          
          def release_pod!
            Utils::UI.info 'Linting and releasing pod'
            assert_spec_exists!
            sources_manager.update(GONATIVE_SOURCE_NAME)
            assert_not_pushed!
            create_and_push_tag!
            push_to_pod_repo!
          end
          
          private
          
          def assert_spec_exists!
            return if spec_name
            
            raise Error, "No podspec file exists"
          end

          def assert_not_pushed!
            version = spec.version
            name = spec.name
  
            pushed_versions = source.versions(name)&.collect(&:to_s)
  
            raise Error, "#{name} (#{version}) has already been pushed to #{source.name}" if pushed_versions&.include? version.to_s
          end

          def create_and_push_tag!
            unless system("git tag | grep #{spec.version} > /dev/null")
              system "git add -A && git commit -m \"Releases #{spec.version}.\""
              system "git tag #{spec.version}"
              system "git push && git push --tags"
            end
          end
          
          def push_to_pod_repo!
            system "pod repo push #{GONATIVE_SOURCE_NAME} #{spec_name} --private"
          end
          
          def spec_name
            @spec_name ||= Dir.entries(".").select { |s| s.end_with? ".podspec" }.first
          end
          
          def spec
            @spec ||= Pod::Specification.from_file(spec_name)
          end
          
          def source
            @source ||= sources_manager.source_with_name_or_url(GONATIVE_SOURCE_NAME)
          end
          
          def sources_manager
            Pod::Config.instance.sources_manager
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gonative-cli-0.5.0 lib/gonative/plugins/ios/publish/release.rb
gonative-cli-0.4.5 lib/gonative/plugins/ios/publish/release.rb
gonative-cli-0.4.4 lib/gonative/plugins/ios/publish/release.rb