taskit 0.0.1 → 0.0.3
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.
- checksums.yaml +4 -4
- data/.travis.yml +6 -4
- data/Rakefile +2 -2
- data/bin/taskit +6 -0
- data/lib/taskit.rb +16 -0
- data/lib/taskit/display.rb +6 -0
- data/lib/taskit/filters.rb +36 -0
- data/lib/taskit/issue.rb +38 -0
- data/lib/taskit/tasks.rb +62 -0
- data/taskit.gemspec +10 -7
- metadata +68 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5287fb5999ebf27285c816e8e7bee9cea066fbb3
|
4
|
+
data.tar.gz: 430bdec0a935bf0a9048950a7030171892acfbee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e24a2b2833cd70025cb1a3b645d9d515451adcc91623c0882ab9f1814b281a2a6e4a8e8fb9fead30f72fe492bd90c29e8b1e1f95bda471e9a8562647ad65f5b
|
7
|
+
data.tar.gz: 1e8bb5628dd9fbea040351bdabffe3e95490ea6151b5cc5ce01bf77af73aa3b77aec87636e04fdbffe1a4478bd8efc0d3c5c9684676b86fe30ae29b5b3b1ba3f
|
data/.travis.yml
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
|
+
sudo: false
|
3
4
|
rvm:
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
-
|
5
|
+
- 2.2.0
|
6
|
+
- 2.1.5
|
7
|
+
- 2.0.0-p598
|
8
|
+
- 1.9.3-p551
|
7
9
|
notifications:
|
8
10
|
email: false
|
9
11
|
irc:
|
10
12
|
template:
|
11
13
|
- '%{repository}/%{branch}/%{build_number}: %{message} -- %{build_url}'
|
12
14
|
channels:
|
13
|
-
|
15
|
+
- irc.oftc.net#akerl
|
data/Rakefile
CHANGED
@@ -6,8 +6,8 @@ desc 'Run tests'
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
8
|
desc 'Run Rubocop on the gem'
|
9
|
-
|
10
|
-
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
|
9
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
10
|
+
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb', 'bin/*']
|
11
11
|
task.fail_on_error = true
|
12
12
|
end
|
13
13
|
|
data/bin/taskit
ADDED
data/lib/taskit.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
##
|
2
|
+
# Taskit parses GitHub issues
|
3
|
+
module Taskit
|
4
|
+
class << self
|
5
|
+
##
|
6
|
+
# Insert a helper .new() method for creating a new Tasks object
|
7
|
+
def new(*args)
|
8
|
+
self::Tasks.new(*args)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'taskit/issue'
|
14
|
+
require 'taskit/filters'
|
15
|
+
require 'taskit/display'
|
16
|
+
require 'taskit/tasks'
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Taskit
|
2
|
+
##
|
3
|
+
# Define filters for selecting issues
|
4
|
+
module Filters
|
5
|
+
def select(&block)
|
6
|
+
Taskit::Tasks.new(
|
7
|
+
client: @client,
|
8
|
+
issues: @issues.select(&block)
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
def by_label(input)
|
13
|
+
select { |issue| issue.labels.any? { |label| label.name.match input } }
|
14
|
+
end
|
15
|
+
|
16
|
+
def respond_to?(method, include_private = false)
|
17
|
+
var = parse_var method
|
18
|
+
return true if var && @issues.first.respond_to?(var)
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def parse_var(string)
|
25
|
+
match = /^by_(?<var>[a-z]+)$/.match(string)
|
26
|
+
match ? match[:var] : nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def method_missing(method, *args, &block)
|
30
|
+
var = parse_var method
|
31
|
+
return super unless var && @issues.first.respond_to?(var)
|
32
|
+
define_singleton_method(method) { |x| select { |i| i.send(var).match x } }
|
33
|
+
send(method, *args, &block)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/taskit/issue.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
##
|
2
|
+
# Definitions for issue objects
|
3
|
+
module Taskit
|
4
|
+
Label = Struct.new(:name, :color)
|
5
|
+
|
6
|
+
##
|
7
|
+
# An issue object, used to normalize the GitHub API response
|
8
|
+
class Issue
|
9
|
+
attr_reader :repo, :repo_url, :owner,
|
10
|
+
:url, :id, :number, :title, :body, :reporter,
|
11
|
+
:labels, :state
|
12
|
+
|
13
|
+
def initialize(data)
|
14
|
+
load_repo_info data
|
15
|
+
load_issue_info data
|
16
|
+
load_state_info data
|
17
|
+
end
|
18
|
+
|
19
|
+
def load_repo_info(data)
|
20
|
+
repo_info = data[:repository]
|
21
|
+
@repo = repo_info[:name]
|
22
|
+
@repo_url = repo_info[:html_url]
|
23
|
+
@owner = repo_info[:owner][:login]
|
24
|
+
end
|
25
|
+
|
26
|
+
def load_issue_info(data)
|
27
|
+
@url, @id, @number, @title, @body = data.to_h.values_at(
|
28
|
+
:html_url, :id, :number, :title, :body
|
29
|
+
)
|
30
|
+
@reporter = data[:user][:login]
|
31
|
+
end
|
32
|
+
|
33
|
+
def load_state_info(data)
|
34
|
+
@state = data[:state]
|
35
|
+
@labels = data[:labels].map { |x| Label.new(x[:name], x[:color]) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/taskit/tasks.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'octoauth'
|
2
|
+
require 'octokit'
|
3
|
+
require 'faraday-http-cache'
|
4
|
+
|
5
|
+
##
|
6
|
+
# Define Tasks and related objects for Taskit
|
7
|
+
module Taskit
|
8
|
+
##
|
9
|
+
# Cache layer for GitHub API
|
10
|
+
API_CACHE = Faraday::RackBuilder.new do |builder|
|
11
|
+
builder.use Faraday::HttpCache
|
12
|
+
builder.use Octokit::Response::RaiseError
|
13
|
+
builder.adapter Faraday.default_adapter
|
14
|
+
end
|
15
|
+
|
16
|
+
##
|
17
|
+
# Tasks object holds and returns information on open issues
|
18
|
+
class Tasks
|
19
|
+
include Taskit::Filters
|
20
|
+
include Taskit::Display
|
21
|
+
|
22
|
+
attr_reader :issues
|
23
|
+
|
24
|
+
def initialize(params = {})
|
25
|
+
@options = params
|
26
|
+
@client = params[:client]
|
27
|
+
@issues = params[:issues]
|
28
|
+
end
|
29
|
+
|
30
|
+
def issues
|
31
|
+
@issues ||= client.issues(nil, filter: :all).map do |issue|
|
32
|
+
Taskit::Issue.new issue
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_s
|
37
|
+
"<Taskit::Tasks for #{client.login}>"
|
38
|
+
end
|
39
|
+
alias_method :inspect, :to_s
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def token
|
44
|
+
@token ||= Octoauth.new(
|
45
|
+
note: 'Taskit',
|
46
|
+
api_endpoint: @options[:api_endpoint],
|
47
|
+
file: :default,
|
48
|
+
autosave: true,
|
49
|
+
scopes: ['repo']
|
50
|
+
).token
|
51
|
+
end
|
52
|
+
|
53
|
+
def client
|
54
|
+
@client ||= Octokit::Client.new(
|
55
|
+
access_token: token,
|
56
|
+
api_endpoint: @options[:api_endpoint],
|
57
|
+
web_endpoint: @options[:api_endpoint],
|
58
|
+
auto_paginate: true
|
59
|
+
)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/taskit.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'taskit'
|
3
|
-
s.version = '0.0.
|
3
|
+
s.version = '0.0.3'
|
4
4
|
s.date = Time.now.strftime("%Y-%m-%d")
|
5
5
|
|
6
6
|
s.summary = ''
|
@@ -12,12 +12,15 @@ Gem::Specification.new do |s|
|
|
12
12
|
|
13
13
|
s.files = `git ls-files`.split
|
14
14
|
s.test_files = `git ls-files spec/*`.split
|
15
|
+
s.executables = ['taskit']
|
15
16
|
|
16
|
-
s.add_dependency 'octokit', '~>
|
17
|
+
s.add_dependency 'octokit', '~> 3.8.0'
|
18
|
+
s.add_dependency 'octoauth', '~> 1.0.1'
|
19
|
+
s.add_dependency 'faraday-http-cache', '~> 1.1.0'
|
17
20
|
|
18
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
19
|
-
s.add_development_dependency 'rake', '~> 10.
|
20
|
-
s.add_development_dependency 'coveralls', '~> 0.
|
21
|
-
s.add_development_dependency 'rspec', '~> 2.
|
22
|
-
s.add_development_dependency 'fuubar', '~>
|
21
|
+
s.add_development_dependency 'rubocop', '~> 0.30.0'
|
22
|
+
s.add_development_dependency 'rake', '~> 10.4.0'
|
23
|
+
s.add_development_dependency 'coveralls', '~> 0.8.0'
|
24
|
+
s.add_development_dependency 'rspec', '~> 3.2.0'
|
25
|
+
s.add_development_dependency 'fuubar', '~> 2.0.0'
|
23
26
|
end
|
metadata
CHANGED
@@ -1,114 +1,148 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Les Aker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.8.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.8.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: octoauth
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday-http-cache
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.1.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.1.0
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rubocop
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
|
-
- - ~>
|
59
|
+
- - "~>"
|
32
60
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
61
|
+
version: 0.30.0
|
34
62
|
type: :development
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
|
-
- - ~>
|
66
|
+
- - "~>"
|
39
67
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
68
|
+
version: 0.30.0
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: rake
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- - ~>
|
73
|
+
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version: 10.
|
75
|
+
version: 10.4.0
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- - ~>
|
80
|
+
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version: 10.
|
82
|
+
version: 10.4.0
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: coveralls
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- - ~>
|
87
|
+
- - "~>"
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
89
|
+
version: 0.8.0
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
|
-
- - ~>
|
94
|
+
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
96
|
+
version: 0.8.0
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rspec
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
|
-
- - ~>
|
101
|
+
- - "~>"
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.
|
103
|
+
version: 3.2.0
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
|
-
- - ~>
|
108
|
+
- - "~>"
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.
|
110
|
+
version: 3.2.0
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: fuubar
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
|
-
- - ~>
|
115
|
+
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
117
|
+
version: 2.0.0
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
|
-
- - ~>
|
122
|
+
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
124
|
+
version: 2.0.0
|
97
125
|
description: ''
|
98
126
|
email: me@lesaker.org
|
99
|
-
executables:
|
127
|
+
executables:
|
128
|
+
- taskit
|
100
129
|
extensions: []
|
101
130
|
extra_rdoc_files: []
|
102
131
|
files:
|
103
|
-
- .gitignore
|
104
|
-
- .rspec
|
105
|
-
- .rubocop.yml
|
106
|
-
- .travis.yml
|
132
|
+
- ".gitignore"
|
133
|
+
- ".rspec"
|
134
|
+
- ".rubocop.yml"
|
135
|
+
- ".travis.yml"
|
107
136
|
- Gemfile
|
108
137
|
- LICENSE
|
109
138
|
- README.md
|
110
139
|
- Rakefile
|
140
|
+
- bin/taskit
|
111
141
|
- lib/taskit.rb
|
142
|
+
- lib/taskit/display.rb
|
143
|
+
- lib/taskit/filters.rb
|
144
|
+
- lib/taskit/issue.rb
|
145
|
+
- lib/taskit/tasks.rb
|
112
146
|
- spec/spec_helper.rb
|
113
147
|
- spec/taskit_spec.rb
|
114
148
|
- taskit.gemspec
|
@@ -122,17 +156,17 @@ require_paths:
|
|
122
156
|
- lib
|
123
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
158
|
requirements:
|
125
|
-
- -
|
159
|
+
- - ">="
|
126
160
|
- !ruby/object:Gem::Version
|
127
161
|
version: '0'
|
128
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
163
|
requirements:
|
130
|
-
- -
|
164
|
+
- - ">="
|
131
165
|
- !ruby/object:Gem::Version
|
132
166
|
version: '0'
|
133
167
|
requirements: []
|
134
168
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
169
|
+
rubygems_version: 2.4.5
|
136
170
|
signing_key:
|
137
171
|
specification_version: 4
|
138
172
|
summary: ''
|