Class: MGit::ForEachCommand

Inherits:
Command
  • Object
show all
Defined in:
lib/mgit/commands/foreach.rb

Instance Method Summary collapse

Methods inherited from Command

#check_arity, create, execute, instance_each, list, load_commands, register_alias, register_command, require_commands_from_directory

Methods included from Output

#perror, #pinfo, #psystem, #ptable, #pwarn

Instance Method Details

#arityObject



18
19
20
# File 'lib/mgit/commands/foreach.rb', line 18

def arity
  [1, nil]
end

#descriptionObject



26
27
28
# File 'lib/mgit/commands/foreach.rb', line 26

def description
  'execute a command for each repository'
end

#execute(args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/mgit/commands/foreach.rb', line 3

def execute(args)
  command = args.join(' ')

  Registry.each do |repo|
    pinfo "Executing command in repository #{repo.name}..."

    sc = System.run(command, chdir: repo.path, print_stdout: true, print_stderr: true)
    next if sc.success?

    unless agree("Executing command '#{command}' in repository '#{repo.name}' failed. Would you like to continue anyway?".red)
      break
    end
  end
end

#usageObject



22
23
24
# File 'lib/mgit/commands/foreach.rb', line 22

def usage
  'foreach <command...>'
end