git-fyncy 0.5.0 → 0.6.0
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.
- data/lib/git-fyncy/repo.rb +39 -17
- data/lib/git-fyncy/version.rb +1 -1
- metadata +10 -5
data/lib/git-fyncy/repo.rb
CHANGED
@@ -3,22 +3,29 @@ require 'git-fyncy/utils'
|
|
3
3
|
module GitFyncy
|
4
4
|
module Repo
|
5
5
|
extend Utils
|
6
|
-
|
6
|
+
GIT_CONFIG = {
|
7
|
+
remote_name: "fyncy.remote".freeze,
|
8
|
+
url: "fyncy.url".freeze
|
9
|
+
}.freeze
|
7
10
|
DEFAULT_REMOTE = "origin".freeze
|
8
11
|
|
9
|
-
|
10
12
|
def self.get_stdout_str(cmd)
|
11
13
|
out = `#{cmd}`.chomp
|
12
14
|
out.empty? ? nil : out
|
13
15
|
end
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
module ClassMethods
|
18
|
+
[:remote_name, :url].each do |name|
|
19
|
+
define_method("#{name}_from_config") do
|
20
|
+
get_stdout_str "git config --get #{GIT_CONFIG.fetch(name)}"
|
21
|
+
end
|
18
22
|
|
19
|
-
|
20
|
-
|
23
|
+
define_method("configure_fyncy_#{name}") do |val|
|
24
|
+
system "git config --add #{GIT_CONFIG.fetch(name)} '#{val}'"
|
25
|
+
end
|
26
|
+
end
|
21
27
|
end
|
28
|
+
extend ClassMethods
|
22
29
|
|
23
30
|
def self.lookup_remote_url(remote_name)
|
24
31
|
get_stdout_str "git config --get remote.#{remote_name}.url"
|
@@ -28,7 +35,7 @@ module GitFyncy
|
|
28
35
|
system "git config --get remote.#{remote_name}.url"
|
29
36
|
end
|
30
37
|
|
31
|
-
TRAILING_GIT_REGEX = %r{^(.*)(
|
38
|
+
TRAILING_GIT_REGEX = %r{^(.*)(\.git/?$)}.freeze
|
32
39
|
def self.remove_trailing_git(str)
|
33
40
|
md = TRAILING_GIT_REGEX.match str
|
34
41
|
md ? md[1] : str
|
@@ -37,10 +44,7 @@ module GitFyncy
|
|
37
44
|
SSH_URL_REGEX = %r{ssh://(\w+@)?([\w\.]+)(:\d+)?([/\w\.]*)$}.freeze
|
38
45
|
SCP_REGEX = /^(\w+@)?([\.\w]+):(.*)$/.freeze
|
39
46
|
|
40
|
-
def self.
|
41
|
-
url = lookup_remote_url remote_name
|
42
|
-
return unless url
|
43
|
-
|
47
|
+
def self.host_and_path_from_url(url)
|
44
48
|
md = SSH_URL_REGEX.match url
|
45
49
|
if md
|
46
50
|
user = md[1]
|
@@ -63,26 +67,44 @@ module GitFyncy
|
|
63
67
|
["#{user}#{host}", path]
|
64
68
|
end
|
65
69
|
|
70
|
+
def self.host_and_path_for_remote(remote_name)
|
71
|
+
url = lookup_remote_url remote_name
|
72
|
+
return unless url
|
73
|
+
host_and_path_from_url url
|
74
|
+
end
|
75
|
+
|
66
76
|
def self.prompt_user_for_remote_name
|
67
|
-
|
77
|
+
prompt = <<-EOS
|
78
|
+
No remote configured. git fyncy looks under the fyncy section of your git
|
79
|
+
config for a remote name or a url (i.e. at fyncy.remote and fyncy.url). If a
|
80
|
+
remote name is specified, that remote's url be used with any ".git" suffix
|
81
|
+
removed.
|
82
|
+
|
83
|
+
Enter a remote name to use (or press return to use #{DEFAULT_REMOTE}):
|
84
|
+
EOS
|
85
|
+
print prompt.chomp
|
86
|
+
|
68
87
|
remote_name = gets.chomp
|
69
88
|
remote_name = DEFAULT_REMOTE if remote_name.empty?
|
70
89
|
if remote_defined?(remote_name)
|
71
90
|
puts
|
72
91
|
else
|
73
|
-
pexit "A remote by the name of #{remote_name} is not defined in this repo."
|
92
|
+
pexit "A remote by the name of \"#{remote_name}\" is not defined in this repo."
|
74
93
|
end
|
75
94
|
|
76
|
-
if
|
95
|
+
if configure_fyncy_remote_name remote_name
|
77
96
|
remote_name
|
78
97
|
else
|
79
|
-
pexit "Failed to set #{
|
98
|
+
pexit "Failed to set #{GIT_CONFIG.fetch(:remote_name)} to #{remote_name}."
|
80
99
|
end
|
81
100
|
end
|
82
101
|
|
83
102
|
def self.host_and_path_from_current_repo
|
84
103
|
# Determine remote fyncy should use
|
85
|
-
|
104
|
+
url = url_from_config
|
105
|
+
return host_and_path_from_url url if url
|
106
|
+
|
107
|
+
remote_name = remote_name_from_config
|
86
108
|
remote_name = prompt_user_for_remote_name unless remote_name
|
87
109
|
res = nil
|
88
110
|
res = host_and_path_for_remote remote_name if remote_name
|
data/lib/git-fyncy/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-fyncy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: listen
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,12 @@ dependencies:
|
|
21
21
|
version: '1.3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
25
30
|
description: The funky git aware syncer.
|
26
31
|
email:
|
27
32
|
- ryan@ryanmcg.com
|
@@ -65,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
70
|
version: '0'
|
66
71
|
requirements: []
|
67
72
|
rubyforge_project:
|
68
|
-
rubygems_version: 1.8.
|
73
|
+
rubygems_version: 1.8.25
|
69
74
|
signing_key:
|
70
75
|
specification_version: 3
|
71
76
|
summary: Want to sync the working directories of your git directory with a remote
|