puck 1.0.0.pre0 → 1.0.0.pre1

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/bin/puck CHANGED
@@ -1,7 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $: << File.expand_path('../../lib', __FILE__)
4
-
5
3
  require 'puck'
6
4
 
7
5
 
@@ -19,26 +19,33 @@ module Puck
19
19
 
20
20
  private
21
21
 
22
- def command_line_options
23
- options = {}
22
+ SCALAR_ARGS = [:app_name, :app_dir, :build_dir, :jruby_complete].freeze
23
+ LIST_ARGS = [:extra_files].freeze
24
+ ARG_PREFIX = '--'.freeze
24
25
 
26
+ def command_line_options
25
27
  state = nil
26
-
27
- until @argv.empty?
28
- arg = @argv.shift
29
- case arg
30
- when '--extra-files'
31
- state = :extra_files
32
- options[:extra_files] ||= []
28
+ option = nil
29
+ @argv.each_with_object({}) do |arg, options|
30
+ if arg.start_with?(ARG_PREFIX)
31
+ option = arg.sub(/^--/, '').gsub('-', '_').to_sym
32
+ if LIST_ARGS.include?(option)
33
+ options[option] = []
34
+ state = :list
35
+ else
36
+ state = :scalar
37
+ end
33
38
  else
34
39
  case state
35
- when :extra_files
36
- options[:extra_files] << arg
40
+ when :list
41
+ options[option] << arg
42
+ when :scalar
43
+ options[option] = arg
44
+ option = nil
45
+ state = nil
37
46
  end
38
47
  end
39
48
  end
40
-
41
- options
42
49
  end
43
50
  end
44
51
  end
@@ -6,18 +6,21 @@ require 'pathname'
6
6
  require 'set'
7
7
  require 'ant'
8
8
  require 'bundler'
9
- require 'jruby-jars'
10
9
  require 'puck/version'
11
10
 
11
+ begin
12
+ require 'jruby-jars'
13
+ rescue LoadError
14
+ end
12
15
 
13
16
  module Puck
14
17
  class Jar
15
18
  def initialize(configuration={})
16
19
  @configuration = configuration.dup
17
- @configuration[:base_dir] ||= Dir.pwd
18
- @configuration[:project_name] ||= File.basename(@configuration[:base_dir])
19
- @configuration[:build_dir] ||= File.join(@configuration[:base_dir], 'build')
20
- @configuration[:jar_name] ||= @configuration[:project_name] + '.jar'
20
+ @configuration[:app_dir] ||= Dir.pwd
21
+ @configuration[:app_name] ||= File.basename(@configuration[:app_dir])
22
+ @configuration[:build_dir] ||= File.join(@configuration[:app_dir], 'build')
23
+ @configuration[:jar_name] ||= @configuration[:app_name] + '.jar'
21
24
  end
22
25
 
23
26
  def create!
@@ -25,8 +28,14 @@ module Puck
25
28
 
26
29
  Dir.mktmpdir do |tmp_dir|
27
30
  output_path = File.join(@configuration[:build_dir], @configuration[:jar_name])
28
- project_dir = Pathname.new(@configuration[:base_dir])
31
+ project_dir = Pathname.new(@configuration[:app_dir])
29
32
  extra_files = @configuration[:extra_files] || []
33
+ jruby_complete_path = @configuration[:jruby_complete]
34
+
35
+ if !(defined? JRubyJars) && !(jruby_complete_path && File.exists?(jruby_complete_path))
36
+ raise ArgumentError, 'Cannot build Jar: jruby-jars must be installed, or :jruby_complete must be specified'
37
+ end
38
+
30
39
  gem_dependencies = resolve_gem_dependencies
31
40
  create_jar_bootstrap!(tmp_dir, gem_dependencies)
32
41
 
@@ -38,8 +47,13 @@ module Puck
38
47
  end
39
48
 
40
49
  zipfileset dir: tmp_dir, includes: 'jar-bootstrap.rb'
41
- zipfileset src: JRubyJars.core_jar_path
42
- zipfileset src: JRubyJars.stdlib_jar_path
50
+
51
+ if jruby_complete_path
52
+ zipfileset src: jruby_complete_path
53
+ else
54
+ zipfileset src: JRubyJars.core_jar_path
55
+ zipfileset src: JRubyJars.stdlib_jar_path
56
+ end
43
57
 
44
58
  %w[bin lib].each do |sub_dir|
45
59
  zipfileset dir: project_dir + sub_dir, prefix: "META-INF/app.home/#{sub_dir}"
@@ -70,8 +84,7 @@ module Puck
70
84
  gemspec_path = File.join(ENV['GEM_HOME'], 'bundler', 'gems', "#{bundler_spec.name}-#{revision[0, 12]}", "#{bundler_spec.name}.gemspec")
71
85
  base_path = File.dirname(gemspec_path)
72
86
  else
73
- platform_ext = bundler_spec.platform == 'ruby' ? '' : "-#{bundler_spec.platform}"
74
- gemspec_path = File.join(ENV['GEM_HOME'], 'specifications', "#{bundler_spec.full_name}#{platform_ext}.gemspec")
87
+ gemspec_path = File.join(ENV['GEM_HOME'], 'specifications', "#{bundler_spec.full_name}.gemspec")
75
88
  base_path = File.join(ENV['GEM_HOME'], 'gems', bundler_spec.full_name)
76
89
  end
77
90
  if File.exists?(gemspec_path)
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Puck
4
- VERSION = '1.0.0.pre0'.freeze
4
+ VERSION = '1.0.0.pre1'.freeze
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puck
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre0
4
+ version: 1.0.0.pre1
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,28 +9,13 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-18 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: jruby-jars
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - '='
19
- - !ruby/object:Gem::Version
20
- version: 1.7.3
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 1.7.3
27
- none: false
28
- prerelease: false
29
- type: :runtime
12
+ date: 2013-07-19 00:00:00.000000000 Z
13
+ dependencies: []
30
14
  description: Puck takes your app and packs it along with all your gems and a complete JRuby runtime in a standalone Jar file that can be run with just `java -jar …`
31
15
  email:
32
16
  - theo@iconara.net
33
- executables: []
17
+ executables:
18
+ - puck
34
19
  extensions: []
35
20
  extra_rdoc_files: []
36
21
  files:
@@ -41,7 +26,8 @@ files:
41
26
  - lib/puck/version.rb
42
27
  - bin/puck
43
28
  homepage: http://github.com/iconara/puck
44
- licenses: []
29
+ licenses:
30
+ - Apache License 2.0
45
31
  post_install_message:
46
32
  rdoc_options: []
47
33
  require_paths: