Sha256: 6b8dc3331c6e25dbfb097f7a97da4ff44a3d0fe6ab173ca2ee7a34b9d8123bde

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

require 'fileutils'
require 'open-uri'
require 'json'
require 'erb'


module Bourdain
  module Checks
    class Check < Bourdain::Resource
    protected
      def gemfile_version gem_name
        gemfile_lock = File.read 'Gemfile.lock'
        gemfile_lock =~ /#{gem_name} \((.*?)\)/
        $1
      end

      def rubygems_version gem_name
        versions_url = "https://rubygems.org/api/v1/versions/#{gem_name}.json"
        open(versions_url) do |f|
          versions = JSON::parse f.read
          versions = versions.sort_by { |v| v['number'] }
          versions.last['number']
        end
      end

      def repo_dir repo
        File.join(Dir.pwd, repo)
      end

      def work_tree repo
        "--work-tree=#{repo_dir repo}"
      end

      def git_dir repo
        "--git-dir=#{File.join repo_dir(repo), '.git'}"
      end

      def youre_behind? repo
        `git fetch #{repo_dir repo} >/dev/null 2>&1`
        raise unless $?.exitstatus.zero?
        behind = `git #{git_dir repo} log ..origin/master --oneline`.split("\n").length > 0
        raise unless $?.exitstatus.zero?
        return behind
      end

      def youre_ahead? repo
        `git fetch #{repo_dir repo} >/dev/null 2>&1`
        raise unless $?.exitstatus.zero?
        ahead = `git #{git_dir repo} log origin/master.. --oneline`.split("\n").length > 0
        raise unless $?.exitstatus.zero?
        return ahead
      end

      def youre_dirty? repo
        dirty = `git #{git_dir repo} #{work_tree repo} diff HEAD --numstat`.split("\n").length > 0
        raise unless $?.exitstatus.zero?
        return dirty
      end
    end
  end
end

require_relative 'checks/chef'
require_relative 'checks/hooks'
require_relative 'checks/bourdain'
require_relative 'checks/cookbooks'
require_relative 'checks/ssh_config'

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bourdain-1.2.20 lib/bourdain/resources/checks.rb
bourdain-1.2.19 lib/bourdain/resources/checks.rb
bourdain-1.2.18 lib/bourdain/resources/checks.rb