jira-issues 0.0.1 → 0.0.2
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/Gemfile +8 -0
- data/Gemfile.lock +47 -0
- data/README.md +41 -0
- data/Rakefile +7 -0
- data/jira_issues.gemspec +40 -0
- data/lib/jira_issues/jira_issues_navigator.rb +12 -14
- data/lib/jira_issues/jira_issues_stats.rb +11 -0
- data/lib/jira_issues/jira_workflow.rb +3 -3
- data/lib/jira_issues/jql_lib.rb +11 -0
- data/lib/jira_issues/version.rb +3 -0
- data/lib/jira_issues.rb +2 -1
- data/spec/.rspec +1 -0
- data/spec/jira_issues_spec.rb +31 -0
- data/spec/spec_helper.rb +2 -0
- metadata +27 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 441467c14ab6bef2cc52daeff6352ef6f446f5a3
|
4
|
+
data.tar.gz: 21de1b9c76376d52c8b67123b1266858dcee2fd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c100f0e5c7bdc6a53f59d1ee74c227f39c018e0c187f986bc354527e3525ae37ded2d3d411ff4ed6bee489ad4d06a406fee7a9b318e9ddbf42cc462decbb7c2
|
7
|
+
data.tar.gz: 9aeb2fc399f9b1ba5b508159c5f388bd2301a7615e9986a86d1444b3f0f469511a0ad73c860fa6ff1849cc2e7297e00cc25d6ad290d2ceedd1028533a84d6a05
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (5.1.4)
|
5
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
6
|
+
i18n (~> 0.7)
|
7
|
+
minitest (~> 5.1)
|
8
|
+
tzinfo (~> 1.1)
|
9
|
+
concurrent-ruby (1.0.5)
|
10
|
+
diff-lcs (1.3)
|
11
|
+
i18n (0.9.1)
|
12
|
+
concurrent-ruby (~> 1.0)
|
13
|
+
jira-ruby (1.4.3)
|
14
|
+
activesupport
|
15
|
+
multipart-post
|
16
|
+
oauth (~> 0.5, >= 0.5.0)
|
17
|
+
minitest (5.10.3)
|
18
|
+
multipart-post (2.0.0)
|
19
|
+
oauth (0.5.4)
|
20
|
+
rake (12.3.0)
|
21
|
+
rspec (3.7.0)
|
22
|
+
rspec-core (~> 3.7.0)
|
23
|
+
rspec-expectations (~> 3.7.0)
|
24
|
+
rspec-mocks (~> 3.7.0)
|
25
|
+
rspec-core (3.7.0)
|
26
|
+
rspec-support (~> 3.7.0)
|
27
|
+
rspec-expectations (3.7.0)
|
28
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
+
rspec-support (~> 3.7.0)
|
30
|
+
rspec-mocks (3.7.0)
|
31
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
+
rspec-support (~> 3.7.0)
|
33
|
+
rspec-support (3.7.0)
|
34
|
+
thread_safe (0.3.6)
|
35
|
+
tzinfo (1.2.4)
|
36
|
+
thread_safe (~> 0.1)
|
37
|
+
|
38
|
+
PLATFORMS
|
39
|
+
ruby
|
40
|
+
|
41
|
+
DEPENDENCIES
|
42
|
+
jira-ruby
|
43
|
+
rake
|
44
|
+
rspec
|
45
|
+
|
46
|
+
BUNDLED WITH
|
47
|
+
1.16.0
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
jira issues
|
2
|
+
===========
|
3
|
+
|
4
|
+
[](https://travis-ci.org/filipjakubowski/jira_issues)
|
5
|
+
|
6
|
+
## description
|
7
|
+
|
8
|
+
Gem that allows you to navigate throu jour JIRA projects easily, get stats and in future to transit and manage tickets.
|
9
|
+
|
10
|
+
Results of JIRA JQL are stripped to selected fields for more user friendly exposure.
|
11
|
+
|
12
|
+
## Getting Started
|
13
|
+
|
14
|
+
First you need to set up your environment variables to access your JIRA repository.
|
15
|
+
Please keep in mind that gem will have all and only access to issues and project that reflects access of selected account.
|
16
|
+
|
17
|
+
- **ENV['JIRA_URL']**
|
18
|
+
- **ENV['JIRA_USERNAME']**
|
19
|
+
- **ENV['JIRA_PASSWORD']**
|
20
|
+
|
21
|
+
## Running JQL Query
|
22
|
+
|
23
|
+
'''
|
24
|
+
require 'jira_issues'
|
25
|
+
q = JiraIssues::JiraQuery.new
|
26
|
+
issues_navigator = jq.jql_query 'project = "Project Name" and ( created > -40d or status not in (Done) )'
|
27
|
+
'''
|
28
|
+
|
29
|
+
## Filtering issues
|
30
|
+
|
31
|
+
'''
|
32
|
+
issues_navigator.open.issues -- open issues
|
33
|
+
issues_navigator.closed.issues -- closed issues
|
34
|
+
'''
|
35
|
+
|
36
|
+
## Stats
|
37
|
+
|
38
|
+
'''
|
39
|
+
issues_navigator.created_by_week
|
40
|
+
issues_navigator.closed_by_week
|
41
|
+
'''
|
data/Rakefile
ADDED
data/jira_issues.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
require "jira_issues/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'jira-issues'
|
7
|
+
s.version = JiraIssues::VERSION
|
8
|
+
|
9
|
+
## Edit these as appropriate
|
10
|
+
s.summary = "Jira Issues"
|
11
|
+
s.description = %q{Jira Issues gem that supports quering and filtering data for external reporting and integrations.}
|
12
|
+
|
13
|
+
s.authors = ["Filip Jakubowski-Drzrwiecki"]
|
14
|
+
s.email = ["don.o.phelippe@gmail.com"]
|
15
|
+
s.homepage = 'https://github.com/filipjakubowski'
|
16
|
+
|
17
|
+
s.rubyforge_project = "jira_issues"
|
18
|
+
|
19
|
+
s.require_paths = %w[lib]
|
20
|
+
s.files = `git ls-files`.split("\n")
|
21
|
+
# s.files = %w{lib/jira_issues.rb lib/jira_issues/jira_adapter.rb lib/jira_issues/jira_issue_mapper.rb lib/jira_issues/jira_issues_navigator.rb lib/jira_issues/jira_workflow.rb lib/jira_issues/jira_query.rb lib/jira_issues/jira_issues_stats.rb lib/jira_issues/jql_lib.rb}
|
22
|
+
|
23
|
+
s.add_dependency 'jira-ruby'
|
24
|
+
s.add_dependency 'byebug'
|
25
|
+
|
26
|
+
## List your development dependencies here. Development dependencies are
|
27
|
+
## those that are only needed during development
|
28
|
+
s.add_development_dependency "rake"
|
29
|
+
s.add_development_dependency "rspec"
|
30
|
+
s.add_development_dependency "rubocop"
|
31
|
+
|
32
|
+
s.add_development_dependency 'fakeweb'
|
33
|
+
s.add_development_dependency 'pry'
|
34
|
+
|
35
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
36
|
+
|
37
|
+
## Test files will be grabbed from the file list. Make sure the path glob
|
38
|
+
## matches what you actually use.
|
39
|
+
s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
|
40
|
+
end
|
@@ -1,39 +1,37 @@
|
|
1
1
|
module JiraIssues
|
2
2
|
class JiraIssuesNavigator
|
3
|
+
include JiraIssues::JiraIssueStats
|
4
|
+
|
3
5
|
def initialize(issues)
|
4
6
|
@issues = issues
|
5
7
|
end
|
6
8
|
|
7
|
-
def
|
9
|
+
def issues
|
8
10
|
@issues
|
11
|
+
end
|
12
|
+
|
13
|
+
def all
|
14
|
+
JiraIssuesNavigator.new @issues
|
9
15
|
end
|
10
16
|
|
11
17
|
def open
|
12
|
-
@issues.select {|i| i[:status] == JiraWorkflow::OPEN}
|
18
|
+
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::OPEN}
|
13
19
|
end
|
14
20
|
|
15
21
|
def blocked
|
16
|
-
@issues.select {|i| i[:status] == JiraWorkflow::BLOCKED}
|
22
|
+
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::BLOCKED}
|
17
23
|
end
|
18
24
|
|
19
25
|
def in_progress
|
20
|
-
@issues.select {|i| i[:status] == JiraWorkflow::IN_PROGRESS}
|
26
|
+
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::IN_PROGRESS}
|
21
27
|
end
|
22
28
|
|
23
29
|
def closed
|
24
|
-
@issues.select {|i| i[:status] == JiraWorkflow::CLOSED}
|
30
|
+
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::CLOSED}
|
25
31
|
end
|
26
32
|
|
27
33
|
def with_status(status: selected_status)
|
28
|
-
@issues.select {|i| i[:status] == @issue_states[selected_status]}
|
29
|
-
end
|
30
|
-
|
31
|
-
def created_by_week
|
32
|
-
@issues.map { |i| { key: i[:key], week_created: Date.parse(i[:created_date]).beginning_of_week}}.group_by { |x| x[:week_created]}.map{ |k,v| [k, v.count] }.to_h.sort
|
33
|
-
end
|
34
|
-
|
35
|
-
def closed_by_week
|
36
|
-
@issues.select{|i| !i[:closed_date].nil? }.map { |i| { key: i[:key], week_closed: Date.parse(i[:closed_date]).beginning_of_week}}.group_by { |x| x[:week_closed]}.map{ |k,v| [k, v.count] }.to_h.sort
|
34
|
+
JiraIssuesNavigator.new @issues.select {|i| i[:status] == @issue_states[selected_status]}
|
37
35
|
end
|
38
36
|
|
39
37
|
#aliases
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module JiraIssues
|
2
|
+
module JiraIssueStats
|
3
|
+
def created_by_week
|
4
|
+
@issues.map { |i| { key: i[:key], week_created: Date.parse(i[:created_date]).beginning_of_week } }.group_by { |x| x[:week_created] }.map { |k, v| [k, v.count] }.to_h.sort
|
5
|
+
end
|
6
|
+
|
7
|
+
def closed_by_week
|
8
|
+
@issues.select { |i| !i[:closed_date].nil? }.map { |i| { key: i[:key], week_closed: Date.parse(i[:closed_date]).beginning_of_week } }.group_by { |x| x[:week_closed]}.map { |k, v| [k, v.count] }.to_h.sort
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module JiraIssues
|
2
2
|
class JiraWorkflow
|
3
|
-
OPEN
|
3
|
+
OPEN = 'Open'
|
4
4
|
IN_PROGRESS = 'InProgress'
|
5
|
-
BLOCKED
|
6
|
-
CLOSED
|
5
|
+
BLOCKED = 'Blocked'
|
6
|
+
CLOSED = 'Closed'
|
7
7
|
# This is WIP
|
8
8
|
# This class should be able to map and unify:
|
9
9
|
# - statuses
|
data/lib/jira_issues.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'jira_issues/jira_adapter'
|
2
2
|
require 'jira_issues/jira_workflow'
|
3
3
|
require 'jira_issues/jira_query'
|
4
|
+
require 'jira_issues/jira_issues_stats'
|
4
5
|
require 'jira_issues/jira_issues_navigator'
|
5
6
|
require 'jira_issues/jira_issue_mapper'
|
6
|
-
|
7
|
+
require 'jira_issues/jql_lib'
|
data/spec/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe JiraIssues do
|
4
|
+
it "filter issues" do
|
5
|
+
issue_nav = Object.new
|
6
|
+
allow(issue_nav).to receive(:jql_query) {
|
7
|
+
issues = [
|
8
|
+
{:key=>"PR-100", :type=>"Task", :priority=>"Major", :status=>"Open", :summary=>"Clean kitchen", :created_date=>"2017-12-28T13:30:30.000+0000", :closed_date=>"2017-12-28T13:30:30.000+0000"},
|
9
|
+
{:key=>"PR-101", :type=>"Task", :priority=>"Major", :status=>"InProgress", :summary=>"Walk a dog", :created_date=>"2017-12-07T15:46:22.000+0000", :closed_date=>nil},
|
10
|
+
{:key=>"PR-102", :type=>"Task", :priority=>"Critical", :status=>"Closed", :summary=>"Pack bagpack", :created_date=>"2017-12-21T11:15:38.000+0000", :closed_date=>"2017-12-27T13:45:06.000+0000"},
|
11
|
+
{:key=>"PR-102", :type=>"Task", :priority=>"Critical", :status=>"Closed", :summary=>"Pay bills", :created_date=>"2017-12-21T11:15:38.000+0000", :closed_date=>"2017-12-27T13:45:06.000+0000"}
|
12
|
+
]
|
13
|
+
JiraIssues::JiraIssuesNavigator.new(issues)
|
14
|
+
}
|
15
|
+
|
16
|
+
jn = issue_nav.jql_query 'project = "Project" and ( created > -40d )'
|
17
|
+
expect(jn.done.issues.count).to eq(2)
|
18
|
+
expect(jn.open.issues.count).to eq(1)
|
19
|
+
expect(jn.in_progress.issues.count).to eq(1)
|
20
|
+
expect(jn.open.issues.first[:priority]).to eq("Major")
|
21
|
+
|
22
|
+
expect(jn.created_by_week.count).to eq(3)
|
23
|
+
expect(jn.closed_by_week.count).to eq(1)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "translates workfow steps" do
|
27
|
+
expect(JiraIssues::JiraWorkflow.issue_status_for_name('PR','Open')).to eq(JiraIssues::JiraWorkflow::OPEN)
|
28
|
+
expect(JiraIssues::JiraWorkflow.issue_status_for_name('PR','In Progress')).to eq(JiraIssues::JiraWorkflow::IN_PROGRESS)
|
29
|
+
expect(JiraIssues::JiraWorkflow.issue_status_for_name('PR','Done')).to eq(JiraIssues::JiraWorkflow::CLOSED)
|
30
|
+
end
|
31
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jira-issues
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Filip Jakubowski-Drzrwiecki
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: fakeweb
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,12 +116,23 @@ executables: []
|
|
102
116
|
extensions: []
|
103
117
|
extra_rdoc_files: []
|
104
118
|
files:
|
119
|
+
- Gemfile
|
120
|
+
- Gemfile.lock
|
121
|
+
- README.md
|
122
|
+
- Rakefile
|
123
|
+
- jira_issues.gemspec
|
105
124
|
- lib/jira_issues.rb
|
106
125
|
- lib/jira_issues/jira_adapter.rb
|
107
126
|
- lib/jira_issues/jira_issue_mapper.rb
|
108
127
|
- lib/jira_issues/jira_issues_navigator.rb
|
128
|
+
- lib/jira_issues/jira_issues_stats.rb
|
109
129
|
- lib/jira_issues/jira_query.rb
|
110
130
|
- lib/jira_issues/jira_workflow.rb
|
131
|
+
- lib/jira_issues/jql_lib.rb
|
132
|
+
- lib/jira_issues/version.rb
|
133
|
+
- spec/.rspec
|
134
|
+
- spec/jira_issues_spec.rb
|
135
|
+
- spec/spec_helper.rb
|
111
136
|
homepage: https://github.com/filipjakubowski
|
112
137
|
licenses: []
|
113
138
|
metadata: {}
|
@@ -126,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
151
|
- !ruby/object:Gem::Version
|
127
152
|
version: '0'
|
128
153
|
requirements: []
|
129
|
-
rubyforge_project:
|
154
|
+
rubyforge_project: jira_issues
|
130
155
|
rubygems_version: 2.6.14
|
131
156
|
signing_key:
|
132
157
|
specification_version: 4
|