fpm 0.4.0pre1 → 0.4.0pre2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/fpm/command.rb CHANGED
@@ -92,7 +92,7 @@ class FPM::Command < Clamp::Command
92
92
  option ["-S", "--package-name-suffix"], "PACKAGE_NAME_SUFFIX",
93
93
  "a name suffix to append to package and dependencies."
94
94
  option ["-e", "--edit"], :flag,
95
- "Edit the package spec before building."
95
+ "Edit the package spec before building.", :default => false
96
96
  option ["-x", "--exclude"], "EXCLUDE_PATTERN",
97
97
  "Exclude paths matching pattern (shell wildcard globs valid here)" do |val|
98
98
  @exclude_pattern ||= []
@@ -167,6 +167,7 @@ class FPM::Command < Clamp::Command
167
167
  @logger = Cabin::Channel.get
168
168
  @logger.subscribe(STDOUT)
169
169
  @logger.level = :warn
170
+
170
171
  validator = Validator.new(self)
171
172
  if !validator.ok?
172
173
  validator.messages.each do |message|
@@ -176,7 +177,6 @@ class FPM::Command < Clamp::Command
176
177
  @logger.fatal("Fix the above problems, and you'll be rolling packages in no time!")
177
178
  return 1
178
179
  end
179
-
180
180
  input_class = FPM::Package.types[input_type]
181
181
  output_class = FPM::Package.types[output_type]
182
182
 
@@ -198,10 +198,11 @@ class FPM::Command < Clamp::Command
198
198
  # clamp makes option attributes available as accessor methods
199
199
  # do --foo-bar is available as 'foo_bar'
200
200
  # make these available as package attributes.
201
+ attr = "#{attr}?" if !respond_to?(attr)
201
202
  input.attributes[attr.to_sym] = send(attr) if respond_to?(attr)
202
203
  end
203
204
  end
204
-
205
+
205
206
  args.each do |arg|
206
207
  input.input(arg)
207
208
  end
data/lib/fpm/package.rb CHANGED
@@ -1,13 +1,12 @@
1
- require "fpm/namespace"
2
- require "fpm/util"
3
- require "socket" # for Socket.gethostname
4
- require "cabin"
5
- require "tmpdir"
1
+ require "fpm/namespace" # local
2
+ require "fpm/util" # local
3
+ require "tmpdir" # stdlib
4
+ require "socket" # stdlib, for Socket.gethostname
5
+ require "shellwords" # stdlib, for Shellwords.escape
6
+ require "cabin" # gem "cabin"
6
7
 
7
8
  # This class is the parent of all packages.
8
9
  # If you want to implement an FPM package type, you'll inherit from this.
9
- #
10
- # There are
11
10
  class FPM::Package
12
11
  include FPM::Util
13
12
  include Cabin::Inspectable
@@ -269,6 +268,17 @@ class FPM::Package
269
268
  .gsub("TYPE", type.to_s)
270
269
  end # def to_s
271
270
 
271
+ def edit_file(path)
272
+ editor = ENV['FPM_EDITOR'] || ENV['EDITOR'] || 'vi'
273
+ @logger.info("Launching editor", :file => path)
274
+ safesystem("#{editor} #{Shellwords.escape(path)}")
275
+
276
+ if File.size(path) == 0
277
+ raise "Empty file after editing: #{path.inspect}"
278
+ end
279
+ end # def edit_file
280
+
281
+
272
282
  class << self
273
283
  # This method is invoked when subclass occurs.
274
284
  #
@@ -332,5 +342,6 @@ class FPM::Package
332
342
  public(:type, :initialize, :convert, :input, :output, :to_s, :cleanup, :files)
333
343
 
334
344
  # Package internal public api
335
- public(:cleanup_staging, :cleanup_build, :staging_path, :converted_from)
345
+ public(:cleanup_staging, :cleanup_build, :staging_path, :converted_from,
346
+ :edit_file)
336
347
  end # class FPM::Package
@@ -108,7 +108,8 @@ class FPM::Package::RPM < FPM::Package
108
108
  rpmspec = template("rpm.erb").result(binding)
109
109
  specfile = File.join(build_path("SPECS"), "#{name}.spec")
110
110
  File.write(specfile, rpmspec)
111
- File.write("/tmp/rpm.spec", rpmspec)
111
+
112
+ edit_file(specfile) if attributes[:edit?]
112
113
 
113
114
  args << specfile
114
115
  #if defines.empty?
data/templates/rpm.erb CHANGED
@@ -88,6 +88,13 @@ fi
88
88
  <%# Output config files and then regular files. -%>
89
89
  <%= config_files.collect { |c| '%config ' + c }.join("\n") -%>
90
90
  <%# list only files, not directories? %>
91
- <%= files.reject { |f| File.directory?(File.join(staging_path, f)) }.collect { |f| "/#{f}" }.join("\n") %>
91
+ <%=
92
+ # Reject directories, then prefix files with "/", then make sure
93
+ # paths with spaces are quoted. I hate rpm so much.
94
+ files.reject { |f| File.directory?(File.join(staging_path, f)) } \
95
+ .collect { |f| "/#{f}" } \
96
+ .collect { |f| f[/\s/] and "\"#{f}\"" or f } \
97
+ .join("\n")
98
+ %>
92
99
 
93
100
  %changelog
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0pre1
4
+ version: 0.4.0pre2
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &14920820 !ruby/object:Gem::Requirement
16
+ requirement: &21926160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *14920820
24
+ version_requirements: *21926160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cabin
27
- requirement: &14920320 !ruby/object:Gem::Requirement
27
+ requirement: &21924700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.4.2
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *14920320
35
+ version_requirements: *21924700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: backports
38
- requirement: &14919820 !ruby/object:Gem::Requirement
38
+ requirement: &21921940 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.3.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *14919820
46
+ version_requirements: *21921940
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: arr-pm
49
- requirement: &14919440 !ruby/object:Gem::Requirement
49
+ requirement: &23174960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *14919440
57
+ version_requirements: *23174960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rush
60
- requirement: &14918980 !ruby/object:Gem::Requirement
60
+ requirement: &23174500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *14918980
68
+ version_requirements: *23174500
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &14918560 !ruby/object:Gem::Requirement
71
+ requirement: &23174080 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *14918560
79
+ version_requirements: *23174080
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: insist
82
- requirement: &14918140 !ruby/object:Gem::Requirement
82
+ requirement: &23173660 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *14918140
90
+ version_requirements: *23173660
91
91
  description: Convert directories, rpms, python eggs, rubygems, and more to rpms, debs,
92
92
  solaris packages and more. Win at package management without wasting pointless hours
93
93
  debugging bad rpm specs!