meta_project 0.4.1 → 0.4.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.
data/CHANGES CHANGED
@@ -1,5 +1,13 @@
1
1
  = XForge Changelog
2
2
 
3
+ == Version 0.4.2
4
+
5
+ This is a minor release that accommodates fos some changes needed by DamageControl.
6
+
7
+ * Made tracker constructors empty so they can be used from DamageControl.
8
+ * Made ScmWeb constructor empty so it can be used from DamageControl.
9
+ * Made JiraTracker look for user/password in environment variables and log error if not defined.
10
+
3
11
  == Version 0.4.1
4
12
 
5
13
  This version renames xforge to meta_project. This is because the scope of this project
data/Rakefile CHANGED
@@ -24,7 +24,7 @@ require 'rake/rdoctask'
24
24
  #
25
25
  # REMEMBER TO KEEP PKG_VERSION IN SYNC WITH THE CHANGES FILE!
26
26
  PKG_NAME = "meta_project"
27
- PKG_VERSION = "0.4.1"
27
+ PKG_VERSION = "0.4.2"
28
28
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
29
29
  PKG_FILES = FileList[
30
30
  '[A-Z]*',
@@ -125,7 +125,7 @@ task :verify_env_vars do
125
125
  end
126
126
 
127
127
  task :publish_doc => [:rdoc] do
128
- publisher = Rake::RubyForgePublisher.new(PKG_NAME, ENV['RUBYFORGE_USER'])
128
+ publisher = Rake::RubyForgePublisher.new('xforge', ENV['RUBYFORGE_USER'])
129
129
  publisher.upload
130
130
  end
131
131
 
@@ -4,13 +4,15 @@ module MetaProject
4
4
  # in an online scm web interface.
5
5
  class ScmWeb
6
6
 
7
+ attr_accessor :overview_spec, :history_spec, :raw_spec, :html_spec, :diff_spec
8
+
7
9
  # The variables to use in +uri_specs+ are:
8
10
  #
9
11
  # * path
10
12
  # * revision
11
13
  # * previous_revision
12
14
  #
13
- def initialize(overview_spec, history_spec, raw_spec, html_spec, diff_spec)
15
+ def initialize(overview_spec=nil, history_spec=nil, raw_spec=nil, html_spec=nil, diff_spec=nil)
14
16
  @overview_spec, @history_spec, @raw_spec, @html_spec, @diff_spec = overview_spec, history_spec, raw_spec, html_spec, diff_spec
15
17
  end
16
18
 
@@ -8,9 +8,10 @@ module MetaProject
8
8
  class Base
9
9
  def self.classes
10
10
  [
11
- ::Tracker::Jira::JiraProject,
12
- ::Tracker::XForge::RubyForgeProject,
13
- ::Tracker::Trac::TracProject
11
+ Jira::JiraTracker,
12
+ Trac::TracTracker,
13
+ XForge::RubyForgeTracker,
14
+ XForge::SourceForgeTracker,
14
15
  ]
15
16
  end
16
17
  end
@@ -3,11 +3,22 @@ require 'xmlrpc/client'
3
3
  module MetaProject
4
4
  module Tracker
5
5
  module Jira
6
- class JiraTracker
6
+ class JiraTracker < Base
7
7
  JIRA_API = "jira1"
8
8
 
9
- def initialize(rooturl=nil, identifier=nil, username=nil, password=nil)
10
- @rooturl, @identifier, @username, @password = rooturl, identifier, username, password
9
+ attr_accessor :rooturl, :identifier
10
+
11
+ # Creates a new JiraTracker. In order to successfully get issue info (via XMLRPC),
12
+ # two env vars must be defined. Example:
13
+ #
14
+ # JiraTracker.new("http://jira.codehaus.org", "DC")
15
+ #
16
+ # Then the following must be defined:
17
+ #
18
+ # JIRA_CODEHAUS_ORG_JIRA_USER
19
+ # JIRA_CODEHAUS_ORG_JIRA_PASSWORD
20
+ def initialize(rooturl=nil, identifier=nil)
21
+ @rooturl, @identifier = rooturl, identifier
11
22
  end
12
23
 
13
24
  def identifier_regexp
@@ -23,12 +34,17 @@ module MetaProject
23
34
  end
24
35
 
25
36
  def issue(issue_identifier)
26
- session = login
27
37
  begin
38
+ session = login
28
39
  issue = session.getIssue(issue_identifier)
29
40
  Issue.new("#{@rooturl}/browse/#{issue_identifier}", issue["summary"])
30
- rescue XMLRPC::FaultException
31
- # Probably bad issue number
41
+ rescue XMLRPC::FaultException => e
42
+ # Probably bad issue number or failed login
43
+ STDERR.puts("Couldn't get issue #{issue_identifier}: #{e.message}")
44
+ nil
45
+ rescue LoginException => e
46
+ # Missing env vars
47
+ STDERR.puts("Couldn't log in to JIRA at #{@rooturl}: #{e.message}")
32
48
  nil
33
49
  end
34
50
  end
@@ -42,12 +58,37 @@ module MetaProject
42
58
  end
43
59
 
44
60
  private
45
-
61
+
46
62
  def login
47
63
  client = XMLRPC::Client.new2("#{@rooturl}/rpc/xmlrpc")
48
- token = client.call("#{JIRA_API}.login", @username, @password)
64
+ token = client.call("#{JIRA_API}.login", user, password)
49
65
  Session.new(client, token)
50
66
  end
67
+
68
+ def user
69
+ var = "#{login_env_var_prefix}_JIRA_USER"
70
+ ENV[var] || login_error(var)
71
+ end
72
+
73
+ def password
74
+ var = "#{login_env_var_prefix}_JIRA_PASSWORD"
75
+ ENV[var] || login_error(var)
76
+ end
77
+
78
+ def login_env_var_prefix
79
+ if(rooturl =~ /http:\/\/([^\/]+)/)
80
+ $1.gsub(/\./, "_").upcase
81
+ else
82
+ raise "Bad root url: #{rooturl}"
83
+ end
84
+ end
85
+
86
+ def login_error(var)
87
+ raise LoginException.new("#{var} environment variable not defined")
88
+ end
89
+
90
+ class LoginException < Exception
91
+ end
51
92
 
52
93
  # This wrapper around XMLRPC::Client that allows simpler method calls
53
94
  # via method_missing and doesn't require to manage the token
@@ -1,10 +1,12 @@
1
1
  module MetaProject
2
2
  module Tracker
3
3
  module Trac
4
- class TracTracker < ::MetaProject::Tracker::Base
5
- include ::MetaProject::Tracker::DigitIssues
4
+ class TracTracker < Base
5
+ include DigitIssues
6
6
 
7
- def initialize(trac_base_url)
7
+ attr_accessor :trac_base_url
8
+
9
+ def initialize(trac_base_url=nil)
8
10
  @trac_base_url = trac_base_url
9
11
  end
10
12
 
@@ -6,12 +6,12 @@ module MetaProject
6
6
  module Tracker
7
7
  module XForge
8
8
  class XForgeTracker < Base
9
- include ::MetaProject::Tracker::DigitIssues
9
+ include DigitIssues
10
10
 
11
11
  attr_accessor :overview, :project
12
12
 
13
- # TODO: don't pass in project!! pass in hostname and id!
14
- def initialize(overview, project)
13
+ # TODO: don't pass in project!! pass in hostname and id! This won't work from DC!!
14
+ def initialize(overview=nil, project=nil)
15
15
  @overview, @project = overview, project
16
16
  end
17
17
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: meta_project
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.1
7
- date: 2005-08-22 00:00:00 -04:00
6
+ version: 0.4.2
7
+ date: 2005-08-23 00:00:00 -04:00
8
8
  summary: Ruby based make-like utility.
9
9
  require_paths:
10
10
  - lib