Module: GitHandler::GitCommand
- Included in:
- Session
- Defined in:
- lib/git_handler/git_command.rb
Constant Summary collapse
- GIT_COMMAND =
/\A(git[-|\s]upload-pack|git[-|\s]upload-archive|git[-|\s]receive-pack) '(.*)'\z/- GIT_REPO =
/\A[a-z\d\-\_\.]{1,128}.git?\z/i- 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
-
#parse_command(cmd) ⇒ Hash
Parse original git command.
-
#read_command?(str) ⇒ Boolean
Check if read command.
-
#valid_command?(str) ⇒ Boolean
Check if valid git command.
-
#valid_repository?(name) ⇒ Boolean
Check if repository name is valid.
-
#write_command?(str) ⇒ Boolean
Check if write command.
Instance Method Details
#parse_command(cmd) ⇒ Hash
Parse original git command
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/git_handler/git_command.rb', line 21 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 unless valid_repository?(repo) raise ParseError, "Invalid repository: #{repo}" end { :action => action, :repo => repo, :read => read_command?(action), :write => write_command?(action) } end |
#read_command?(str) ⇒ Boolean
Check if read command
52 53 54 |
# File 'lib/git_handler/git_command.rb', line 52 def read_command?(str) COMMANDS_READONLY.include?(str) end |
#valid_command?(str) ⇒ Boolean
Check if valid git command
45 46 47 |
# File 'lib/git_handler/git_command.rb', line 45 def valid_command?(str) str =~ GIT_COMMAND ? true : false end |
#valid_repository?(name) ⇒ Boolean
Check if repository name is valid
66 67 68 |
# File 'lib/git_handler/git_command.rb', line 66 def valid_repository?(name) name =~ GIT_REPO ? true : false end |
#write_command?(str) ⇒ Boolean
Check if write command
59 60 61 |
# File 'lib/git_handler/git_command.rb', line 59 def write_command?(str) COMMANDS_WRITE.include?(str) end |