Sha256: d7b079779bd42e63d5453dbe9a49df2124ce889daa9549e8632abf67d78e6042

Contents?: true

Size: 1.7 KB

Versions: 4

Compression:

Stored size: 1.7 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 fetch repo
        `git #{git_dir repo} fetch >/dev/null 2>&1`
      end

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

      def youre_ahead? repo
        fetch repo
        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

4 entries across 4 versions & 1 rubygems

Version Path
bourdain-1.3.1 lib/bourdain/resources/checks.rb
bourdain-1.3.0 lib/bourdain/resources/checks.rb
bourdain-1.2.22 lib/bourdain/resources/checks.rb
bourdain-1.2.21 lib/bourdain/resources/checks.rb