forked from sds/overcommit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbundle_check.rb
32 lines (26 loc) · 959 Bytes
/
bundle_check.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true
module Overcommit::Hook::PreCommit
# Check if local Gemfile.lock matches Gemfile when either changes, unless
# Gemfile.lock is ignored by git.
#
# @see http://bundler.io/
class BundleCheck < Base
LOCK_FILE = 'Gemfile.lock'
def run
# Ignore if Gemfile.lock is not tracked by git
ignored_files = execute(%w[git ls-files -o -i --exclude-standard]).stdout.split("\n")
return :pass if ignored_files.include?(LOCK_FILE)
previous_lockfile = File.read(LOCK_FILE) if File.exist?(LOCK_FILE)
result = execute(command)
unless result.success?
return :fail, result.stdout
end
new_lockfile = File.read(LOCK_FILE) if File.exist?(LOCK_FILE)
if previous_lockfile != new_lockfile
return :fail, "#{LOCK_FILE} is not up-to-date -- run \
`#{command.join(' ')}` or add the Gemfile and/or Gemfile.lock".squeeze
end
:pass
end
end
end