git_repository 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/git_repository.rb +62 -0
  2. metadata +65 -0
@@ -0,0 +1,62 @@
1
+ class GitRepository
2
+ def initialize(hash = {})
3
+ @system_wrapper = hash[:system] || SystemWrapper.new
4
+ remote = hash[:remote] || 'origin'
5
+ @location = get_repository(hash[:ssh_repository]) || remote
6
+ @branch = hash[:branch] || 'master'
7
+ end
8
+ def commit(hash)
9
+ message_with_options = insert_options(:message => 'git commit', :options=>hash[:options])
10
+ commit_message = "#{message_with_options} -m '#{hash[:message]}'"
11
+ @system_wrapper.execute(commit_message)
12
+ end
13
+
14
+ def has_changes?
15
+ git_status = @system_wrapper.execute('git status')
16
+ result = git_status.include?('Changes not staged for commit') || git_status.include?('Changes to be committed:')
17
+ return result
18
+ end
19
+
20
+ def has_untracked?
21
+ git_status = @system_wrapper.execute("git status")
22
+ return git_status.include?("Untracked files:")
23
+ end
24
+
25
+ def push(hash = {})
26
+ push_message_with_options = insert_options(:message => 'git push', :options => hash[:options])
27
+ push_message = "#{push_message_with_options} #{@location} #{@branch}"
28
+ @system_wrapper.execute(push_message)
29
+ end
30
+
31
+ def pull(hash = {})
32
+ pull_message_with_options = insert_options(:message => 'git pull',:options => hash[:options])
33
+ pull_message = "#{pull_message_with_options} #{@location} #{@branch}"
34
+ @system_wrapper.execute(pull_message)
35
+ end
36
+
37
+ def add(hash = {})
38
+ files = hash[:files] || '.'
39
+ add_message_with_options = insert_options(:message => 'git add', :options => hash[:options])
40
+ @system_wrapper.execute("#{add_message_with_options} #{files}")
41
+ end
42
+
43
+ private
44
+ def get_repository(repository)
45
+ return "--repo='#{repository}'" unless repository.nil?
46
+ end
47
+
48
+ def insert_options(hash)
49
+ if(hash[:options].nil?)
50
+ return "#{hash[:message]}"
51
+ else
52
+ return "#{hash[:message]} #{hash[:options]}"
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+ class SystemWrapper
59
+ def execute(command)
60
+ `#{command}`
61
+ end
62
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: git_repository
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 11
10
+ version: 0.0.11
11
+ platform: ruby
12
+ authors:
13
+ - Ben Flowers
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2013-02-24 00:00:00 Z
19
+ dependencies: []
20
+
21
+ description:
22
+ email: ben.j.flowers@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/git_repository.rb
31
+ homepage: https://github.com/benoj/GitRepository
32
+ licenses: []
33
+
34
+ post_install_message:
35
+ rdoc_options: []
36
+
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.8.15
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: Simple interaction with git repository. Useful for deployment scripts.
64
+ test_files: []
65
+