backlog 0.34.1 → 0.34.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.
@@ -1 +0,0 @@
1
- # Include hook code here
@@ -1,4 +0,0 @@
1
- # Install the templates
2
- require 'rails_generator'
3
- options = { :collision => :skip }
4
- Rails::Generator::Base.instance('goldspike', [], options).command('create').invoke!
@@ -1,102 +0,0 @@
1
- #
2
- # Building a war file
3
- #
4
- # By Robert Egglestone
5
- # Fausto Lelli (*minor* patches for windows platform, plugin dist.)
6
- #
7
-
8
- require 'fileutils'
9
- require 'java_library'
10
- require 'war_config'
11
- require 'packer'
12
- require 'util'
13
-
14
- module War
15
- class Creator
16
-
17
- attr_accessor :config
18
-
19
- def initialize(config = Configuration.instance)
20
- @config = config
21
- @java_lib_packer = JavaLibPacker.new(@config)
22
- @ruby_lib_packer = RubyLibPacker.new(@config)
23
- @webapp_packer = WebappPacker.new(@config)
24
- @file_packer = FileLibPacker.new(@config)
25
- end
26
-
27
- def standalone=(value)
28
- @config.standalone = value
29
- end
30
-
31
- def create_shared_war
32
- @config.standalone = false
33
- create_war_file
34
- end
35
-
36
- def create_standalone_war
37
- @config.standalone = true
38
- create_war_file
39
- end
40
-
41
- def clean_war
42
- FileUtils.remove_file(@config.war_file) if File.exists?(@config.war_file)
43
- end
44
-
45
- def create_war_file
46
- assemble
47
- create_war
48
- end
49
-
50
- def assemble
51
- WLog.info 'Assembling web application'
52
- add_java_libraries
53
- if config.standalone
54
- add_ruby_libraries
55
- end
56
- add_configuration_files
57
- add_files
58
- end
59
-
60
- private
61
-
62
- def create_war
63
- WLog.info 'Creating web archive'
64
- @webapp_packer.create_war
65
- end
66
-
67
- def add_files
68
- @file_packer.add_files
69
- end
70
-
71
- def add_java_libraries
72
- @java_lib_packer.add_java_libraries
73
- end
74
-
75
- def add_ruby_libraries
76
- @ruby_lib_packer.add_ruby_libraries
77
- end
78
-
79
- def add_configuration_files
80
- require 'erb'
81
- FileUtils.makedirs(File.join(config.staging, 'WEB-INF'))
82
- war_file_dir = File.join(config.staging, 'WEB-INF')
83
- Dir.foreach(war_file_dir) do |file|
84
- output = case file
85
- when /\.\Z/ # ignore dotfiles
86
- nil
87
- when /\.erb\Z/
88
- output_file = file.gsub(/\.erb\Z/, '')
89
- template = File.read(File.join(war_file_dir, file))
90
- erb = ERB.new(template)
91
- erb.result(binding)
92
- end
93
-
94
- unless output.nil?
95
- File.open(File.join(config.staging, 'WEB-INF', output_file), 'w') { |out| out << output}
96
- end
97
-
98
- end
99
- end
100
-
101
- end #class
102
- end #module
@@ -1,131 +0,0 @@
1
- #
2
- # A library which can hopefully be obtained through one of the following mechanisms:
3
- # + A local artifact: lib/java/jruby-0.9.1.jar
4
- # + An artifact in a local maven repo: ~/.m2/repository/org/jruby/jruby/0.9.1/jruby-0.9.1/jar
5
- # + An artifact in a remote maven repo: http://www.ibiblio.com/maven2/org/jruby/jruby/0.9.1/jruby-0.9.1/jar
6
- #
7
- require 'util'
8
-
9
- module War
10
- class JavaLibrary
11
-
12
- attr_accessor :name, :version, :locations, :config
13
-
14
- def initialize(name, version, config)
15
- @config = config
16
- @name = name
17
- @version = version
18
- @locations = local_locations(name, version)
19
- end
20
-
21
- def file
22
- "#{name}-#{version}.jar"
23
- end
24
-
25
- def install(config, target_file)
26
- found = false
27
- for location in locations
28
- if location[0,5] == 'http:' || location[0,6] == 'https:'
29
- found = install_remote(config, location, target_file)
30
- else
31
- found = install_local(config, location, target_file)
32
- end
33
- break if found
34
- end
35
-
36
- unless found
37
- # all attempts have failed, inform the user
38
- raise <<-ERROR
39
- The library #{self} could not be obtained from in any of the following locations:
40
- + #{locations.join("
41
- + ")}
42
- ERROR
43
- end
44
- end
45
-
46
- def install_local(config, file, target_file)
47
- return false unless File.exists?(file)
48
- FileUtils.copy(file, target_file)
49
- return true
50
- end
51
-
52
- def install_remote(config, location, target_file)
53
- response = read_url(location)
54
- return false unless response
55
- File.open(target_file, 'wb') { |out| out << response.body }
56
- return true
57
- end
58
-
59
- # properly download the required files, taking account of redirects
60
- # this code is almost straight from the Net::HTTP docs
61
- def read_url(uri_str, limit=10)
62
- raise ArgumentError, 'HTTP redirect too deep' if limit == 0
63
- require 'net/http'
64
- require 'uri'
65
- # setup the proxy if available
66
- http = Net::HTTP
67
- if ENV['http_proxy']
68
- proxy = URI.parse(ENV['http_proxy'])
69
- http = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password)
70
- end
71
- # download the file
72
- response = http.get_response(URI.parse(uri_str))
73
- case response
74
- when Net::HTTPSuccess then response
75
- when Net::HTTPRedirection then read_url(response['location'], limit - 1)
76
- else false
77
- end
78
- end
79
-
80
- def to_s
81
- "#{name}-#{version}"
82
- end
83
-
84
- def local_locations(name, version, type='jar')
85
- WLog.debug("locations for " + name + " " + version);
86
- paths = []
87
- if config.local_java_lib
88
- paths << File.join(config.local_java_lib, "#{name}-#{version}.#{type}")
89
- paths << File.join(config.local_java_lib, "#{name}.#{type}")
90
- end
91
- if config.jruby_home
92
- paths << File.join(config.jruby_home, 'lib', "#{name}-#{version}.#{type}")
93
- paths << File.join(config.jruby_home, 'lib', "#{name}.#{type}")
94
- end
95
- WLog.debug("paths: " + paths.join("\n"))
96
- return paths
97
- end
98
-
99
- end #class
100
-
101
- class MavenLibrary < JavaLibrary
102
-
103
- attr_accessor :group, :name, :version, :config
104
-
105
- def initialize (group, name, version, config)
106
- @config = config
107
- @group = group
108
- @name = name
109
- @version = version
110
- @locations = maven_locations(group, name, version)
111
- end
112
-
113
- def maven_locations(group, artifact, version, type='jar')
114
- WLog.debug("locations for " + group + " " + artifact + " " + version);
115
- paths = []
116
- maven_local_repository = config.maven_local_repository
117
- maven_remote_repository = config.maven_remote_repository
118
- if maven_local_repository
119
- paths << File.join(maven_local_repository, group.gsub('.', File::SEPARATOR), artifact, version, "#{artifact}-#{version}.#{type}")
120
- end
121
- if maven_remote_repository
122
- paths << "#{maven_remote_repository}/#{group.gsub('.', '/')}/#{artifact}/#{version}/#{artifact}-#{version}.#{type}"
123
- end
124
- WLog.debug("paths: " + paths.join("\n"))
125
- return paths
126
- end
127
-
128
- end
129
-
130
-
131
- end #module
@@ -1,215 +0,0 @@
1
- require 'util'
2
-
3
- module War
4
-
5
- class Packer
6
-
7
- attr_accessor :config
8
-
9
- def initialize(config = Configuration.instance)
10
- @config = config
11
- end
12
-
13
- def install(source, dest, mode=0644)
14
- # File.install is disabled because of a performance problem under JRuby,
15
- # without it the task may fail if the original gem files were not writable by the owner
16
- #File.install(source, dest, mode)
17
- FileUtils.copy(source, dest)
18
- end
19
-
20
- def copy_tree(files, target, strip_prefix='')
21
- files.each do |f|
22
- relative = f[strip_prefix.length, f.length]
23
- target_file = File.join(target, relative)
24
- if File.directory?(f)
25
- FileUtils.makedirs(target_file)
26
- elsif File.file?(f)
27
- WLog.debug " Copying #{f} to #{relative}"
28
- FileUtils.makedirs(File.dirname(target_file))
29
- install(f, target_file)
30
- end
31
- end
32
- end
33
-
34
- def compile_tree(dir, config)
35
- return unless config.compile_ruby
36
- # find the libraries
37
- classpath_files = Rake::FileList.new(File.join(config.staging, 'WEB-INF', 'lib', '*.jar'))
38
- classpath_files_array = classpath_files.to_a
39
- classpath_files_array.collect! {|f| File.expand_path(f) }
40
- classpath = classpath_files_array.join(config.os_path_separator)
41
- # compile the files
42
- os_dir = dir.gsub(File::SEPARATOR, config.os_separator)
43
- unless system("cd #{os_dir} && java -cp #{classpath} org.jruby.webapp.ASTSerializerMain")
44
- raise "Error: failed to preparse files in #{dir}, returned with error code #{$?}"
45
- end
46
- end
47
-
48
- def jar(target_file, source_dir, files, compress=true)
49
- os_target_file = target_file.gsub(File::SEPARATOR, config.os_separator)
50
- os_source_dir = source_dir.gsub(File::SEPARATOR, config.os_separator)
51
- flags = '-cf'
52
- flags += '0' unless compress
53
- files_list = files.join(' ')
54
- unless system("jar #{flags} \"#{os_target_file}\" -C \"#{os_source_dir}\" #{files_list}")
55
- raise "Error: failed to create archive, error code #{$?}"
56
- end
57
- end
58
-
59
- end
60
-
61
- class FileLibPacker < Packer
62
- def add_files
63
- WLog.info("Packing needed files ...")
64
-
65
- staging = config.staging
66
- lib = File.join(staging, 'WEB-INF', 'lib')
67
- classes = File.join(staging, 'WEB-INF', 'classes')
68
- base = File.join(staging, 'WEB-INF')
69
- install(:lib, lib)
70
- install(:classes, classes)
71
- install(:base, base)
72
- end
73
-
74
- def install(dir_sym, dir)
75
- WLog.debug("assembling files in " + dir + " directory")
76
- FileUtils.makedirs(dir)
77
- WLog.debug("need to assemble #{config.files.select{|k,v| v[:directory] == dir_sym }.size} files")
78
- for name, file_info in config.files
79
- next unless file_info[:directory] == dir_sym
80
- WLog.debug("file to add " + name )
81
- target = File.join(dir, name)
82
- WLog.debug("should install to " + target)
83
- file = file_info[:location]
84
- if !File.exists?(target) || File.mtime(target) < File.mtime(file_info[:location])
85
- WLog.info " adding file #{name}"
86
- if File.exists?(file)
87
- FileUtils.copy(file, target)
88
- else
89
- WLog.warn "file '#{file}' does not exist"
90
- end
91
- end
92
- end
93
- end
94
- end
95
-
96
- class JavaLibPacker < Packer
97
-
98
- def initialize(config)
99
- super(config)
100
- end
101
-
102
- def add_java_libraries
103
- WLog.info("Packing needed Java libraries ...")
104
- staging = config.staging
105
- lib = File.join(staging, 'WEB-INF', 'lib')
106
- WLog.debug("assembling files in " + lib + " directory")
107
- FileUtils.makedirs(lib)
108
- WLog.debug("need to assemble #{config.java_libraries.size} libraries")
109
- for library in config.java_libraries.values
110
- WLog.debug("library to assemble " + library.name )
111
- target = File.join(lib, library.file)
112
- WLog.debug("should install to " + target)
113
- unless File.exists?(target)
114
- WLog.info " adding Java library #{library}"
115
- library.install(config, target)
116
- end
117
- end
118
- end
119
- end
120
-
121
- class RubyLibPacker < Packer
122
-
123
- def initialize (config)
124
- super(config)
125
- end
126
-
127
- def add_ruby_libraries
128
- # add the gems
129
- WLog.info("Packing needed Ruby gems ...")
130
- gem_home = File.join(config.staging, 'WEB-INF', 'gems')
131
- FileUtils.makedirs(gem_home)
132
- FileUtils.makedirs(File.join(gem_home, 'gems'))
133
- FileUtils.makedirs(File.join(gem_home, 'specifications'))
134
- for gem in config.gem_libraries
135
- copy_gem(gem[0], gem[1], gem_home)
136
- end
137
- end
138
-
139
- def copy_gem(name, match_version, target_gem_home)
140
- require 'rubygems'
141
- matched = Gem.source_index.search(name, match_version)
142
- raise "The #{name} gem is not installed" if matched.empty?
143
- gem = matched.last
144
-
145
- gem_target = File.join(target_gem_home, 'gems', gem.full_gem_path.split('/').last)
146
-
147
- unless File.exists?(gem_target)
148
- # package up the gem
149
- WLog.info " adding Ruby gem #{gem.name} version #{gem.version}"
150
- # copy the specification
151
- install(gem.loaded_from, File.join(target_gem_home, 'specifications'), 0644)
152
- # copy the files
153
- FileUtils.makedirs(gem_target)
154
- gem_files = Rake::FileList.new(File.join(gem.full_gem_path, '**', '*'))
155
- copy_tree(gem_files, gem_target, gem.full_gem_path)
156
- # compile the .rb files to .rb.ast.ser
157
- compile_tree(File.join(gem_target, 'lib'), config)
158
- end
159
-
160
- # handle dependencies
161
- if config.add_gem_dependencies
162
- for gem_child in gem.dependencies
163
- #puts " Gem #{gem.name} requires #{gem_child.name} "
164
- copy_gem(gem_child.name, gem_child.requirements_list, target_gem_home)
165
- end
166
- end
167
- end
168
-
169
- end
170
-
171
- class WebappPacker < Packer
172
-
173
- def initialize(config)
174
- super(config)
175
- end
176
-
177
- def create_war
178
- # we can't include a directory, but exclude it's files
179
- webapp_files = Rake::FileList.new
180
- webapp_files.include('*')
181
- webapp_files.exclude('*.war')
182
- webapp_files.exclude(/tmp$/)
183
- webapp_files.include(File.join('tmp', '*'))
184
- webapp_files.exclude(File.join('tmp', 'jetty'))
185
- config.excludes.each do |exclude|
186
- webapp_files.exclude(exclude)
187
- end
188
-
189
- jar(config.war_file, config.staging, webapp_files)
190
- end
191
-
192
- def add_webapp
193
- staging = config.staging
194
- WLog.info 'Packing web application ...'
195
- FileUtils.makedirs(staging)
196
- webapp_files = Rake::FileList.new(File.join('.', '**', '*'))
197
- webapp_files.exclude(staging)
198
- webapp_files.exclude('*.war')
199
- webapp_files.exclude(config.local_java_lib)
200
- webapp_files.exclude(File.join('public', '.ht*'))
201
- webapp_files.exclude(File.join('public', 'dispatch*'))
202
- webapp_files.exclude(File.join('log', '*.log'))
203
- webapp_files.exclude(File.join('tmp', 'cache', '*'))
204
- webapp_files.exclude(File.join('tmp', 'sessions', '*'))
205
- webapp_files.exclude(File.join('tmp', 'sockets', '*'))
206
- webapp_files.exclude(File.join('tmp', 'jetty'))
207
- config.excludes.each do |exclude|
208
- webapp_files.exclude(exclude)
209
- end
210
- copy_tree(webapp_files, staging)
211
- compile_tree(staging, config)
212
- end
213
-
214
- end
215
- end