jira-issues 0.0.2 → 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
- metadata +13 -82
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -47
- data/README.md +0 -41
- data/Rakefile +0 -7
- data/jira_issues.gemspec +0 -40
- data/lib/jira_issues/jira_adapter.rb +0 -32
- data/lib/jira_issues/jira_issue_mapper.rb +0 -31
- data/lib/jira_issues/jira_issues_navigator.rb +0 -50
- data/lib/jira_issues/jira_issues_stats.rb +0 -11
- data/lib/jira_issues/jira_query.rb +0 -18
- data/lib/jira_issues/jira_workflow.rb +0 -24
- data/lib/jira_issues/jql_lib.rb +0 -11
- data/lib/jira_issues/version.rb +0 -3
- data/lib/jira_issues.rb +0 -7
- data/spec/.rspec +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 322df4367f03226fb4bfac0fabc66197fc33ab4e
|
4
|
+
data.tar.gz: 74dfa00b4635f5065c7560f8f06f6cc5c8e5f547
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0fb3f8fc5fce3b53f438ee4aa6b85fcd9cb8d579938038ca6fa2d9d04835080e96b878bdf1824e7d38d3ff58fe4d374aa4da20856322db2f8ae0d4201a95a53
|
7
|
+
data.tar.gz: 81375b7242c38eff7c01b2e8ec74ad19d3cb235cbacdaf93601aaaac74c345cf2b9ab397eda5305151d23d635fb85cb976486363b1b8cff4f4893bdc46070e19
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Filip Jakubowski-Drzrwiecki
|
@@ -14,100 +14,44 @@ dependencies:
|
|
14
14
|
name: jira-ruby
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.4.3
|
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:
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: byebug
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
26
|
+
version: 1.4.3
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - ">="
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
33
|
+
version: 12.3.0
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - ">="
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
40
|
+
version: 12.3.0
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rspec
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
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'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: fakeweb
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
47
|
+
version: 3.7.0
|
104
48
|
type: :development
|
105
49
|
prerelease: false
|
106
50
|
version_requirements: !ruby/object:Gem::Requirement
|
107
51
|
requirements:
|
108
52
|
- - ">="
|
109
53
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
54
|
+
version: 3.7.0
|
111
55
|
description: Jira Issues gem that supports quering and filtering data for external
|
112
56
|
reporting and integrations.
|
113
57
|
email:
|
@@ -116,26 +60,13 @@ executables: []
|
|
116
60
|
extensions: []
|
117
61
|
extra_rdoc_files: []
|
118
62
|
files:
|
119
|
-
- Gemfile
|
120
|
-
- Gemfile.lock
|
121
|
-
- README.md
|
122
|
-
- Rakefile
|
123
|
-
- jira_issues.gemspec
|
124
|
-
- lib/jira_issues.rb
|
125
|
-
- lib/jira_issues/jira_adapter.rb
|
126
|
-
- lib/jira_issues/jira_issue_mapper.rb
|
127
|
-
- lib/jira_issues/jira_issues_navigator.rb
|
128
|
-
- lib/jira_issues/jira_issues_stats.rb
|
129
|
-
- lib/jira_issues/jira_query.rb
|
130
|
-
- lib/jira_issues/jira_workflow.rb
|
131
|
-
- lib/jira_issues/jql_lib.rb
|
132
|
-
- lib/jira_issues/version.rb
|
133
|
-
- spec/.rspec
|
134
63
|
- spec/jira_issues_spec.rb
|
135
64
|
- spec/spec_helper.rb
|
136
65
|
homepage: https://github.com/filipjakubowski
|
137
|
-
licenses:
|
138
|
-
|
66
|
+
licenses:
|
67
|
+
- MIT
|
68
|
+
metadata:
|
69
|
+
source_code_uri: https://github.com/filipjakubowski/jira_issues
|
139
70
|
post_install_message:
|
140
71
|
rdoc_options: []
|
141
72
|
require_paths:
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,47 +0,0 @@
|
|
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
DELETED
@@ -1,41 +0,0 @@
|
|
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
DELETED
data/jira_issues.gemspec
DELETED
@@ -1,40 +0,0 @@
|
|
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,32 +0,0 @@
|
|
1
|
-
require 'jira-ruby'
|
2
|
-
|
3
|
-
module JiraIssues
|
4
|
-
class JiraAdapter
|
5
|
-
def create_task(task)
|
6
|
-
issue = client.Issue.build
|
7
|
-
issue.save(task.print)
|
8
|
-
end
|
9
|
-
|
10
|
-
def available?
|
11
|
-
response = client.get('/')
|
12
|
-
response.code == '200'
|
13
|
-
end
|
14
|
-
|
15
|
-
def jql(jql_query, fields)
|
16
|
-
client.Issue.jql(jql_query, fields)
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def client
|
22
|
-
@client = JIRA::Client.new(
|
23
|
-
username: ENV['JIRA_USERNAME'],
|
24
|
-
password: ENV['JIRA_PASSWORD'],
|
25
|
-
site: ENV['JIRA_URL'],
|
26
|
-
context_path: '',
|
27
|
-
auth_type: :basic,
|
28
|
-
read_timeout: 120
|
29
|
-
)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module JiraIssues
|
2
|
-
class JiraIssueMapper
|
3
|
-
# WIP
|
4
|
-
# ATM mapper serialises issue to JSON
|
5
|
-
# We might consider using objects
|
6
|
-
|
7
|
-
def call(issue)
|
8
|
-
status = decode_status(issue)
|
9
|
-
{
|
10
|
-
key: issue.key,
|
11
|
-
type: issue.issuetype.name,
|
12
|
-
priority: issue.priority.name,
|
13
|
-
status: status,
|
14
|
-
#description: i.description,
|
15
|
-
summary: issue.summary,
|
16
|
-
created_date: issue.created,
|
17
|
-
closed_date: issue.resolutiondate
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def decode_status(issue)
|
24
|
-
JiraIssues::JiraWorkflow.issue_status_for_name(project_key(issue),issue.status.name)
|
25
|
-
end
|
26
|
-
|
27
|
-
def project_key(issue)
|
28
|
-
issue.key.split('-').first
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module JiraIssues
|
2
|
-
class JiraIssuesNavigator
|
3
|
-
include JiraIssues::JiraIssueStats
|
4
|
-
|
5
|
-
def initialize(issues)
|
6
|
-
@issues = issues
|
7
|
-
end
|
8
|
-
|
9
|
-
def issues
|
10
|
-
@issues
|
11
|
-
end
|
12
|
-
|
13
|
-
def all
|
14
|
-
JiraIssuesNavigator.new @issues
|
15
|
-
end
|
16
|
-
|
17
|
-
def open
|
18
|
-
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::OPEN}
|
19
|
-
end
|
20
|
-
|
21
|
-
def blocked
|
22
|
-
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::BLOCKED}
|
23
|
-
end
|
24
|
-
|
25
|
-
def in_progress
|
26
|
-
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::IN_PROGRESS}
|
27
|
-
end
|
28
|
-
|
29
|
-
def closed
|
30
|
-
JiraIssuesNavigator.new @issues.select {|i| i[:status] == JiraWorkflow::CLOSED}
|
31
|
-
end
|
32
|
-
|
33
|
-
def with_status(status: selected_status)
|
34
|
-
JiraIssuesNavigator.new @issues.select {|i| i[:status] == @issue_states[selected_status]}
|
35
|
-
end
|
36
|
-
|
37
|
-
#aliases
|
38
|
-
def todo
|
39
|
-
open
|
40
|
-
end
|
41
|
-
|
42
|
-
def done
|
43
|
-
closed
|
44
|
-
end
|
45
|
-
|
46
|
-
def ip
|
47
|
-
in_progress
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,11 +0,0 @@
|
|
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,18 +0,0 @@
|
|
1
|
-
module JiraIssues
|
2
|
-
class JiraQuery
|
3
|
-
def initialize(max_results = 1000)
|
4
|
-
@query_max_results = max_results
|
5
|
-
end
|
6
|
-
|
7
|
-
def jql_query(query)
|
8
|
-
result = adapter.jql(query, fields:[:description, :summary, :created, :status, :issuetype, :priority, :resolutiondate], max_results: @query_max_results)
|
9
|
-
JiraIssuesNavigator.new(result.map{|i| JiraIssueMapper.new.call(i) })
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
def adapter
|
14
|
-
@adapter ||= JiraIssues::JiraAdapter.new
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module JiraIssues
|
2
|
-
class JiraWorkflow
|
3
|
-
OPEN = 'Open'
|
4
|
-
IN_PROGRESS = 'InProgress'
|
5
|
-
BLOCKED = 'Blocked'
|
6
|
-
CLOSED = 'Closed'
|
7
|
-
# This is WIP
|
8
|
-
# This class should be able to map and unify:
|
9
|
-
# - statuses
|
10
|
-
# - workflows
|
11
|
-
# - transitions
|
12
|
-
# ATM - we will work onlu on defailt issue names
|
13
|
-
|
14
|
-
def self.issue_status_for_name(project_key, status_name)
|
15
|
-
{
|
16
|
-
'Backlog' => OPEN,
|
17
|
-
'Open' => OPEN,
|
18
|
-
'Blocked' => BLOCKED,
|
19
|
-
'In Progress' => IN_PROGRESS,
|
20
|
-
'Done' => CLOSED
|
21
|
-
}.fetch(status_name)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
data/lib/jira_issues/jql_lib.rb
DELETED
data/lib/jira_issues/version.rb
DELETED
data/lib/jira_issues.rb
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
require 'jira_issues/jira_adapter'
|
2
|
-
require 'jira_issues/jira_workflow'
|
3
|
-
require 'jira_issues/jira_query'
|
4
|
-
require 'jira_issues/jira_issues_stats'
|
5
|
-
require 'jira_issues/jira_issues_navigator'
|
6
|
-
require 'jira_issues/jira_issue_mapper'
|
7
|
-
require 'jira_issues/jql_lib'
|
data/spec/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--color
|