rake_commit 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rake_commit/commit.rb +10 -2
- data/lib/rake_commit/commit_message.rb +48 -4
- data/lib/rake_commit/git.rb +9 -5
- data/lib/rake_commit/git_svn.rb +1 -1
- data/lib/rake_commit/prompt_line.rb +24 -15
- data/lib/rake_commit/svn.rb +1 -1
- metadata +74 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dab391ea20c75c033c4428c8cc93c3a46925831b
|
4
|
+
data.tar.gz: d33a3fa4b68229d9382b9a0660e0a9707eedc369
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cb506b14ed438f93e4a9fe3968555006be3f7bf5768e6a64f276c4d6cda0559cd37fde3cbac3933b6ddd2357a46c799b917eb7e3ae27a43dd57f644c505a99f
|
7
|
+
data.tar.gz: cfa603c49218a9c05cc4e87f711df28c9404465bb3461709d6d23588e2d421343857f7a8b4d356b130250f0f82b2a1bc55b3e26a126ce5271adf3163b4fcd7bd
|
data/lib/rake_commit/commit.rb
CHANGED
@@ -19,7 +19,9 @@ module RakeCommit
|
|
19
19
|
:collapse_commits => true,
|
20
20
|
:incremental => false,
|
21
21
|
:prompt_exclusions => [],
|
22
|
-
:build_command => "rake"
|
22
|
+
:build_command => "rake",
|
23
|
+
:commit_message_wrap => nil, # integer or nil
|
24
|
+
:commit_message_type => CommitMessage::MessageType::MESSAGE
|
23
25
|
}
|
24
26
|
|
25
27
|
if File.exists?(".rake_commit")
|
@@ -31,7 +33,7 @@ module RakeCommit
|
|
31
33
|
if git_svn?
|
32
34
|
RakeCommit::GitSvn.new(options[:prompt_exclusions]).commit
|
33
35
|
elsif git?
|
34
|
-
RakeCommit::Git.new(options[:build_command], options[:collapse_commits], options[:rebase_only], options[:incremental], options[:prompt_exclusions], options[:precommit]).commit
|
36
|
+
RakeCommit::Git.new(options[:build_command], options[:collapse_commits], options[:rebase_only], options[:incremental], options[:prompt_exclusions], options[:precommit], options[:commit_message_wrap], options[:commit_message_type]).commit
|
35
37
|
else
|
36
38
|
RakeCommit::Svn.new(options[:prompt_exclusions]).commit
|
37
39
|
end
|
@@ -63,6 +65,12 @@ module RakeCommit
|
|
63
65
|
opts.on("-b", "--build-command SCRIPT", "the command that verifies the commit, defaults to rake") do |command|
|
64
66
|
options[:build_command] = command
|
65
67
|
end
|
68
|
+
opts.on("--word-wrap [80]", "word wrap the commit message (default no wrap)") do |commit_message_wrap|
|
69
|
+
options[:commit_message_wrap] = commit_message_wrap.to_i
|
70
|
+
end
|
71
|
+
opts.on("-m", "--message-type [MESSAGE|WHATWHY]", "the type of commit message to prompt for (only works on Git)") do |commit_message_type|
|
72
|
+
options[:commit_message_type] = commit_message_type.downcase
|
73
|
+
end
|
66
74
|
end
|
67
75
|
|
68
76
|
parser.parse(args)
|
@@ -1,16 +1,60 @@
|
|
1
|
+
require 'word_wrap'
|
2
|
+
|
1
3
|
module RakeCommit
|
2
4
|
class CommitMessage
|
5
|
+
module MessageType
|
6
|
+
MESSAGE = "message"
|
7
|
+
WHAT_AND_WHY = "whatwhy"
|
8
|
+
end
|
9
|
+
|
10
|
+
SUBJECT_MAX_LENGTH = 50
|
3
11
|
|
4
12
|
attr_reader :author, :feature, :message
|
5
13
|
|
6
|
-
def initialize(prompt_exclusions = [])
|
14
|
+
def initialize(prompt_exclusions = [], type = MessageType::MESSAGE)
|
7
15
|
@author = RakeCommit::PromptLine.new("author", prompt_exclusions).prompt
|
8
16
|
@feature = RakeCommit::PromptLine.new("feature", prompt_exclusions).prompt
|
9
|
-
@message =
|
17
|
+
@message = case type
|
18
|
+
when MessageType::MESSAGE
|
19
|
+
RakeCommit::PromptLine.new("message", prompt_exclusions).prompt
|
20
|
+
when MessageType::WHAT_AND_WHY
|
21
|
+
what = RakeCommit::PromptLine.new("what", prompt_exclusions).prompt
|
22
|
+
why = RakeCommit::PromptLine.new("why", prompt_exclusions).prompt
|
23
|
+
|
24
|
+
subject_space_remaining = SUBJECT_MAX_LENGTH - @feature.length
|
25
|
+
truncated_what = what[0...subject_space_remaining]
|
26
|
+
subject = RakeCommit::PromptLine.new("subject", prompt_exclusions, truncated_what).prompt
|
27
|
+
|
28
|
+
create_message_with_subject_what_and_why(subject, what, why)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def joined_message(wrap = nil)
|
33
|
+
message = [@feature, @message].compact.join(' - ')
|
34
|
+
message = WordWrap.ww(message, wrap) if wrap
|
35
|
+
message
|
36
|
+
end
|
37
|
+
|
38
|
+
def joined_message_with_author(wrap = nil)
|
39
|
+
message = [@author, @feature, @message].compact.join(' - ')
|
40
|
+
message = WordWrap.ww(message, wrap) if wrap
|
41
|
+
message
|
10
42
|
end
|
11
43
|
|
12
|
-
|
13
|
-
|
44
|
+
private
|
45
|
+
|
46
|
+
def create_message_with_subject_what_and_why(subject, what, why)
|
47
|
+
<<-EOS
|
48
|
+
#{subject}
|
49
|
+
|
50
|
+
What
|
51
|
+
===
|
52
|
+
#{what}
|
53
|
+
|
54
|
+
Why
|
55
|
+
===
|
56
|
+
#{why}
|
57
|
+
EOS
|
14
58
|
end
|
15
59
|
end
|
16
60
|
end
|
data/lib/rake_commit/git.rb
CHANGED
@@ -3,13 +3,15 @@ require 'shellwords'
|
|
3
3
|
module RakeCommit
|
4
4
|
class Git
|
5
5
|
|
6
|
-
def initialize(build_command, collapse_commits = true, rebase_only = false, incremental = false, prompt_exclusions = [], precommit = nil)
|
6
|
+
def initialize(build_command, collapse_commits = true, rebase_only = false, incremental = false, prompt_exclusions = [], precommit = nil, commit_message_wrap = nil, commit_message_type = MessageType::MESSAGE)
|
7
7
|
@build_command = build_command
|
8
8
|
@collapse_commits = collapse_commits
|
9
9
|
@rebase_only = rebase_only
|
10
10
|
@incremental = incremental
|
11
11
|
@prompt_exclusions = prompt_exclusions
|
12
12
|
@precommit = precommit
|
13
|
+
@commit_message_wrap = commit_message_wrap
|
14
|
+
@commit_message_type = commit_message_type
|
13
15
|
end
|
14
16
|
|
15
17
|
def commit
|
@@ -23,8 +25,10 @@ module RakeCommit
|
|
23
25
|
if collapse_git_commits?
|
24
26
|
return unless collapse_git_commits
|
25
27
|
elsif rebase_only?
|
26
|
-
|
27
|
-
|
28
|
+
unless nothing_to_commit?
|
29
|
+
puts "You have uncommitted changes. Please amend, stash, or clean and retry."
|
30
|
+
exit 1
|
31
|
+
end
|
28
32
|
pull_rebase rescue return false
|
29
33
|
end
|
30
34
|
RakeCommit::Shell.system(@build_command)
|
@@ -73,11 +77,11 @@ module RakeCommit
|
|
73
77
|
end
|
74
78
|
|
75
79
|
def incremental_commit
|
76
|
-
commit_message = RakeCommit::CommitMessage.new(@prompt_exclusions)
|
80
|
+
commit_message = RakeCommit::CommitMessage.new(@prompt_exclusions, @commit_message_type)
|
77
81
|
unless commit_message.author.nil?
|
78
82
|
RakeCommit::Shell.system("git config user.name #{Shellwords.shellescape(commit_message.author)}")
|
79
83
|
end
|
80
|
-
message =
|
84
|
+
message = commit_message.joined_message(@commit_message_wrap)
|
81
85
|
RakeCommit::Shell.system("git commit -m #{Shellwords.shellescape(message)}")
|
82
86
|
end
|
83
87
|
|
data/lib/rake_commit/git_svn.rb
CHANGED
@@ -17,7 +17,7 @@ module RakeCommit
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def git_svn_commit_with_message
|
20
|
-
message = RakeCommit::CommitMessage.new(@prompt_exclusions).
|
20
|
+
message = RakeCommit::CommitMessage.new(@prompt_exclusions).joined_message_with_author
|
21
21
|
RakeCommit::Shell.system "git commit -m #{message.inspect}"
|
22
22
|
end
|
23
23
|
|
@@ -5,21 +5,29 @@ module RakeCommit
|
|
5
5
|
class PromptLine
|
6
6
|
include Readline
|
7
7
|
|
8
|
-
def initialize(attribute, prompt_exclusions = [])
|
8
|
+
def initialize(attribute, prompt_exclusions = [], default_value = nil)
|
9
9
|
@attribute = attribute
|
10
10
|
@prompt_exclusions = prompt_exclusions
|
11
|
+
@default_value = default_value
|
11
12
|
end
|
12
13
|
|
13
14
|
def prompt
|
14
15
|
return nil if @prompt_exclusions.include?(@attribute)
|
16
|
+
|
17
|
+
puts "\n"
|
18
|
+
puts "previous #{@attribute}: #{previous_input}" if previous_input
|
19
|
+
|
20
|
+
set_readline_default_input(@default_value) if @default_value
|
21
|
+
set_readline_history
|
22
|
+
|
15
23
|
input = nil
|
16
24
|
loop do
|
17
|
-
input = readline(
|
25
|
+
input = readline("#{@attribute}: ").chomp
|
18
26
|
break unless (input.empty? && !previous_input)
|
19
27
|
end
|
20
28
|
|
21
29
|
unless input.empty?
|
22
|
-
|
30
|
+
append_history(input)
|
23
31
|
return input
|
24
32
|
end
|
25
33
|
|
@@ -27,18 +35,20 @@ module RakeCommit
|
|
27
35
|
return previous_input
|
28
36
|
end
|
29
37
|
|
30
|
-
|
31
|
-
previous_message = "\n"
|
32
|
-
previous_message += "previous #{@attribute}: #{previous_input}\n" if previous_input
|
33
|
-
puts previous_message
|
34
|
-
"#{@attribute}: "
|
35
|
-
end
|
38
|
+
private
|
36
39
|
|
37
|
-
def
|
40
|
+
def append_history(input)
|
38
41
|
File.open(history_file, "a") { |f| f.puts(input) }
|
39
42
|
end
|
40
43
|
|
41
|
-
|
44
|
+
def set_readline_default_input(default_input)
|
45
|
+
Readline.pre_input_hook = lambda do
|
46
|
+
Readline.insert_text(default_input)
|
47
|
+
Readline.redisplay
|
48
|
+
Readline.pre_input_hook = nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
42
52
|
def previous_input
|
43
53
|
@previous_input ||= history.last
|
44
54
|
end
|
@@ -47,13 +57,12 @@ module RakeCommit
|
|
47
57
|
@history ||= load_history
|
48
58
|
end
|
49
59
|
|
50
|
-
def
|
60
|
+
def set_readline_history
|
51
61
|
HISTORY.pop until HISTORY.empty?
|
52
|
-
HISTORY.push(*
|
53
|
-
HISTORY.to_a
|
62
|
+
HISTORY.push(*history)
|
54
63
|
end
|
55
64
|
|
56
|
-
def
|
65
|
+
def load_history
|
57
66
|
File.exists?(history_file) ? File.read(history_file).split("\n") : []
|
58
67
|
end
|
59
68
|
|
data/lib/rake_commit/svn.rb
CHANGED
@@ -10,7 +10,7 @@ module RakeCommit
|
|
10
10
|
|
11
11
|
def commit
|
12
12
|
if files_to_check_in?
|
13
|
-
message = RakeCommit::CommitMessage.new(@prompt_exclusions).
|
13
|
+
message = RakeCommit::CommitMessage.new(@prompt_exclusions).joined_message_with_author
|
14
14
|
RakeCommit::Shell.system(@precommit) unless @precommit.nil?
|
15
15
|
add
|
16
16
|
delete
|
metadata
CHANGED
@@ -1,15 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake_commit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Gross
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2016-04-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.2.2
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '11'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.9.2.2
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '11'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: word_wrap
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mocha
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - '='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.12
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - '='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.9.12
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: test-unit
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3.1'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 3.1.5
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.1'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 3.1.5
|
13
81
|
description: See http://github.com/pgr0ss/rake_commit
|
14
82
|
email: pgross@gmail.com
|
15
83
|
executables:
|
@@ -39,17 +107,17 @@ require_paths:
|
|
39
107
|
- lib
|
40
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
41
109
|
requirements:
|
42
|
-
- -
|
110
|
+
- - ">="
|
43
111
|
- !ruby/object:Gem::Version
|
44
112
|
version: '0'
|
45
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
114
|
requirements:
|
47
|
-
- -
|
115
|
+
- - ">="
|
48
116
|
- !ruby/object:Gem::Version
|
49
117
|
version: '0'
|
50
118
|
requirements: []
|
51
119
|
rubyforge_project: rake_commit
|
52
|
-
rubygems_version: 2.4.
|
120
|
+
rubygems_version: 2.4.5.1
|
53
121
|
signing_key:
|
54
122
|
specification_version: 4
|
55
123
|
summary: A gem which helps with checking in code
|