rlt 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/exe/rlt +12 -2
- data/lib/rlt/cli.rb +43 -0
- data/lib/rlt/commands/close.rb +94 -0
- data/lib/rlt/commands/{cmt_command.rb → cmt.rb} +12 -38
- data/lib/rlt/commands/switch.rb +57 -0
- data/lib/rlt/config.rb +8 -8
- data/lib/rlt/debug.rb +7 -0
- data/lib/rlt/error.rb +6 -0
- data/lib/rlt/utils/colored_text.rb +29 -0
- data/lib/rlt/utils/git_util.rb +113 -0
- data/lib/rlt/utils/logger.rb +29 -0
- data/lib/rlt/utils/shell.rb +39 -0
- data/lib/rlt/utils/string_util.rb +19 -0
- data/lib/rlt/version.rb +1 -1
- data/lib/rlt.rb +8 -20
- metadata +36 -35
- data/.gitignore +0 -13
- data/.rlt.sample.yml +0 -27
- data/.rspec +0 -3
- data/.rubocop.yml +0 -9
- data/.ruby-version +0 -1
- data/.travis.yml +0 -5
- data/CODE_OF_CONDUCT.md +0 -74
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -78
- data/LICENSE.txt +0 -21
- data/README.md +0 -142
- data/Rakefile +0 -8
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/lib/rlt/base_command.rb +0 -17
- data/lib/rlt/colored_text.rb +0 -27
- data/lib/rlt/command_runner.rb +0 -37
- data/lib/rlt/commands/switch_command.rb +0 -78
- data/lib/rlt/commands_map.rb +0 -37
- data/lib/rlt/git_native_command_builder.rb +0 -25
- data/lib/rlt/logger.rb +0 -27
- data/lib/rlt/register_aliases.rb +0 -14
- data/lib/rlt/register_commands.rb +0 -25
- data/lib/rlt/shell.rb +0 -23
- data/releases/rlt-0.1.0.tar.gz +0 -0
- data/rlt.gemspec +0 -34
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'erb'
|
4
|
-
|
5
|
-
module Rlt
|
6
|
-
module Commands
|
7
|
-
class SwitchCommand < BaseCommand
|
8
|
-
CONF_BRANCH_NAME_TEMPLATE = 'branch_name_template'.freeze
|
9
|
-
|
10
|
-
def self.run(config, *arguments)
|
11
|
-
branch_name = change_branch_name(config, arguments[0])
|
12
|
-
save_stash_if_any
|
13
|
-
switch(branch_name)
|
14
|
-
apply_stash_if_any(branch_name)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.change_branch_name(config, branch_name)
|
18
|
-
return branch_name if exclude?(config, branch_name)
|
19
|
-
branch_name_template = config[CONF_BRANCH_NAME_TEMPLATE]
|
20
|
-
return branch_name if branch_name_template.nil?
|
21
|
-
ERB.new(branch_name_template).result binding
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.save_stash_if_any
|
25
|
-
return if `git status -s`.strip.empty?
|
26
|
-
Logger.info 'Saving stash'
|
27
|
-
Shell.new.run 'git', 'stash', 'save', '--include-untracked', 'Auto stash'
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.apply_stash_if_any(branch_name)
|
31
|
-
name = stash_name(branch_name)
|
32
|
-
return if name.nil?
|
33
|
-
Logger.info 'Applied stash'
|
34
|
-
Shell.new.run 'git', 'stash', 'apply', name, '--index'
|
35
|
-
Shell.new.run 'git', 'stash', 'drop', name
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.exclude?(config, branch_name)
|
39
|
-
list = %w[master develop] + (config['exclude'] || [])
|
40
|
-
list.include? branch_name
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.switch(branch_name)
|
44
|
-
create_and_checkout(branch_name) if checkout(branch_name).failure?
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.checkout(branch_name)
|
48
|
-
result = Shell.new(no_output: true).run_safely 'git', 'checkout', branch_name
|
49
|
-
Logger.info "Switched to '#{branch_name}'." unless result.failure?
|
50
|
-
result
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.create_and_checkout(branch_name)
|
54
|
-
Shell.new(no_output: true).run 'git', 'checkout', '-b', branch_name
|
55
|
-
Logger.info "Created & Switched to '#{branch_name}'."
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.print_help(*_arguments)
|
59
|
-
puts 'USAGE:'
|
60
|
-
puts ' rlt switch <branch_name>'
|
61
|
-
puts ''
|
62
|
-
puts ' This command switches to <branch_name>. It creates the branch if it does not exist.'
|
63
|
-
end
|
64
|
-
|
65
|
-
def self.valid_parameters?(*arguments)
|
66
|
-
arguments.size == 1
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.stash_name(branch_name)
|
70
|
-
line = `git stash list`.strip.split("\n").find do |line|
|
71
|
-
line.split(':')[1].strip == "On #{branch_name}"
|
72
|
-
end
|
73
|
-
return nil if line.nil?
|
74
|
-
line.split(':').first
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
data/lib/rlt/commands_map.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rlt
|
4
|
-
class CommandsMap
|
5
|
-
def self.add(command_name, command_desc, command_class, default_args = [])
|
6
|
-
map[command_name] = {
|
7
|
-
class: command_class,
|
8
|
-
desc: command_desc,
|
9
|
-
default_args: default_args
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.add_alias(command_name, args)
|
14
|
-
dest_command_name = args.first
|
15
|
-
default_args = args[1..-1]
|
16
|
-
dest_command_class = map[dest_command_name][:class]
|
17
|
-
desc = "Alias for \"#{args.join(' ')}\""
|
18
|
-
add(command_name, desc, dest_command_class, default_args)
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.get(command_name)
|
22
|
-
map[command_name]
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.desc(command_name)
|
26
|
-
get(command_name)[:desc]
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.commands
|
30
|
-
map.keys
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.map
|
34
|
-
(@map ||= {})
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Rlt
|
4
|
-
module Commands
|
5
|
-
class GitNativeCommandBuilder
|
6
|
-
# rubocop:disable Metrics/MethodLength
|
7
|
-
def self.build(command)
|
8
|
-
Class.new do
|
9
|
-
define_singleton_method :run do |_config, *arguments|
|
10
|
-
Shell.new.run_safely 'git', command, *arguments
|
11
|
-
end
|
12
|
-
|
13
|
-
define_singleton_method :print_help do |*_arguments|
|
14
|
-
# nothing to do
|
15
|
-
end
|
16
|
-
|
17
|
-
define_singleton_method :valid_parameters? do |*_arguments|
|
18
|
-
true
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
# rubocop:enable Metrics/MethodLength
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/rlt/logger.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'pastel'
|
4
|
-
|
5
|
-
module Rlt
|
6
|
-
class Logger
|
7
|
-
def self.verbose(msg)
|
8
|
-
puts ColoredText.verbose(msg)
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.info(msg)
|
12
|
-
puts ColoredText.info(msg)
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.desc(msg)
|
16
|
-
puts ColoredText.desc(msg)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.warn(msg)
|
20
|
-
puts ColoredText.warn(msg)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.error(msg)
|
24
|
-
puts ColoredText.error(msg)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/rlt/register_aliases.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rlt/commands_map'
|
4
|
-
|
5
|
-
module Rlt
|
6
|
-
class RegisterAliases
|
7
|
-
def self.register
|
8
|
-
Rlt.config_keys('alias').each do |command|
|
9
|
-
args = Rlt.config('alias', command).split(' ')
|
10
|
-
CommandsMap.add_alias(command, args)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rlt/commands_map'
|
4
|
-
|
5
|
-
module Rlt
|
6
|
-
class RegisterCommands
|
7
|
-
# rubocop:disable Metrics/MethodLength
|
8
|
-
def self.register
|
9
|
-
git_native_commands.each do |command|
|
10
|
-
desc = 'Git native command'
|
11
|
-
klass = Commands::GitNativeCommandBuilder.build(command)
|
12
|
-
CommandsMap.add command, desc, klass
|
13
|
-
end
|
14
|
-
|
15
|
-
CommandsMap.add 'switch', 'Switch to branch', Commands::SwitchCommand
|
16
|
-
CommandsMap.add 'cmt', 'Commit in clear way', Commands::CmtCommand
|
17
|
-
end
|
18
|
-
# rubocop:enable Metrics/MethodLength
|
19
|
-
|
20
|
-
def self.git_native_commands
|
21
|
-
%w[add archive bisect branch checkout clone commit config diff fetch grep init
|
22
|
-
log merge mv pull push rebase remote reset rm show status tag]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/rlt/shell.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'etc'
|
4
|
-
require 'tty-command'
|
5
|
-
|
6
|
-
class Shell
|
7
|
-
def initialize(opts = {})
|
8
|
-
printer = opts[:no_output] ? :null : :quiet
|
9
|
-
@cmd = TTY::Command.new(printer: printer, pty: true, dry_run: Rlt.debug)
|
10
|
-
end
|
11
|
-
|
12
|
-
def run(*args)
|
13
|
-
result = @cmd.run(*args, user: Etc.getlogin)
|
14
|
-
puts '' if Rlt.debug
|
15
|
-
result
|
16
|
-
end
|
17
|
-
|
18
|
-
def run_safely(*args)
|
19
|
-
result = @cmd.run!(*args, user: Etc.getlogin)
|
20
|
-
puts '' if Rlt.debug
|
21
|
-
result
|
22
|
-
end
|
23
|
-
end
|
data/releases/rlt-0.1.0.tar.gz
DELETED
Binary file
|
data/rlt.gemspec
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
lib = File.expand_path('lib', __dir__)
|
5
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
-
require 'rlt/version'
|
7
|
-
|
8
|
-
Gem::Specification.new do |spec|
|
9
|
-
spec.name = 'rlt'
|
10
|
-
spec.version = Rlt::VERSION
|
11
|
-
spec.authors = ['Paul Lee']
|
12
|
-
spec.email = ['paul@valuepotion.com']
|
13
|
-
|
14
|
-
spec.summary = 'Go back to command line with `rlt`, the easier git'
|
15
|
-
spec.description = spec.summary
|
16
|
-
spec.homepage = 'https://github.com/eunjae-lee/rlt'
|
17
|
-
spec.license = 'MIT'
|
18
|
-
|
19
|
-
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
|
-
f.match(%r{^(test|spec|features)/})
|
21
|
-
end
|
22
|
-
spec.bindir = 'exe'
|
23
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
|
-
spec.require_paths = ['lib']
|
25
|
-
spec.required_ruby_version = '>= 2.3.0'
|
26
|
-
|
27
|
-
spec.add_dependency 'pastel', '~> 0.7.2'
|
28
|
-
spec.add_dependency 'tty-command', '~> 0.8.0'
|
29
|
-
spec.add_dependency 'tty-prompt', '~> 0.16.1'
|
30
|
-
spec.add_development_dependency 'bundler', '~> 1.16'
|
31
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
32
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
33
|
-
spec.add_development_dependency 'rubocop'
|
34
|
-
end
|