git_switch 0.3.2 → 0.4.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.
- checksums.yaml +4 -4
- data/lib/git_switch/config.rb +57 -0
- data/lib/git_switch/options.rb +28 -9
- data/lib/git_switch/switcher.rb +16 -47
- data/lib/git_switch/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4682e1a21cd0fcf56ba298bc9de39312bc7de40fd2cc7060853c9f452a934b79
|
4
|
+
data.tar.gz: 378010b8b024f582759db350d4d6eeb21c15cc8ee7fe3a4807985bb37e335c55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f825028bb0d5296d3a260b5a6dd142e3c457debf9aee12ddd01d2f069007a85940b464e0366fde6cc1761e81230ab2daa2802ad3e47bb2e7b33ff382d92827c3
|
7
|
+
data.tar.gz: 2a0a4755354d88147f41459bae0aeef877a7a145300e77b49d830b972253caa9240776c69d0a85ee48430487ea3516ab78419c330c76cf4bb7e8e80de43da424
|
data/lib/git_switch/config.rb
CHANGED
@@ -42,6 +42,63 @@ module GitSwitch
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
def configure!
|
46
|
+
@profiles = build_profiles
|
47
|
+
write_profiles_to_config_file if @profiles.any?
|
48
|
+
end
|
49
|
+
|
50
|
+
def build_profiles
|
51
|
+
puts "How many profiles would you like to create?"
|
52
|
+
profile_count = STDIN.gets.chomp.to_i
|
53
|
+
profiles = Array.new(profile_count, {})
|
54
|
+
current = 1
|
55
|
+
profiles.map do |profile|
|
56
|
+
puts "\n#{ordinal(current)} profile name (e.g. 'work' or 'personal'):"
|
57
|
+
profile[:profile_name] = STDIN.gets.chomp
|
58
|
+
puts "Git username for #{profile[:profile_name]}:"
|
59
|
+
profile[:git_username] = STDIN.gets.chomp
|
60
|
+
puts "Git email for #{profile[:profile_name]}:"
|
61
|
+
profile[:git_email] = STDIN.gets.chomp
|
62
|
+
puts "Git name for #{profile[:profile_name]}:"
|
63
|
+
profile[:git_name] = STDIN.gets.chomp
|
64
|
+
puts "Path to ssh key for #{profile[:profile_name]} (e.g. '~/.ssh/id_rsa'):"
|
65
|
+
profile[:ssh_key] = STDIN.gets.chomp
|
66
|
+
|
67
|
+
current +=1
|
68
|
+
profile.dup
|
69
|
+
end
|
70
|
+
rescue Interrupt
|
71
|
+
return {}
|
72
|
+
end
|
73
|
+
|
74
|
+
def ordinal(number)
|
75
|
+
# Source: https://github.com/infertux/ordinalize_full
|
76
|
+
abs_number = number.abs
|
77
|
+
suffix = if (11..13).cover?(abs_number % 100)
|
78
|
+
"th"
|
79
|
+
else
|
80
|
+
case abs_number % 10
|
81
|
+
when 1 then "st"
|
82
|
+
when 2 then "nd"
|
83
|
+
when 3 then "rd"
|
84
|
+
else "th"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
"#{abs_number}#{suffix}"
|
88
|
+
end
|
89
|
+
|
90
|
+
def write_profiles_to_config_file
|
91
|
+
File.open(File.expand_path('~/.gitswitch'), 'w') do |file|
|
92
|
+
profiles.each do |profile|
|
93
|
+
file.write "#{profile[:profile_name]}:\n"
|
94
|
+
file.write " username: #{profile[:git_username]}\n"
|
95
|
+
file.write " email: #{profile[:git_email]}\n"
|
96
|
+
file.write " name: #{profile[:git_name]}\n"
|
97
|
+
file.write " ssh: #{profile[:ssh_key]}\n"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
45
102
|
def print_list
|
46
103
|
profiles = @profiles.map do |key, value|
|
47
104
|
prefix = value["username"] == current_git_username ? "=>" : " "
|
data/lib/git_switch/options.rb
CHANGED
@@ -7,16 +7,19 @@ module GitSwitch
|
|
7
7
|
|
8
8
|
def flags
|
9
9
|
@flags ||= args.select do |arg|
|
10
|
-
arg.match(/\A\-[
|
11
|
-
arg.match(/\A\-\-(global|list|verbose){1}\z/)
|
10
|
+
arg.match(/\A\-[cglv]{1}\z/) ||
|
11
|
+
arg.match(/\A\-\-(config|global|list|verbose){1}\z/)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
def valid_args?
|
16
|
-
if
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
if config_flag? && args.count == 1
|
17
|
+
return true
|
18
|
+
elsif list_flag? && args.count == 1
|
19
|
+
return true
|
20
|
+
elsif no_flags?
|
21
|
+
return true
|
22
|
+
elsif one_flag? && !flag_only?
|
20
23
|
return true
|
21
24
|
elsif usage?
|
22
25
|
return true
|
@@ -30,8 +33,12 @@ module GitSwitch
|
|
30
33
|
args.count == 0
|
31
34
|
end
|
32
35
|
|
36
|
+
def config?
|
37
|
+
config_flag? && args.count == 1
|
38
|
+
end
|
39
|
+
|
33
40
|
def list?
|
34
|
-
|
41
|
+
list_flag? && args.count == 1
|
35
42
|
end
|
36
43
|
|
37
44
|
def global?
|
@@ -44,14 +51,26 @@ module GitSwitch
|
|
44
51
|
|
45
52
|
private
|
46
53
|
|
47
|
-
def
|
54
|
+
def list_flag?
|
55
|
+
(flags.include? '-l') || (flags.include? '--list')
|
56
|
+
end
|
57
|
+
|
58
|
+
def config_flag?
|
59
|
+
(flags.include? '-c') || (flags.include? '--config')
|
60
|
+
end
|
61
|
+
|
62
|
+
def no_flags?
|
48
63
|
args.length == 1 && flag_count(args) == 0
|
49
64
|
end
|
50
65
|
|
51
|
-
def one_flag?
|
66
|
+
def one_flag?
|
52
67
|
args.length == 2 && flag_count(args) == 1
|
53
68
|
end
|
54
69
|
|
70
|
+
def flag_only?
|
71
|
+
list_flag? || config_flag?
|
72
|
+
end
|
73
|
+
|
55
74
|
def flag_count(args)
|
56
75
|
args.count {|a| a.start_with? '-'}
|
57
76
|
end
|
data/lib/git_switch/switcher.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require_relative './version'
|
2
|
+
require 'active_support/core_ext/module/delegation'
|
2
3
|
|
3
4
|
module GitSwitch
|
4
5
|
class Switcher
|
5
6
|
attr_reader :config, :options
|
7
|
+
delegate :usage?, :config?, :list?, :global?, to: :options
|
8
|
+
delegate :profile, :name, :username, :email, :ssh, :print_list, :configure!, :valid_profile?, to: :config
|
6
9
|
|
7
10
|
def initialize(args)
|
8
11
|
raise ArgumentError unless args.is_a? Array
|
@@ -11,8 +14,11 @@ module GitSwitch
|
|
11
14
|
end
|
12
15
|
|
13
16
|
def run
|
17
|
+
return unless options.valid_args?
|
14
18
|
if usage?
|
15
19
|
print_usage
|
20
|
+
elsif config?
|
21
|
+
configure!
|
16
22
|
elsif list?
|
17
23
|
print_list
|
18
24
|
else
|
@@ -20,38 +26,6 @@ module GitSwitch
|
|
20
26
|
end
|
21
27
|
end
|
22
28
|
|
23
|
-
def profile
|
24
|
-
config.profile
|
25
|
-
end
|
26
|
-
|
27
|
-
def name
|
28
|
-
config.name
|
29
|
-
end
|
30
|
-
|
31
|
-
def username
|
32
|
-
config.username
|
33
|
-
end
|
34
|
-
|
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?
|
53
|
-
end
|
54
|
-
|
55
29
|
def git_repo?
|
56
30
|
if GitHelper.git_repo? || global?
|
57
31
|
return true
|
@@ -61,13 +35,8 @@ module GitSwitch
|
|
61
35
|
end
|
62
36
|
end
|
63
37
|
|
64
|
-
def valid_profile?
|
65
|
-
config.valid_profile?
|
66
|
-
end
|
67
|
-
|
68
38
|
def set!
|
69
|
-
return unless
|
70
|
-
return unless git_repo?
|
39
|
+
return unless valid_profile? && git_repo?
|
71
40
|
|
72
41
|
flag = global? ? '--global' : ''
|
73
42
|
|
@@ -80,10 +49,6 @@ module GitSwitch
|
|
80
49
|
puts usage
|
81
50
|
end
|
82
51
|
|
83
|
-
def print_list
|
84
|
-
config.print_list
|
85
|
-
end
|
86
|
-
|
87
52
|
def print_settings(flag = '')
|
88
53
|
if options.verbose?
|
89
54
|
puts "\nGit Config:"
|
@@ -110,19 +75,23 @@ module GitSwitch
|
|
110
75
|
|
111
76
|
def usage
|
112
77
|
<<~USAGE
|
113
|
-
usage: git switch [-l | --list]
|
78
|
+
usage: git switch [-l | --list] [-c | --config]
|
79
|
+
<profile> [-v | --verbose] [-g | --global]
|
80
|
+
|
81
|
+
configure profiles
|
82
|
+
git switch -c
|
114
83
|
|
115
84
|
switch to a profile for local development only
|
116
|
-
|
85
|
+
git switch <profile>
|
117
86
|
|
118
87
|
switch to a profile globally
|
119
|
-
|
88
|
+
git switch -g <profile>
|
120
89
|
|
121
90
|
switch to a profile and see all output
|
122
|
-
|
91
|
+
git switch -v <profile>
|
123
92
|
|
124
93
|
see available profiles
|
125
|
-
|
94
|
+
git switch -l
|
126
95
|
USAGE
|
127
96
|
end
|
128
97
|
end
|
data/lib/git_switch/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git_switch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
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: 2019-01-
|
11
|
+
date: 2019-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.2'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
33
|
+
version: '1.17'
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
40
|
+
version: '1.17'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|