Sha256: a0e6ca76dc962d8caa3dc80cd152cdd2c71d8952627b5db86619a41e58520971
Contents?: true
Size: 1.89 KB
Versions: 15
Compression:
Stored size: 1.89 KB
Contents
# frozen_string_literal: true require 'cocoapods' module GoNative module Plugins module IOS class Release extend DSL::Serviceable GONATIVE_SOURCE_NAME = 'gonative-specs'.freeze def call 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 --allow-warnings" 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
Version data entries
15 entries across 15 versions & 1 rubygems