puck 1.0.0.pre0 → 1.0.0.pre1

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