git_switch 0.3.0 → 0.3.2
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.
- checksums.yaml +5 -5
- data/lib/git_switch/config.rb +65 -0
- data/lib/git_switch/options.rb +6 -0
- data/lib/git_switch/switcher.rb +60 -49
- data/lib/git_switch/version.rb +1 -1
- data/lib/git_switch.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7ef41c6c02e2a0139590b8455ae0f0df5730439e1ebf51bf79552854ce08f18a
|
4
|
+
data.tar.gz: 711caa5c3378da0e60ceee25d935e564efeee262c27b3cbe74b1d4ada3ba457c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b8fab1051a79af43ac94fc40012622c9d70543e0f930f4dcef2dbf3a913423c58726e9d9d2f89399f3548540641ce0cc1d0e190f960a47b0b522de9d6c4d548
|
7
|
+
data.tar.gz: d1d04826119f0a020e1f8e03231a71c69017f31e0dcdafa4f98d98f801bbb9c7f1dbf1fb01e4d9fc70116fbe4aac89ee3010a116da0c70c11b1b2f592ffee582
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module GitSwitch
|
4
|
+
class Config
|
5
|
+
attr_reader :profiles, :selected_profile
|
6
|
+
def initialize(args)
|
7
|
+
@profiles = load!
|
8
|
+
@args = args
|
9
|
+
@selected_profile = get_profile(args)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_profile(args)
|
13
|
+
args.detect {|a| !a.start_with? '-'}
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
profiles[selected_profile]["name"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def username
|
21
|
+
profiles[selected_profile]["username"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def email
|
25
|
+
profiles[selected_profile]["email"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def ssh
|
29
|
+
profiles[selected_profile]["ssh"]
|
30
|
+
end
|
31
|
+
|
32
|
+
def profile
|
33
|
+
@selected_profile
|
34
|
+
end
|
35
|
+
|
36
|
+
def valid_profile?
|
37
|
+
if profiles.has_key?(selected_profile)
|
38
|
+
return true
|
39
|
+
else
|
40
|
+
puts "Profile '#{selected_profile}' not found!"
|
41
|
+
return false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def print_list
|
46
|
+
profiles = @profiles.map do |key, value|
|
47
|
+
prefix = value["username"] == current_git_username ? "=>" : " "
|
48
|
+
"#{prefix} #{key}"
|
49
|
+
end
|
50
|
+
puts profiles
|
51
|
+
puts "\n# => - current" if @profiles.any? {|key, value| value["username"] == current_git_username}
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def load!
|
57
|
+
# TODO: RCR - Handle missing or empty config file
|
58
|
+
YAML.load_file(File.expand_path('~/.gitswitch')) || {}
|
59
|
+
end
|
60
|
+
|
61
|
+
def current_git_username
|
62
|
+
`git config user.username`.chomp
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/git_switch/options.rb
CHANGED
@@ -18,12 +18,18 @@ module GitSwitch
|
|
18
18
|
return false
|
19
19
|
elsif no_flags?(args) || one_flag?(args)
|
20
20
|
return true
|
21
|
+
elsif usage?
|
22
|
+
return true
|
21
23
|
else
|
22
24
|
puts "Invalid args"
|
23
25
|
return false
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
29
|
+
def usage?
|
30
|
+
args.count == 0
|
31
|
+
end
|
32
|
+
|
27
33
|
def list?
|
28
34
|
(flags.include? '-l') || (flags.include? '--list')
|
29
35
|
end
|
data/lib/git_switch/switcher.rb
CHANGED
@@ -1,40 +1,55 @@
|
|
1
|
-
require 'yaml'
|
2
1
|
require_relative './version'
|
3
2
|
|
4
3
|
module GitSwitch
|
5
4
|
class Switcher
|
6
|
-
attr_reader :config, :
|
5
|
+
attr_reader :config, :options
|
7
6
|
|
8
7
|
def initialize(args)
|
9
8
|
raise ArgumentError unless args.is_a? Array
|
10
|
-
@config = load_config
|
11
9
|
@options = GitSwitch::Options.new(args)
|
12
|
-
@
|
10
|
+
@config = GitSwitch::Config.new(args)
|
13
11
|
end
|
14
12
|
|
15
13
|
def run
|
16
|
-
|
14
|
+
if usage?
|
15
|
+
print_usage
|
16
|
+
elsif list?
|
17
|
+
print_list
|
18
|
+
else
|
19
|
+
set!
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
|
-
def
|
20
|
-
|
23
|
+
def profile
|
24
|
+
config.profile
|
21
25
|
end
|
22
26
|
|
23
|
-
def
|
24
|
-
|
27
|
+
def name
|
28
|
+
config.name
|
25
29
|
end
|
26
30
|
|
27
|
-
def
|
28
|
-
|
31
|
+
def username
|
32
|
+
config.username
|
29
33
|
end
|
30
34
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
def email
|
36
|
+
config.email
|
37
|
+
end
|
38
|
+
|
39
|
+
def ssh
|
40
|
+
config.ssh
|
41
|
+
end
|
42
|
+
|
43
|
+
def usage?
|
44
|
+
options.usage?
|
45
|
+
end
|
46
|
+
|
47
|
+
def list?
|
48
|
+
options.list?
|
49
|
+
end
|
50
|
+
|
51
|
+
def global?
|
52
|
+
options.global?
|
38
53
|
end
|
39
54
|
|
40
55
|
def git_repo?
|
@@ -46,6 +61,10 @@ module GitSwitch
|
|
46
61
|
end
|
47
62
|
end
|
48
63
|
|
64
|
+
def valid_profile?
|
65
|
+
config.valid_profile?
|
66
|
+
end
|
67
|
+
|
49
68
|
def set!
|
50
69
|
return unless options.valid_args? && valid_profile?
|
51
70
|
return unless git_repo?
|
@@ -57,13 +76,12 @@ module GitSwitch
|
|
57
76
|
print_settings(flag)
|
58
77
|
end
|
59
78
|
|
79
|
+
def print_usage
|
80
|
+
puts usage
|
81
|
+
end
|
82
|
+
|
60
83
|
def print_list
|
61
|
-
|
62
|
-
prefix = value["username"] == current_git_username ? "=>" : " "
|
63
|
-
"#{prefix} #{key}"
|
64
|
-
end
|
65
|
-
puts profiles
|
66
|
-
puts "\n# => - current" if config.any? {|key, value| value["username"] == current_git_username}
|
84
|
+
config.print_list
|
67
85
|
end
|
68
86
|
|
69
87
|
def print_settings(flag = '')
|
@@ -79,31 +97,6 @@ module GitSwitch
|
|
79
97
|
|
80
98
|
private
|
81
99
|
|
82
|
-
def load_config
|
83
|
-
# TODO: RCR - Handle missing or empty config file
|
84
|
-
YAML.load_file(File.expand_path('~/.gitswitch')) || {}
|
85
|
-
end
|
86
|
-
|
87
|
-
def current_git_username
|
88
|
-
`git config user.username`.chomp
|
89
|
-
end
|
90
|
-
|
91
|
-
def name
|
92
|
-
config[profile]["name"]
|
93
|
-
end
|
94
|
-
|
95
|
-
def username
|
96
|
-
config[profile]["username"]
|
97
|
-
end
|
98
|
-
|
99
|
-
def email
|
100
|
-
config[profile]["email"]
|
101
|
-
end
|
102
|
-
|
103
|
-
def ssh
|
104
|
-
config[profile]["ssh"]
|
105
|
-
end
|
106
|
-
|
107
100
|
def set_git_config(flag)
|
108
101
|
`git config #{flag} user.name "#{name}"`
|
109
102
|
`git config #{flag} user.username "#{username}"`
|
@@ -114,5 +107,23 @@ module GitSwitch
|
|
114
107
|
`ssh-add -D`
|
115
108
|
`ssh-add #{ssh}`
|
116
109
|
end
|
110
|
+
|
111
|
+
def usage
|
112
|
+
<<~USAGE
|
113
|
+
usage: git switch [-l | --list] <profile> [-v | --verbose] [-g | --global]
|
114
|
+
|
115
|
+
switch to a profile for local development only
|
116
|
+
git switch <profile>
|
117
|
+
|
118
|
+
switch to a profile globally
|
119
|
+
git switch -g <profile>
|
120
|
+
|
121
|
+
switch to a profile and see all output
|
122
|
+
git switch -v <profile>
|
123
|
+
|
124
|
+
see available profiles
|
125
|
+
git switch -l
|
126
|
+
USAGE
|
127
|
+
end
|
117
128
|
end
|
118
129
|
end
|
data/lib/git_switch/version.rb
CHANGED
data/lib/git_switch.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_switch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Randall Reed, Jr.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -76,6 +76,7 @@ extra_rdoc_files: []
|
|
76
76
|
files:
|
77
77
|
- bin/git-switch
|
78
78
|
- lib/git_switch.rb
|
79
|
+
- lib/git_switch/config.rb
|
79
80
|
- lib/git_switch/git_helper.rb
|
80
81
|
- lib/git_switch/options.rb
|
81
82
|
- lib/git_switch/switcher.rb
|
@@ -100,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
101
|
version: '0'
|
101
102
|
requirements: []
|
102
103
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
104
|
+
rubygems_version: 2.7.7
|
104
105
|
signing_key:
|
105
106
|
specification_version: 4
|
106
107
|
summary: Switch between git profiles
|