Module: Pullable

Defined in:
lib/pullable.rb,
lib/pullable/version.rb

Constant Summary collapse

VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.process!(root) ⇒ Object

Raises:

  • (ArgumentError)


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
33
34
35
36
37
38
39
40
41
# File 'lib/pullable.rb', line 8

def self.process!(root)
  pulled, skipped, failed = [], [], []

  raise ArgumentError.new("Please pass a root directoy!") if root.nil?
  raise ArgumentError.new("Please pass a valid root directoy!") unless File.directory?(root)

  Dir.foreach(root) do |directory|
    if File.directory?(directory)
      unless SKIPPED_DIRECTORIES.include?(directory)
        FileUtils.cd(directory)

        if File.directory?('.git')
          puts "Pulling:\t#{directory}"
          `git fetch -p`
          `git merge --ff-only origin/master`
        end

        unless $?.success?
          failed << directory
        else
          pulled << directory
        end

        FileUtils.cd(root)
      end
    else
      skipped << directory
    end
  end

  puts "Pulled:\t\t#{pulled.inspect}" unless pulled.empty?
  puts "Skipped:\t#{skipped.inspect}" unless skipped.empty?
  puts "Failed:\t\t#{failed.inspect}" unless failed.empty?
end