Module: GitHandler::GitCommand

Included in:
Session
Defined in:
lib/git_handler/git_command.rb

Constant Summary collapse

GIT_COMMAND =
/\A(git-upload-pack|git upload-pack|git-upload-archive|git upload-archive|git-receive-pack|git receive-pack) '(.*)'\z/
COMMANDS_READONLY =
[
  'git-upload-pack',
  'git upload-pack',
  'git-upload-archive',
  'git upload-archive'
]
COMMANDS_WRITE =
[
  'git-receive-pack',
  'git receive-pack'
]

Instance Method Summary collapse

Instance Method Details

#parse_command(cmd) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/git_handler/git_command.rb', line 17

def parse_command(cmd)
  unless valid_command?(cmd)
    raise ParseError, "Invalid command: #{cmd}"
  end

  match  = cmd.scan(GIT_COMMAND).flatten
  action = match.first
  repo   = match.last

  {
    :action => action,
    :repo   => repo,
    :read   => read_command?(action),
    :write  => write_command?(action)
  }
end

#read_command?(cmd) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/git_handler/git_command.rb', line 38

def read_command?(cmd)
  COMMANDS_READONLY.include?(cmd)
end

#valid_command?(cmd) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/git_handler/git_command.rb', line 34

def valid_command?(cmd)
  cmd =~ GIT_COMMAND ? true : false
end

#write_command?(cmd) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/git_handler/git_command.rb', line 42

def write_command?(cmd)
  COMMANDS_WRITE.include?(cmd)
end