polisher 0.1 → 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.
Files changed (103) hide show
  1. data/COPYING +8 -0
  2. data/LICENSE +661 -0
  3. data/README.rdoc +25 -0
  4. data/Rakefile +92 -0
  5. data/TODO +6 -0
  6. data/bin/server +3 -0
  7. data/config/database.yml +8 -43
  8. data/config/polisher.yml +15 -5
  9. data/config.ru +25 -0
  10. data/db/connection.rb +49 -0
  11. data/db/migrations/001_create_sources.rb +27 -0
  12. data/db/migrations/002_create_managed_gems.rb +24 -0
  13. data/db/migrations/003_create_events.rb +27 -0
  14. data/db/models/event.rb +61 -0
  15. data/db/models/managed_gem.rb +111 -0
  16. data/db/models/source.rb +35 -0
  17. data/lib/common.rb +39 -0
  18. data/lib/event_handlers.rb +100 -0
  19. data/lib/sinatra/url_for.rb +40 -0
  20. data/polisher.rb +120 -0
  21. data/public/javascripts/polisher.js +15 -0
  22. data/public/stylesheets/style.css +18 -3
  23. data/spec/event_handlers_spec.rb +164 -0
  24. data/spec/models_spec.rb +193 -0
  25. data/spec/polisher_spec.rb +133 -0
  26. data/spec/spec_helper.rb +44 -0
  27. data/views/gems/index.haml +106 -0
  28. data/views/layout.haml +24 -0
  29. data/views/sources/index.haml +41 -0
  30. metadata +36 -93
  31. data/README +0 -243
  32. data/app/controllers/application_controller.rb +0 -12
  33. data/app/controllers/callback_controller.rb +0 -47
  34. data/app/controllers/manage_controller.rb +0 -112
  35. data/app/helpers/application_helper.rb +0 -3
  36. data/app/models/artifact.rb +0 -21
  37. data/app/models/event_handler.rb +0 -61
  38. data/app/models/gem_search_criteria.rb +0 -24
  39. data/app/models/gem_source.rb +0 -43
  40. data/app/models/managed_gem.rb +0 -47
  41. data/app/views/callback/gem_updated.rhtml +0 -0
  42. data/app/views/layouts/_header.rhtml +0 -8
  43. data/app/views/layouts/index.rhtml +0 -27
  44. data/app/views/manage/create_event_handler.rhtml +0 -15
  45. data/app/views/manage/create_gem.rhtml +0 -15
  46. data/app/views/manage/create_gem_source.rhtml +0 -15
  47. data/app/views/manage/delete_event_handler.rhtml +0 -15
  48. data/app/views/manage/delete_gem.rhtml +0 -15
  49. data/app/views/manage/delete_gem_source.rhtml +0 -15
  50. data/app/views/manage/list.rhtml +0 -66
  51. data/app/views/manage/new_event_handler.rhtml +0 -38
  52. data/app/views/manage/new_gem.rhtml +0 -21
  53. data/app/views/manage/new_gem_search_criteria.rhtml +0 -3
  54. data/app/views/manage/new_gem_source.rhtml +0 -10
  55. data/config/boot.rb +0 -110
  56. data/config/environment.rb +0 -44
  57. data/config/environments/development.rb +0 -17
  58. data/config/environments/production.rb +0 -28
  59. data/config/environments/test.rb +0 -28
  60. data/config/initializers/backtrace_silencers.rb +0 -7
  61. data/config/initializers/inflections.rb +0 -10
  62. data/config/initializers/mime_types.rb +0 -5
  63. data/config/initializers/new_rails_defaults.rb +0 -21
  64. data/config/initializers/session_store.rb +0 -15
  65. data/config/locales/en.yml +0 -5
  66. data/config/routes.rb +0 -44
  67. data/db/migrate/001_create_gem_sources.rb +0 -34
  68. data/db/migrate/002_create_managed_gems.rb +0 -32
  69. data/db/migrate/003_create_gem_search_criterias.rb +0 -33
  70. data/db/migrate/004_create_event_handlers.rb +0 -32
  71. data/db/migrate/005_create_artifacts.rb +0 -32
  72. data/db/schema.rb +0 -42
  73. data/db/seeds.rb +0 -7
  74. data/lib/email_adapter.rb +0 -46
  75. data/lib/gem2rpm.rb +0 -189
  76. data/lib/gem_api_adapter.rb +0 -87
  77. data/lib/rpm_adapter.rb +0 -39
  78. data/public/404.html +0 -30
  79. data/public/422.html +0 -30
  80. data/public/500.html +0 -30
  81. data/public/dispatch.cgi +0 -10
  82. data/public/dispatch.fcgi +0 -24
  83. data/public/dispatch.rb +0 -29
  84. data/public/favicon.ico +0 -0
  85. data/public/images/rails.png +0 -0
  86. data/public/javascripts/application.js +0 -2
  87. data/public/javascripts/controls.js +0 -963
  88. data/public/javascripts/dragdrop.js +0 -973
  89. data/public/javascripts/effects.js +0 -1128
  90. data/public/javascripts/prototype.js +0 -4320
  91. data/public/robots.txt +0 -5
  92. data/script/about +0 -4
  93. data/script/console +0 -3
  94. data/script/dbconsole +0 -3
  95. data/script/destroy +0 -3
  96. data/script/generate +0 -3
  97. data/script/performance/benchmarker +0 -3
  98. data/script/performance/profiler +0 -3
  99. data/script/plugin +0 -3
  100. data/script/runner +0 -3
  101. data/script/server +0 -3
  102. data/tmp/gems/README +0 -1
  103. data/tmp/rpms/README +0 -1
@@ -0,0 +1,133 @@
1
+ # ruby gem polisher spec
2
+ #
3
+ # Copyright (C) 2010 Red Hat, Inc.
4
+ # Written by Mohammed Morsi <mmorsi@redhat.com>
5
+ #
6
+ # This program is free software, you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License
8
+ # as published by the Free Software Foundation, either version 3
9
+ # of the License, or (at your option) any later version.
10
+ #
11
+ # You should have received a copy of the the GNU Affero
12
+ # General Public License, along with Polisher. If not, see
13
+ # <http://www.gnu.org/licenses/>
14
+
15
+ require File.dirname(__FILE__) + '/spec_helper'
16
+
17
+ describe "Polisher" do
18
+
19
+ it "should redirect / to /gems" do
20
+ get '/'
21
+ last_response.should_not be_ok
22
+ follow_redirect!
23
+ last_request.url.should == "http://example.org/gems"
24
+ last_response.should be_ok
25
+ end
26
+
27
+ it "should respond to /gems" do
28
+ get '/gems'
29
+ last_response.should be_ok
30
+ end
31
+
32
+ it "should allow gem creations" do
33
+ lambda do
34
+ post '/gems/create', :name => 'create-gem-test', :source_id => 1
35
+ end.should change(ManagedGem, :count).by(1)
36
+ follow_redirect!
37
+ last_response.should be_ok
38
+ last_request.url.should == "http://example.org/gems"
39
+ end
40
+
41
+ it "should allow gem deletions" do
42
+ post '/gems/create', :name => 'delete-gem-test', :source_id => 1
43
+ lambda do
44
+ delete '/gems/destroy/2'
45
+ end.should change(ManagedGem, :count).by(-1)
46
+ follow_redirect!
47
+ last_response.should be_ok
48
+ last_request.url.should == "http://example.org/gems"
49
+ end
50
+
51
+ # run simulate gemcutter api firing process
52
+ it "should successfully post-process an updated gem" do
53
+ gem = ManagedGem.create :name => 'foobar', :source_id => 1
54
+
55
+ event = Event.create :managed_gem => gem,
56
+ :process => "integration_test_handler1",
57
+ :version_qualifier => '>',
58
+ :gem_version => 1.2
59
+
60
+ event = Event.create :managed_gem => gem,
61
+ :process => "integration_test_handler2",
62
+ :version_qualifier => '<',
63
+ :gem_version => 1.1
64
+
65
+ post '/gems/updated', :name => 'foobar',
66
+ :version => '1.3',
67
+ :gem_uri => 'http://gemcutter.org/gems/foobar-1.3.gem'
68
+
69
+ $integration_test_handler_flags.include?(1).should == true
70
+ $integration_test_handler_flags.include?(2).should == false
71
+ end
72
+
73
+ it "should respond to /sources" do
74
+ get '/sources'
75
+ last_response.should be_ok
76
+ end
77
+
78
+ it "shold allow source creations" do
79
+ lambda do
80
+ post '/sources/create', :name => 'create-source-test', :uri => 'http://example1.org'
81
+ end.should change(Source, :count).by(1)
82
+ follow_redirect!
83
+ last_response.should be_ok
84
+ last_request.url.should == "http://example.org/sources"
85
+ end
86
+
87
+ it "should allow source deletions" do
88
+ post '/sources/create', :name => 'delete-source-test', :uri => 'http://example2.org'
89
+ lambda do
90
+ delete '/sources/destroy/2'
91
+ end.should change(Source, :count).by(-1)
92
+ follow_redirect!
93
+ last_response.should be_ok
94
+ last_request.url.should == "http://example.org/sources"
95
+ end
96
+
97
+ it "shold allow event creations" do
98
+ gem = ManagedGem.create :name => "create-event-test-gem", :source_id => 1
99
+ lambda do
100
+ post '/events/create', :managed_gem_id => gem.id,
101
+ :process => 'fooproc',
102
+ :gem_version => '1.0',
103
+ :version_qualifier => ">",
104
+ :process_options => 'opts'
105
+ end.should change(Event, :count).by(1)
106
+ follow_redirect!
107
+ last_response.should be_ok
108
+ last_request.url.should == "http://example.org/gems"
109
+ end
110
+
111
+ it "should allow event deletions" do
112
+ gem = ManagedGem.create :name => "delete-event-test-gem", :source_id => 1
113
+ post '/events/create', :managed_gem_id => gem.id, :process => 'fooproc'
114
+ lambda do
115
+ delete '/events/destroy/1'
116
+ end.should change(Event, :count).by(-1)
117
+ follow_redirect!
118
+ last_response.should be_ok
119
+ last_request.url.should == "http://example.org/gems"
120
+ end
121
+
122
+ end
123
+
124
+ # prolly a better way todo this, but fine for now
125
+ $integration_test_handler_flags = []
126
+
127
+ def integration_test_handler1(gem)
128
+ $integration_test_handler_flags << 1
129
+ end
130
+
131
+ def integration_test_handler2(gem)
132
+ $integration_test_handler_flags << 2
133
+ end
@@ -0,0 +1,44 @@
1
+ # polisher spec system helper
2
+ #
3
+ # Copyright (C) 2010 Red Hat, Inc.
4
+ # Written by Mohammed Morsi <mmorsi@redhat.com>
5
+ #
6
+ # This program is free software, you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License
8
+ # as published by the Free Software Foundation, either version 3
9
+ # of the License, or (at your option) any later version.
10
+ #
11
+ # You should have received a copy of the the GNU Affero
12
+ # General Public License, along with Polisher. If not, see
13
+ # <http://www.gnu.org/licenses/>
14
+
15
+ require 'rubygems'
16
+ require 'sinatra'
17
+ require 'rack/test'
18
+ require 'spec'
19
+ require 'spec/autorun'
20
+ require 'spec/interop/test'
21
+
22
+ dir = File.expand_path(File.dirname(__FILE__) + '/..' )
23
+
24
+ # set polisher conf
25
+ set :artifacts_dir => dir + '/spec/artifacts'
26
+ set :polisher_config => dir + '/config/polisher.yml'
27
+ set :db_config => dir + '/config/database.yml'
28
+ set :log_dir => dir + '/log'
29
+ set :db_data_dir => dir + '/db/data'
30
+
31
+ # set test environment
32
+ set :environment, :test
33
+ set :run, false
34
+ set :raise_errors, true
35
+ set :logging, true
36
+ set :views, dir + '/views'
37
+
38
+ require File.join(File.dirname(__FILE__), '..', 'polisher')
39
+
40
+ Test::Unit::TestCase.send :include, Rack::Test::Methods
41
+
42
+ def app
43
+ Sinatra::Application
44
+ end
@@ -0,0 +1,106 @@
1
+ %h4
2
+ Gems
3
+
4
+ %ul
5
+ - @gems.sort { |x,y| x.name <=> y.name }.each do |gem|
6
+ %li
7
+ %h5
8
+ = gem.name
9
+ %a{:href => url_for("/gems/destroy/#{gem.id}"), :class => 'delete_gem_link'}
10
+ (delete)
11
+ %br/
12
+ %h6
13
+ events
14
+ %ul
15
+ - gem.events.each do |event|
16
+ %li
17
+ = event.process.humanize
18
+ = (event.gem_version != "" ? " on version #{event.version_qualifier} #{event.gem_version}" : "")
19
+ = (event.process_options != "" ? " with options #{event.process_options}" : "")
20
+ %a{:href => url_for("/events/destroy/#{event.id}"), :class => 'delete_event_link'}
21
+ (delete)
22
+
23
+ %h4
24
+ New Gem
25
+
26
+ %form{:method => "post", :action => url_for("/gems/create")}
27
+ %table
28
+ %tr
29
+ %td
30
+ Select Source:
31
+ %td
32
+ %select{:id => "source_id", :name => "source_id"}
33
+ - @sources.each do |source|
34
+ %option{:id => source.id, :value => source.id}
35
+ = source.name
36
+ %tr
37
+ %td
38
+ Name:
39
+ %td
40
+ %input{:type => "text", :id => "name", :name => "name"}
41
+
42
+ %tr
43
+ %td
44
+ %input{:type => "submit", :value => "submit"}
45
+
46
+ %h4 New Event
47
+
48
+ %form{:method => "post", :action => url_for("/events/create")}
49
+ %table
50
+ %tr
51
+ %td
52
+ Select Gem:
53
+ %td{:colspan => "2"}
54
+ %select{:id => "managed_gem_id", :name => "managed_gem_id"}
55
+ - @gems.each do |gem|
56
+ %option{:id => gem.id, :value => gem.id}
57
+ = gem.name
58
+
59
+ %tr
60
+ %td
61
+ Select Process:
62
+ %td{:colspan => "2"}
63
+ %select{:id => "process", :name => "process"}
64
+ - @processes.each do |process|
65
+ %option{:id => process, :value => process}
66
+ = process.humanize
67
+
68
+ %tr
69
+ %td
70
+ Run On Version:
71
+ %td
72
+ %select{:id => "version_qualifier", :name => "version_qualifier"}
73
+ - @version_qualifiers.each do |qualifier|
74
+ %option{:id => qualifier, :value => qualifier}
75
+ = qualifier
76
+
77
+ %td
78
+ %input{:type => "text", :id => "gem_version", :name => "gem_version", :value => '*'}
79
+
80
+ %tr
81
+ %td
82
+ Optional Params:
83
+ %td{:colspan => "2"}
84
+ %input{:type => "text", :id => "process_options", :name => "process_options"}
85
+
86
+ %tr
87
+ %td
88
+ %input{:type => "submit", :value => "submit"}
89
+
90
+
91
+ %script{:type => "text/javascript"}
92
+ :plain
93
+ $('.delete_gem_link').bind('click', function(e){
94
+ c = confirm("delete gem?")
95
+ if(c){
96
+ delete_request(this.href, function(result) { reload(); });
97
+ }
98
+ return false;
99
+ });
100
+ $('.delete_event_link').bind('click', function(e){
101
+ c = confirm("delete event?")
102
+ if(c){
103
+ delete_request(this.href, function(result) { reload(); });
104
+ }
105
+ return false;
106
+ });
data/views/layout.haml ADDED
@@ -0,0 +1,24 @@
1
+ !!!
2
+ !!! XML
3
+
4
+ %html
5
+ %head
6
+ %link{:rel => "stylesheet", :type => "text/css", :href => '/stylesheets/style.css', :media => 'all'}
7
+ %script{ :type => "text/javascript", :src => '/javascripts/jquery-1.2.6.min.js' }
8
+ %script{ :type => "text/javascript", :src => '/javascripts/polisher.js' }
9
+ %body
10
+ #header
11
+ %h3
12
+ ruby gem polisher
13
+
14
+ %ul{:id => "primary_nav"}
15
+ %li
16
+ %a{:href => url_for("/gems")}gems
17
+ %li
18
+ %a{:href => url_for("/sources")}sources
19
+
20
+ %div{:style => "clear: both;"}
21
+
22
+ #main
23
+ = yield
24
+ #footer/
@@ -0,0 +1,41 @@
1
+ %h4
2
+ Sources
3
+
4
+ %ul
5
+ - @sources.sort { |x,y| x.name <=> y.name }.each do |source|
6
+ %li
7
+ %h5
8
+ = source.name
9
+ %a{:href => url_for("/sources/destroy/#{source.id}"), :class => 'delete_source_link'}
10
+ (delete)
11
+
12
+ %h4
13
+ New Source
14
+
15
+ %form{:method => "post", :action => url_for("/sources/create")}
16
+ %table
17
+ %tr
18
+ %td
19
+ Name:
20
+ %td
21
+ %input{:type => "text", :id => "name", :name => "name"}
22
+
23
+ %tr
24
+ %td
25
+ URI:
26
+ %td
27
+ %input{:type => "text", :id => "uri", :name => "uri"}
28
+
29
+ %tr
30
+ %td
31
+ %input{:type => "submit", :value => "submit"}
32
+
33
+ %script{:type => "text/javascript"}
34
+ :plain
35
+ $('.delete_source_link').bind('click', function(e){
36
+ c = confirm("delete source?")
37
+ if(c){
38
+ delete_request(this.href, function(result) { reload(); });
39
+ }
40
+ return false;
41
+ });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polisher
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ version: "0.2"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mohammed Morsi
@@ -11,118 +11,61 @@ cert_chain: []
11
11
 
12
12
  date: 2010-01-13 00:00:00 -05:00
13
13
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rails
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 2.3.2
24
- version:
25
- description: ruby gem polisher / post-publishing-processor
14
+ dependencies: []
15
+
16
+ description: Ruby gem polisher
26
17
  email: mmorsi@redhat.com
27
18
  executables: []
28
19
 
29
20
  extensions: []
30
21
 
31
- extra_rdoc_files:
32
- - README
22
+ extra_rdoc_files: []
23
+
33
24
  files:
34
- - app/controllers/callback_controller.rb
35
- - app/controllers/manage_controller.rb
36
- - app/controllers/application_controller.rb
37
- - app/helpers/application_helper.rb
38
- - app/models/gem_source.rb
39
- - app/models/gem_search_criteria.rb
40
- - app/models/event_handler.rb
41
- - app/models/managed_gem.rb
42
- - app/models/artifact.rb
43
- - app/views/callback/gem_updated.rhtml
44
- - app/views/manage/list.rhtml
45
- - app/views/manage/delete_gem_source.rhtml
46
- - app/views/manage/create_gem.rhtml
47
- - app/views/manage/delete_event_handler.rhtml
48
- - app/views/manage/new_gem_source.rhtml
49
- - app/views/manage/new_event_handler.rhtml
50
- - app/views/manage/new_gem.rhtml
51
- - app/views/manage/delete_gem.rhtml
52
- - app/views/manage/new_gem_search_criteria.rhtml
53
- - app/views/manage/create_gem_source.rhtml
54
- - app/views/manage/create_event_handler.rhtml
55
- - app/views/layouts/index.rhtml
56
- - app/views/layouts/_header.rhtml
57
- - config/routes.rb
58
- - config/environment.rb
59
- - config/environments/development.rb
60
- - config/environments/test.rb
61
- - config/environments/production.rb
62
- - config/locales/en.yml
63
- - config/initializers/new_rails_defaults.rb
64
- - config/initializers/mime_types.rb
65
- - config/initializers/inflections.rb
66
- - config/initializers/backtrace_silencers.rb
67
- - config/initializers/session_store.rb
68
- - config/boot.rb
25
+ - bin/server
69
26
  - config/database.yml
70
27
  - config/polisher.yml
71
- - db/migrate/002_create_managed_gems.rb
72
- - db/migrate/004_create_event_handlers.rb
73
- - db/migrate/003_create_gem_search_criterias.rb
74
- - db/migrate/005_create_artifacts.rb
75
- - db/migrate/001_create_gem_sources.rb
76
- - db/seeds.rb
77
- - db/schema.rb
78
- - lib/rpm_adapter.rb
79
- - lib/email_adapter.rb
80
- - lib/gem_api_adapter.rb
81
- - lib/gem2rpm.rb
82
- - public/500.html
83
- - public/favicon.ico
84
- - public/404.html
85
- - public/dispatch.fcgi
28
+ - config.ru
29
+ - COPYING
30
+ - db/connection.rb
31
+ - db/migrations/003_create_events.rb
32
+ - db/migrations/002_create_managed_gems.rb
33
+ - db/migrations/001_create_sources.rb
34
+ - db/models/event.rb
35
+ - db/models/source.rb
36
+ - db/models/managed_gem.rb
37
+ - lib/common.rb
38
+ - lib/event_handlers.rb
39
+ - lib/sinatra/url_for.rb
40
+ - LICENSE
41
+ - polisher.rb
86
42
  - public/javascripts/jquery-1.2.6.min.js
87
- - public/javascripts/effects.js
88
- - public/javascripts/dragdrop.js
89
- - public/javascripts/application.js
90
- - public/javascripts/controls.js
91
- - public/javascripts/prototype.js
92
- - public/images/rails.png
43
+ - public/javascripts/polisher.js
93
44
  - public/stylesheets/style.css
94
- - public/robots.txt
95
- - public/422.html
96
- - public/dispatch.rb
97
- - public/dispatch.cgi
98
- - script/runner
99
- - script/about
100
- - script/server
101
- - script/dbconsole
102
- - script/plugin
103
- - script/performance/profiler
104
- - script/performance/benchmarker
105
- - script/destroy
106
- - script/generate
107
- - script/console
108
- - tmp/gems/README
109
- - tmp/rpms/README
110
- - README
45
+ - Rakefile
46
+ - README.rdoc
47
+ - spec/spec_helper.rb
48
+ - spec/polisher_spec.rb
49
+ - spec/models_spec.rb
50
+ - spec/event_handlers_spec.rb
51
+ - TODO
52
+ - views/sources/index.haml
53
+ - views/layout.haml
54
+ - views/gems/index.haml
111
55
  has_rdoc: true
112
56
  homepage: http://github.com/movitto/polisher
113
57
  licenses: []
114
58
 
115
59
  post_install_message:
116
- rdoc_options:
117
- - --inline-source
118
- - --charset=UTF-8
60
+ rdoc_options: []
61
+
119
62
  require_paths:
120
63
  - lib
121
64
  required_ruby_version: !ruby/object:Gem::Requirement
122
65
  requirements:
123
66
  - - ">="
124
67
  - !ruby/object:Gem::Version
125
- version: "0"
68
+ version: 1.8.1
126
69
  version:
127
70
  required_rubygems_version: !ruby/object:Gem::Requirement
128
71
  requirements:
@@ -136,6 +79,6 @@ rubyforge_project:
136
79
  rubygems_version: 1.3.5
137
80
  signing_key:
138
81
  specification_version: 3
139
- summary: polisher provides a rails based interface for a user to track packages posted to any number of gem repositories and automatically invoke callback handlers upon package events
82
+ summary: Ruby gem polisher
140
83
  test_files: []
141
84