stephencelis-ghi 0.0.9 → 0.1.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.
Files changed (4) hide show
  1. data/History.rdoc +26 -0
  2. data/lib/ghi/cli.rb +23 -13
  3. data/lib/ghi.rb +1 -1
  4. metadata +1 -1
data/History.rdoc CHANGED
@@ -1,3 +1,29 @@
1
+ === 0.1.0 / 2009-04-27
2
+
3
+ * 2 major enhancements
4
+
5
+ * Use tempfiles when we should, the gitdir otherwise.
6
+ * Now a minor!
7
+
8
+
9
+ * 2 minor enhancement
10
+
11
+ * Small ANSI tweaks.
12
+ * Truncation fix.
13
+
14
+
15
+ === 0.0.9 / 2009-04-27
16
+
17
+ * 1 major enhancement
18
+
19
+ * ANSI colors (honors your .gitconfig).
20
+
21
+
22
+ * 1 minor enhancement
23
+
24
+ * Bugfixes.
25
+
26
+
1
27
  === 0.0.8 / 2009-04-26
2
28
 
3
29
  * 1 major enhancement
data/lib/ghi/cli.rb CHANGED
@@ -11,10 +11,10 @@ module GHI::CLI #:nodoc:
11
11
  end
12
12
 
13
13
  def gets_from_editor(issue)
14
- if gitdir
15
- File.open message_path, "a+", &file_proc(issue)
14
+ unless in_repo?
15
+ Tempfile.open message_filename, &file_proc(issue)
16
16
  else
17
- Tempfile.new message_filename, &file_proc(issue)
17
+ File.open message_path, "a+", &file_proc(issue)
18
18
  end
19
19
  return @message if comment?
20
20
  return @message.shift.strip, @message.join.sub(/\b\n\b/, " ").strip
@@ -37,7 +37,7 @@ module GHI::CLI #:nodoc:
37
37
  end
38
38
 
39
39
  def gitdir
40
- @gitdir ||= `git rev-parse --git-dir`.chomp
40
+ @gitdir ||= `git rev-parse --git-dir 2>/dev/null`.chomp
41
41
  end
42
42
 
43
43
  def message_filename
@@ -46,7 +46,7 @@ module GHI::CLI #:nodoc:
46
46
 
47
47
  def file_proc(issue)
48
48
  lambda do |file|
49
- file << edit_format(issue).join("\n") if File.zero? message_path
49
+ file << edit_format(issue).join("\n") if File.zero? file.path
50
50
  file.rewind
51
51
  launch_editor file
52
52
  @message = File.readlines(file.path).find_all { |l| !l.match(/^#/) }
@@ -57,6 +57,10 @@ module GHI::CLI #:nodoc:
57
57
  raise GHI::API::InvalidRequest, "no change" if issue == message
58
58
  end
59
59
  end
60
+
61
+ def in_repo?
62
+ !gitdir.empty? && user == local_user && repo == local_repo
63
+ end
60
64
  end
61
65
 
62
66
  module FormattingHelper
@@ -114,13 +118,13 @@ module GHI::CLI #:nodoc:
114
118
  end
115
119
 
116
120
  def truncate(string, length)
117
- result = string.scan(/.{0,#{length}}(?:\s|\Z)/).first.strip
121
+ result = string.scan(/.{0,#{length - 3}}(?:\s|\Z)/).first.strip
118
122
  result << "..." if result != string
119
123
  result
120
124
  end
121
125
 
122
126
  def indent(string, level = 4)
123
- string.scan(/.{0,#{78 - level}}(?:\s|\Z)/).map { |line|
127
+ string.scan(/.{0,#{79 - level}}(?:\s|\Z)/).map { |line|
124
128
  " " * level + line
125
129
  }
126
130
  end
@@ -133,6 +137,8 @@ module GHI::CLI #:nodoc:
133
137
 
134
138
  def puts(*args)
135
139
  args = args.flatten.each { |arg|
140
+ arg.gsub!(/\B\*(.+)\*\B/) { "\e[1m#$1\e[0m" } # Bold
141
+ arg.gsub!(/\B_(.+)_\B/) { "\e[4m#$1\e[0m" } # Underline
136
142
  arg.gsub!(/(state:)?(# Open.*| open)$/) { "#$1\e[32m#$2\e[0m" }
137
143
  arg.gsub!(/(state:)?(# Closed.*| closed)$/) { "#$1\e[31m#$2\e[0m" }
138
144
  marked = [GHI.login, search_term, tag, "(?:#|gh)-\d+"].compact * "|"
@@ -147,17 +153,20 @@ module GHI::CLI #:nodoc:
147
153
  end
148
154
 
149
155
  def colorize?
150
- return false unless $stdout.isatty
151
156
  return @colorize if defined? @colorize
152
- @colorize = !`git config --get-regexp color`.chomp.empty?
157
+ @colorize = if $stdout.isatty
158
+ !`git config --get-regexp color`.chomp.empty?
159
+ else
160
+ false
161
+ end
153
162
  end
154
163
  end
155
164
 
156
165
  class Executable
157
166
  include FileHelper, FormattingHelper
158
167
 
159
- attr_reader :message, :user, :repo, :api, :action, :state, :search_term,
160
- :number, :title, :body, :tag, :args
168
+ attr_reader :message, :local_user, :local_repo, :user, :repo, :api,
169
+ :action, :state, :search_term, :number, :title, :body, :tag, :args
161
170
 
162
171
  def parse!(*argv)
163
172
  @args = argv
@@ -178,8 +187,9 @@ module GHI::CLI #:nodoc:
178
187
 
179
188
  def run!
180
189
  `git config --get remote.origin.url`.match %r{([^:/]+)/([^/]+).git$}
181
- @user ||= $1
182
- @repo ||= $2
190
+ @local_user, @local_repo = $1, $2
191
+ @user ||= @local_user
192
+ @repo ||= @local_repo
183
193
  @api = GHI::API.new user, repo
184
194
 
185
195
  case action
data/lib/ghi.rb CHANGED
@@ -2,7 +2,7 @@ require "net/http"
2
2
  require "yaml"
3
3
 
4
4
  module GHI
5
- VERSION = "0.0.9"
5
+ VERSION = "0.1.0"
6
6
 
7
7
  def self.login
8
8
  return @login if defined? @login
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stephencelis-ghi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Celis