Class: Gaffer::Deb

Inherits:
Object
  • Object
show all
Defined in:
lib/gaffer/deb.rb

Instance Method Summary collapse

Constructor Details

#initialize(base, arch, package, depends) ⇒ Deb

Returns a new instance of Deb.



3
4
5
6
7
8
9
# File 'lib/gaffer/deb.rb', line 3

def initialize(base, arch, package, depends)
  @base = base
  @arch = arch
  @package = package
  @depends = depends
  @dev = !!(@package =~ /-dev$/)
end

Instance Method Details

#compileObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/gaffer/deb.rb', line 11

def compile
  puts self.inspect
  Dir.mktmpdir do |dir|
    install_dir = "#{dir}/#{@base.prefix}"
    Git.clone(@base.dir, install_dir)
    system "mkdir #{dir}/DEBIAN"
    puts control
    File.open("#{dir}/DEBIAN/control", "w") do |f|
      f.write(control)
    end
    if @dev
      system "find #{install_dir} | grep -v [.]git | grep -v #{install_dir}$ | xargs rm -rf"
    else
      system "rm -rf #{install_dir}/.git"
      [ "preinst", "postinst", "prerm", "postrm" ].each do |script|
        system "cp #{@base.dir}/#{script} #{dir}/DEBIAN/" if File.exists?("#{@base.dir}/#{script}")
      end
      if File.exists?("#{@base.dir}/init.conf")
        puts "INSTALLING init.conf"
        system "mkdir -p #{dir}/etc/init"
        system "cp #{@base.dir}/init.conf #{dir}/etc/init/#{@base.project}.conf"
      end
    end
    system "dpkg-deb -b #{dir} ./#{filebase}.deb"
  end
end

#controlObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/gaffer/deb.rb', line 50

def control
  <<CONTROL
Source: #{@package}
Section: unknown
Priority: extra
Maintainer: #{@base.maintainer}
Version: #{@base.build}
Homepage: #{origin_url}
Package: #{@package}
Architecture: #{@arch}
Depends: #{@depends}
Description: #{description}
  #{@readme}
CONTROL
end

#descriptionObject



42
43
44
# File 'lib/gaffer/deb.rb', line 42

def description
  "Gaffer package #{@package} #{@base.build}"
end

#filebaseObject



46
47
48
# File 'lib/gaffer/deb.rb', line 46

def filebase
    "#{@package}_#{@base.build}_#{@arch}"
end

#origin_urlObject



38
39
40
# File 'lib/gaffer/deb.rb', line 38

def origin_url
  @base.git.remotes.select { |r| r.name == "origin" }.map { |r| r.url }.first
end