purr-pr 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3071c4e06122d67e8b4b4eda6e5bd390dfe0c7e0d8441ef8fa1b1835d1916d4a
4
- data.tar.gz: 33cfca7a6d878626d753a6a6f74c922fe785b285a697d602780b79f8023378fb
3
+ metadata.gz: 5c4bbf318a7b60cfa3cd5c57416dd3f66764b99928e78330a7d04f69b7c095ca
4
+ data.tar.gz: 8040ce5923ece5149ab563b12b223fad7f3d705d80e37a7c9a71ff82237faa96
5
5
  SHA512:
6
- metadata.gz: 615513bff498948f8f9dd1976995365443f6ed995289ae0246cb80cfee42d77687a9619e1d0bf3fa69270bdd8e082ab7e7f100118d3500ee04fe8594cea5c52d
7
- data.tar.gz: 3a30acdab195c789df22402a3bdcb7725294b6b830b29e1513ae62702a7e72717da8d3ac097f70f60f3568d4468900f231304bbf18f59aa769d9926f518b5fec
6
+ metadata.gz: 5e2cc29dd764cecbf87bca385874511dd1c0eb677b2bf77a2fb7ee4e415d28f70a6fb98123fa16647d54bde0d94c43a0d59a2004cf8d8abd534404b9c6a1cd7a
7
+ data.tar.gz: 5dbeeec11460198a30528260c2e6964d9919669fa8084196b029f9ddbd3fb8e2eb12de87740bf1230db83b3a033610bd9399d0fe1807f107a2f7da256a3ff8ec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- purr-pr (0.1.0)
4
+ purr-pr (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -9,18 +9,18 @@ class PurrPr
9
9
  attr_reader :title, :body, :assignee
10
10
 
11
11
  def initialize
12
- # the defaults if the setter is not called
12
+ # defaults - if setter is not called
13
13
  @maintainer_edit = true
14
14
  @reviewers = []
15
15
  @labels = []
16
16
  end
17
17
 
18
- def title(&block)
19
- @title = edit(:title, &block)
18
+ def title(text = '', &block)
19
+ @title = edit(:title, content: text, &block)
20
20
  end
21
21
 
22
- def body(&block)
23
- @body = edit(:body, &block)
22
+ def body(text = '', &block)
23
+ @body = edit(:body, content: text, &block)
24
24
  end
25
25
 
26
26
  def assignee(assignee)
@@ -48,7 +48,7 @@ class PurrPr
48
48
  end
49
49
 
50
50
  def labels(labels)
51
- @labels + labels
51
+ @labels += labels
52
52
  end
53
53
 
54
54
  def label(label)
@@ -56,7 +56,7 @@ class PurrPr
56
56
  end
57
57
 
58
58
  def reviewers(reviewers)
59
- @reviewers + reviewers
59
+ @reviewers += reviewers
60
60
  end
61
61
 
62
62
  def reviewer(reviewer)
@@ -78,10 +78,10 @@ class PurrPr
78
78
 
79
79
  private
80
80
 
81
- def edit(subject, &block)
82
- editor = Editor.new(subject)
81
+ def edit(subject, content: '', &block)
82
+ editor = Editor.new(subject, content: content)
83
83
 
84
- catch(:abort) { editor.evaluate(&block) }
84
+ catch(:abort) { editor.evaluate(&block) } if block_given?
85
85
 
86
86
  interrupt if editor.interrupted?
87
87
 
@@ -5,16 +5,19 @@ require 'tempfile'
5
5
 
6
6
  require_relative 'text_objects'
7
7
  require_relative 'actions'
8
+ require_relative 'shell_helpers'
8
9
 
9
10
  class PurrPr
10
11
  class Editor
11
12
  include TextObjects
12
13
  include Actions
14
+ include ShellHelpers
13
15
 
14
16
  attr_reader :content, :subject
15
17
 
16
- def initialize(subject) @subject = subject.to_s
17
- @content = ''
18
+ def initialize(subject, content: '')
19
+ @subject = subject.to_s
20
+ @content = content
18
21
  end
19
22
 
20
23
  def evaluate(&block)
@@ -38,6 +41,14 @@ class PurrPr
38
41
  @content.gsub!(text, with)
39
42
  end
40
43
 
44
+ def delete(text)
45
+ replace(text, with: '')
46
+ end
47
+
48
+ def clear
49
+ @content = ''
50
+ end
51
+
41
52
  def edit(format: :md)
42
53
  name = subject + SecureRandom.hex(8)
43
54
  format = ".#{format}" unless format.nil?
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class PurrPr
4
+ module ShellHelpers
5
+ def commits
6
+ `git log --pretty=%B`.split("\n\n").reverse
7
+ end
8
+
9
+ def current_branch
10
+ `git branch --show-current`.chomp
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class PurrPr
4
- VERSION = '0.1.6'
4
+ VERSION = '0.1.7'
5
5
  end
data/lib/purr_pr.rb CHANGED
@@ -4,6 +4,8 @@ require_relative 'purr_pr/version'
4
4
  require_relative 'purr_pr/editor.rb'
5
5
  require_relative 'purr_pr/config.rb'
6
6
 
7
+ require 'tempfile'
8
+
7
9
  class PurrPr
8
10
  attr_reader :config_file_path, :config
9
11
 
@@ -17,9 +19,14 @@ class PurrPr
17
19
  def create
18
20
  config.instance_eval(config_code)
19
21
 
22
+ # use file for body to avoid quotes issues
23
+ body_file = Tempfile.new
24
+ body_file.write(config.values.body)
25
+ body_file.rewind
26
+
20
27
  command = 'gh pr create'
21
28
  command += " --title '#{config.values.title}'" if config.values.title
22
- command += " --body '#{config.values.body}'"
29
+ command += " --body-file '#{body_file.path}'"
23
30
  command += " --assignee #{config.values.assignee}" if config.values.assignee
24
31
  command += " --base #{config.values.base}" if config.values.base
25
32
  command += ' --draft' if config.values.draft
@@ -39,6 +46,8 @@ class PurrPr
39
46
  command += ARGV.join(' ').prepend(' ')
40
47
 
41
48
  system(command)
49
+ ensure
50
+ body_file.close
42
51
  end
43
52
 
44
53
  private
data/purr_pr.gemspec CHANGED
@@ -31,5 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency 'bundler', '~> 2.0'
32
32
  spec.add_development_dependency 'rake', '~> 13.0'
33
33
  spec.add_development_dependency 'rspec', '~> 3.0'
34
- spec.add_development_dependency 'pry'
34
+ spec.add_development_dependency 'pry', '~> 0.14.1'
35
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: purr-pr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Teslovskiy
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.14.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.14.1
69
69
  description: Purr PR is a tool to automate pull request formatting via GitHub CLI
70
70
  email: artoriousso@gmail.com
71
71
  executables:
@@ -90,6 +90,7 @@ files:
90
90
  - lib/purr_pr/actions.rb
91
91
  - lib/purr_pr/config.rb
92
92
  - lib/purr_pr/editor.rb
93
+ - lib/purr_pr/shell_helpers.rb
93
94
  - lib/purr_pr/text_objects.rb
94
95
  - lib/purr_pr/version.rb
95
96
  - purr_pr.gemspec