Sha256: 0c51942f32898839536e31df35f72932e8af8aca7c074b8a245869c89036de44

Contents?: true

Size: 697 Bytes

Versions: 7

Compression:

Stored size: 697 Bytes

Contents

module Jenkins
  module Build
    class Hub

      def available?
        system('which', 'hub', out: '/dev/null')
      end

      def ci_status(sha: nil)
        status, build_url = CiStatus.parse self.class.execute(sha)
        CiStatus.new(status, build_url)
      end

      def self.execute(commit)
        `hub ci-status -v #{commit}`
      end

      class CiStatus < Struct.new(:status, :build)
        MATCHER = %r{^(?<status>[^:]+): (?<build_url>https?://.+)$}.freeze


        def self.parse(output)
          hub = output.match(MATCHER) or return

          build = Jenkins::Build::Build.new(hub[:build_url])
          [ hub[:status], build ]
        end
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
jenkins-build-0.2.0 lib/jenkins/build/hub.rb
jenkins-build-0.2.0.pre6 lib/jenkins/build/hub.rb
jenkins-build-0.2.0.pre5 lib/jenkins/build/hub.rb
jenkins-build-0.2.0.pre4 lib/jenkins/build/hub.rb
jenkins-build-0.2.0.pre3 lib/jenkins/build/hub.rb
jenkins-build-0.2.0.pre2 lib/jenkins/build/hub.rb
jenkins-build-0.2.0.pre1 lib/jenkins/build/hub.rb