waff 0.0.6 → 0.0.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: ae6ede544fb5577239ae319898d03cbe1842fa98121e5aca07115987c5ec10a1
4
- data.tar.gz: 90868e9d22cdc6cf444670512b84c41a2a7680426e91d66609ee0bec8c156315
3
+ metadata.gz: fed6162bd8143677a6666794272da27f47d5de3213b47b7bfcd5c816aa3a2fc3
4
+ data.tar.gz: 51fcdc741473a3043d811fc86343e3c4b1169d469c37a9a20d2d09993a34f6d9
5
5
  SHA512:
6
- metadata.gz: bc7a20506959df2ac67dd68b95f46d93df12eb261bf1c534019fd23ca360fa39795175aa5c91a9bee401b0616d560ecc7e4ea658a9810afc223b89d20d6d7df4
7
- data.tar.gz: 7a9ae012e20fb29ff6877b1df1cc6d1f63c49eea1dafe370b72813a826fde0dd3903c3b944734fcd748ce0db5aab84a8ece5390982c2034dbefa31796fec2b82
6
+ metadata.gz: 1c19509871fd2a69b952ad3593e58077b1b1cc43cea83108a44878a642a358a5fde0245ad71eee02e696630be41da687d9ec4d8fcb66efa4491993141f2a3403
7
+ data.tar.gz: 5ebbf2d157631ecd5806bfe8c6d713c50beab73e3fef6de37e395581b50bf059b6c9cba2f4dd4db86e6e95238a04de0b36b5745750112c22097e1944c574b4ec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- waff (0.0.6)
4
+ waff (0.0.7)
5
5
  httparty (~> 0.16)
6
6
 
7
7
  GEM
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ Welcome! `waff` is a tool that hopes to aid with github flow, specifically based on the style of Waffle.
2
+
3
+ The goal is to be able to see what you are working on, see what's ready to be taken, take tasks and submit them from the command line,
4
+ with as little work as possible.
5
+
6
+ ### Installation
7
+ ```
8
+ gem install waff
9
+ waff
10
+ ```
11
+ It will prompt you for your github username and your personal access token. You can create one [here](https://github.com/settings/tokens/new). It just needs the `repo` access.
12
+
13
+ Optionally you can set up the remote name to be used, with `origin` as default. This will create the local config file .waff.yml
14
+
15
+ ### Features
16
+
17
+ #### List ready and in-progress issues
18
+ `waff list`
19
+
20
+ #### Show the information of a given issue
21
+ `waff show` will try to infer the current issue from the current branch name (i.e 827-do-something => issue #827)
22
+
23
+ `waff show 123` will show info of issue 123.
24
+
25
+ #### Take an issue
26
+ `waff take 123` will do the following stuff:
27
+ * Set the issue with the `in progress` label, moving it to the progress column in waffle
28
+ * assign yourself as assignee
29
+ * create a branch named `123-issue-title-slug`, starting from the current branch. Normally you want to run this from master branch.
30
+
31
+ #### Open an issue in the browser
32
+ `waff open 123` will open the browser on issue 123
33
+
34
+ `waff open` will open the browser on current issue
35
+
36
+ #### Pause an issue
37
+ `waff pause 123` will put the issue back in the `ready` column, but won't unassign you from it.
@@ -16,6 +16,8 @@ module Waff
16
16
  Commands::List.call(params)
17
17
  when 'show'
18
18
  Commands::Show.call(params)
19
+ when 'open'
20
+ Commands::Open.call(params)
19
21
  else
20
22
  puts HELP_TEXT
21
23
  end
@@ -4,8 +4,7 @@ module Waff
4
4
  module Commands
5
5
  class List < Command
6
6
  def call params
7
- ready_issues = github_repo.get_open_issues 'ready'
8
- ready_issues += github_repo.get_open_issues 'to do'
7
+ ready_issues = github_repo.get_open_issues Config.ready_label
9
8
  puts "Ready: \n\n"
10
9
  ready_issues.each do |issue|
11
10
  puts "##{issue.number}\t #{issue.title}"
@@ -0,0 +1,22 @@
1
+ require_relative 'command'
2
+ require_relative '../os'
3
+
4
+ module Waff
5
+ module Commands
6
+ class Open < Command
7
+ def call params
8
+ issue_number = params.shift || LocalRepository.current_issue_number
9
+ issue_number || raise('No issue number given as argument or found as current branch')
10
+
11
+ open_in_browser github_repo.issue_url(issue_number)
12
+ end
13
+
14
+ private
15
+
16
+ def open_in_browser url
17
+ `xdg-open #{url}` if OS.linux?
18
+ `open #{url}` if OS.mac?
19
+ end
20
+ end
21
+ end
22
+ end
data/lib/waff/config.rb CHANGED
@@ -22,23 +22,35 @@ module Waff
22
22
  url[/:(.*)\.git/, 1] || raise(REMOTE_NOT_FOUND)
23
23
  end
24
24
 
25
+ def ready_label
26
+ config['ready_label'] || 'to do'
27
+ end
28
+
25
29
  def init_config!
26
30
  return if File.exist?(CONFIG_FILE)
27
31
 
28
32
  puts "No config file detected (#{CONFIG_FILE}). Will generate one now in current directory."
33
+
29
34
  print 'Github username: '
30
35
  user = $stdin.gets
36
+
31
37
  print 'Github password/personal token: '
32
38
  token = $stdin.gets
39
+
33
40
  print 'Git remote (leave empty for "origin"): '
34
41
  remote = $stdin.gets.strip
35
42
  remote = remote.empty? ? 'origin' : remote
36
43
 
44
+ print 'Ready label (leave empty for "to do"): '
45
+ ready_label = $stdin.gets.strip
46
+ ready_label = ready_label.empty? ? 'to do' : ready_label
47
+
37
48
  # Write config file
38
49
  File.open(CONFIG_FILE, 'w') do |file|
39
50
  file.puts "user: #{user}"
40
51
  file.puts "token: #{token}"
41
52
  file.puts "remote: #{remote}"
53
+ file.puts "ready_label: #{ready_label}"
42
54
  end
43
55
 
44
56
  # Write exclude file
data/lib/waff/issue.rb CHANGED
@@ -21,17 +21,17 @@ module Waff
21
21
  end
22
22
 
23
23
  def mark_in_progress!
24
- labels.delete 'ready'
25
- labels.delete 'to do'
24
+ labels.delete Config.ready_label
26
25
  labels << 'in progress'
26
+ labels.uniq!
27
27
 
28
28
  repository.export_labels self
29
29
  end
30
30
 
31
31
  def mark_ready!
32
- labels << 'ready'
33
- labels << 'to do'
32
+ labels << Config.ready_label
34
33
  labels.delete 'in progress'
34
+ labels.uniq!
35
35
 
36
36
  repository.export_labels self
37
37
  end
data/lib/waff/os.rb ADDED
@@ -0,0 +1,17 @@
1
+ module OS
2
+ def OS.windows?
3
+ (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
4
+ end
5
+
6
+ def OS.mac?
7
+ (/darwin/ =~ RUBY_PLATFORM) != nil
8
+ end
9
+
10
+ def OS.unix?
11
+ !OS.windows?
12
+ end
13
+
14
+ def OS.linux?
15
+ OS.unix? and not OS.mac?
16
+ end
17
+ end
@@ -11,7 +11,7 @@ module Waff
11
11
  end
12
12
 
13
13
  def get_issue(number)
14
- response = self.class.get github_url ['issues', number]
14
+ response = self.class.get(github_api_url ['issues', number])
15
15
 
16
16
  if response.success?
17
17
  Issue.new(self, response.parsed_response)
@@ -21,8 +21,12 @@ module Waff
21
21
  end
22
22
  end
23
23
 
24
+ def issue_url(number)
25
+ github_url ['issues', number]
26
+ end
27
+
24
28
  def assign_issue(number)
25
- url = github_url ['issues', number, 'assignees']
29
+ url = github_api_url ['issues', number, 'assignees']
26
30
  response = self.class.post url, body: { assignees: [@user] }.to_json
27
31
  if response.success?
28
32
  puts "Successfully assigned issue ##{number} to #{@user}."
@@ -33,7 +37,7 @@ module Waff
33
37
  end
34
38
 
35
39
  def export_labels issue
36
- url = github_url ['issues', issue.number, 'labels']
40
+ url = github_api_url ['issues', issue.number, 'labels']
37
41
  response = self.class.put url, body: issue.labels.to_json
38
42
  if response.success?
39
43
  puts "Successfully assigned #{issue.labels.inspect} labels to ##{issue.number}"
@@ -44,7 +48,7 @@ module Waff
44
48
  end
45
49
 
46
50
  def get_open_issues label
47
- response = self.class.get github_url(['issues']), query: { labels: label }
51
+ response = self.class.get github_api_url(['issues']), query: { labels: label }
48
52
 
49
53
  if response.success?
50
54
  issues_data = response.parsed_response
@@ -58,9 +62,14 @@ module Waff
58
62
 
59
63
  private
60
64
 
61
- def github_url(nodes)
65
+ def github_api_url(nodes)
62
66
  subpath = nodes.join '/'
63
67
  "https://api.github.com/repos/#{@owner_and_repo}/" + subpath
64
68
  end
69
+
70
+ def github_url(nodes)
71
+ subpath = nodes.join '/'
72
+ "https://github.com/#{@owner_and_repo}/" + subpath
73
+ end
65
74
  end
66
75
  end
data/lib/waff/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Waff
2
- VERSION = '0.0.6'.freeze
2
+ VERSION = '0.0.7'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Armando Andini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-30 00:00:00.000000000 Z
11
+ date: 2018-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -34,17 +34,20 @@ extra_rdoc_files: []
34
34
  files:
35
35
  - Gemfile
36
36
  - Gemfile.lock
37
+ - README.md
37
38
  - bin/waff
38
39
  - lib/waff.rb
39
40
  - lib/waff/commander.rb
40
41
  - lib/waff/commands/command.rb
41
42
  - lib/waff/commands/list.rb
43
+ - lib/waff/commands/open.rb
42
44
  - lib/waff/commands/pause.rb
43
45
  - lib/waff/commands/show.rb
44
46
  - lib/waff/commands/take.rb
45
47
  - lib/waff/config.rb
46
48
  - lib/waff/issue.rb
47
49
  - lib/waff/local_repository.rb
50
+ - lib/waff/os.rb
48
51
  - lib/waff/repository.rb
49
52
  - lib/waff/version.rb
50
53
  - waff.gemspec