fpm 0.2.25 → 0.2.26

Sign up to get free protection for your applications and to get access to all the features.
data/bin/fpm CHANGED
@@ -8,11 +8,15 @@ require "erb"
8
8
 
9
9
  $: << "#{File.dirname(__FILE__)}/../lib"
10
10
  require "fpm"
11
+ require "fpm/flags"
11
12
 
12
13
  def main(args)
13
14
  settings = OpenStruct.new
14
15
  settings.exclude = []
15
16
 
17
+ # Source-specific settings/flags go here.
18
+ settings.source = {}
19
+
16
20
  # Maintainer scripts - https://github.com/jordansissel/fpm/issues/18
17
21
  settings.scripts ||= {}
18
22
 
@@ -125,6 +129,9 @@ def main(args)
125
129
  end # --url
126
130
  end # OptionParser
127
131
 
132
+ # Add extra flags.
133
+ FPM::Source::Gem.flags(FPM::Flags.new(opts, "gem", "gem source only"), settings)
134
+
128
135
  opts.parse!(args)
129
136
 
130
137
  ok = true
@@ -41,7 +41,8 @@ class FPM::Builder
41
41
  :maintainer => settings.maintainer,
42
42
  :provides => [],
43
43
  :description => settings.description,
44
- :url => settings.url
44
+ :url => settings.url,
45
+ :settings => settings.source
45
46
  )
46
47
 
47
48
  @edit = !!settings.edit
@@ -0,0 +1,20 @@
1
+ require "fpm/namespace"
2
+
3
+ class FPM::Flags
4
+ def initialize(opts, flag_prefix, help_prefix)
5
+ @opts = opts
6
+ @flag_prefix = flag_prefix
7
+ @help_prefix = help_prefix
8
+ end # def initialize
9
+
10
+ def on(*args, &block)
11
+ fixed_args = args.collect do |arg|
12
+ if arg =~ /^--/
13
+ "--#{@flag_prefix}-#{arg.gsub(/^--/, "")}"
14
+ else
15
+ "(#{@help_prefix}) #{arg}"
16
+ end
17
+ end
18
+ @opts.on(*fixed_args, &block)
19
+ end # def on
20
+ end # class FPM::Flags
@@ -5,6 +5,13 @@ require "rubygems"
5
5
  require "fileutils"
6
6
 
7
7
  class FPM::Source::Gem < FPM::Source
8
+ def self.flags(opts, settings)
9
+ opts.on("--bin-path DIRECTORY",
10
+ "The directory to install gem executables") do |path|
11
+ settings.source[:bin_path] = path
12
+ end
13
+ end # def flags
14
+
8
15
  def get_source(params)
9
16
  gem = @paths.first
10
17
  looks_like_name_re = /^[A-Za-z0-9_-]+$/
@@ -102,17 +109,26 @@ class FPM::Source::Gem < FPM::Source
102
109
  if self[:prefix]
103
110
  installdir = "#{tmpdir}/#{self[:prefix]}"
104
111
  # TODO(sissel): Overwriting @paths is bad mojo and confusing...
112
+ # Maybe we shouldn't?
105
113
  @paths = [ self[:prefix] ]
106
114
  else
107
- installdir = "#{tmpdir}/#{::Gem::dir}"
115
+ installdir = File.join(tmpdir, ::Gem::dir)
108
116
  @paths = [ ::Gem::dir ]
109
117
  end
118
+
110
119
  ::FileUtils.mkdir_p(installdir)
111
120
  args = ["gem", "install", "--quiet", "--no-ri", "--no-rdoc",
112
- "--install-dir", installdir, "--ignore-dependencies", gem]
121
+ "--install-dir", installdir, "--ignore-dependencies"]
122
+ if self[:settings][:bin_path]
123
+ args += ["--bindir", File.join(tmpdir, self[:settings][:bin_path])]
124
+ @paths << self[:settings][:bin_path]
125
+ end
126
+
127
+ args << gem
113
128
  system(*args)
114
129
 
115
- tar(tar_path, ".#{@paths.first}", tmpdir)
130
+ # make paths relative (/foo becomes ./foo)
131
+ tar(tar_path, @paths.collect {|p| ".#{p}"}, tmpdir)
116
132
  FileUtils.rm_r(tmpdir)
117
133
 
118
134
  # TODO(sissel): Make a helper method.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fpm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 37
4
+ hash: 35
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 25
10
- version: 0.2.25
9
+ - 26
10
+ version: 0.2.26
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jordan Sissel
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-16 00:00:00 -07:00
18
+ date: 2011-05-17 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -48,6 +48,7 @@ files:
48
48
  - lib/rpm/header.rb
49
49
  - lib/rpm/rpmfile.rb
50
50
  - lib/fpm/builder.rb
51
+ - lib/fpm/flags.rb
51
52
  - lib/fpm/namespace.rb
52
53
  - lib/fpm/source.rb
53
54
  - lib/fpm/rubyfixes.rb
@@ -99,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
100
  requirements: []
100
101
 
101
102
  rubyforge_project:
102
- rubygems_version: 1.6.0
103
+ rubygems_version: 1.5.1
103
104
  signing_key:
104
105
  specification_version: 3
105
106
  summary: fpm - package building and mangling