jira_cmd 0.1.0

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.
Files changed (3) hide show
  1. data/bin/jira +33 -0
  2. data/lib/jira_cmd.rb +94 -0
  3. metadata +80 -0
data/bin/jira ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'jira_cmd'
4
+ require 'yaml'
5
+
6
+ opts = JiraOptions.new
7
+ opts.parse_options
8
+
9
+ config_file = "#{ENV['HOME']}/.jira_cmd"
10
+
11
+ if File.exists? config_file
12
+ config_data = YAML.load_file config_file
13
+ server = config_data['server']
14
+ current_user = config_data['current_user']
15
+ end
16
+
17
+ server = opts.config[:server] if opts.config[:server]
18
+ current_user = opts.config[:current_user] if opts.config[:current_user]
19
+
20
+ jira_cmd = JiraCmd.new(server, current_user)
21
+
22
+ opts.config.each do |k,v|
23
+ case k
24
+ when /mine/
25
+ jira_cmd.get_mine
26
+ when /user/
27
+ jira_cmd.get_user(v)
28
+ when /release/
29
+ jira_cmd.get_in_release(v)
30
+ when /issue/
31
+ jira_cmd.get_issue(v)
32
+ end
33
+ end
data/lib/jira_cmd.rb ADDED
@@ -0,0 +1,94 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+ require 'mixlib/cli'
4
+
5
+ # OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
6
+ class JiraOptions
7
+ include Mixlib::CLI
8
+
9
+ option :mine,
10
+ long: '--mine',
11
+ short: '-m'
12
+
13
+ option :issue,
14
+ long: '--issue ISSUE',
15
+ short: '-i ISSUE'
16
+
17
+ option :user,
18
+ long: '--user USER',
19
+ short: '-u USER'
20
+
21
+ option :release,
22
+ long: '--release RELEASE',
23
+ short: '-r RELEASE'
24
+
25
+ option :server,
26
+ long: '--server SERVER',
27
+ short: '-s SERVER'
28
+
29
+ option :current_user,
30
+ long: '--current_user CURRENT_USER',
31
+ short: '-c CURRENT_USER'
32
+
33
+ end
34
+
35
+ class JiraQuery
36
+
37
+ attr_accessor :issues
38
+
39
+ def initialize(params={})
40
+ @search_url = params[:url]
41
+ @issues = []
42
+ end
43
+
44
+ def process
45
+ @document = Nokogiri::XML(open(@search_url))
46
+ # puts @document
47
+ @document.xpath('//item').each do |item|
48
+ @issues << "#{item.css('status').first.content.chomp.ljust(20)} #{item.css('title').first.content.chomp}"
49
+ end
50
+ end
51
+ end
52
+
53
+ class JiraCmd
54
+
55
+ attr_accessor :server, :user
56
+
57
+ def initialize(server_name, user_name)
58
+ @server = server_name
59
+ @user = user_name
60
+ end
61
+
62
+ def get_mine
63
+ get_user user
64
+ end
65
+
66
+ def get_user(user)
67
+ my_issues_url = "https://#{server}/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=assignee+%3d+'#{user}'+and+status+!%3d+'closed'"
68
+ jira = JiraQuery.new url: my_issues_url
69
+ jira.process
70
+ puts "#{user.upcase} ISSUES"
71
+ puts jira.issues
72
+ end
73
+
74
+ def get_issue(issue)
75
+ my_issues_url = "https://#{server}/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=key+%3d+'#{issue}'"
76
+ jira = JiraQuery.new url: my_issues_url
77
+ jira.process
78
+ puts jira.issues
79
+ end
80
+
81
+ def get_in_release(release)
82
+ return if release.nil? || release.empty?
83
+
84
+ all_in_release="https://#{server}/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3d+CTII+and+fixVersion+%3d+#{release}+and+status+%3d+%22Todo/User+Story%22+and+type+!%3d+%22Automated+Test%22+order+by+priority"
85
+ all_jira = JiraQuery.new url: all_in_release
86
+ all_jira.process
87
+
88
+ puts "IN #{release}"
89
+ puts all_jira.issues
90
+ end
91
+
92
+ end
93
+
94
+
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jira_cmd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - John Brosnan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.5.9
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.5.9
30
+ - !ruby/object:Gem::Dependency
31
+ name: mixlib-cli
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.2.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.2.2
46
+ description: Just a litte script to query Jira from the command line
47
+ email: john@thepond.com
48
+ executables:
49
+ - jira
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/jira_cmd.rb
54
+ - bin/jira
55
+ homepage: ''
56
+ licenses:
57
+ - MIT
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 1.8.23
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Command line interface for interacting with Jira
80
+ test_files: []