jira_cmd 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: []