Class: Setup::Installer

Inherits:
Base
  • Object
show all
Defined in:
lib/setup/installer.rb

Overview

Installer class handles the actual install procedure.

NOTE: This new version does not support per-directory hooks.

Defined Under Namespace

Classes: Shebang

Instance Attribute Summary

Attributes inherited from Base

#config, #force, #io, #project, #quiet, #trace, #trial

Instance Method Summary collapse

Methods inherited from Base

#bash, #force?, #force_remove_file, #initialize, #initialize_hooks, #quiet?, #remove_file, #rm_f, #rmdir, #rootdir, #ruby, #trace?, #trace_off, #trial?

Constructor Details

This class inherits a constructor from Setup::Base

Instance Method Details

#installObject

Install package.



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/setup/installer.rb', line 18

def install
  Dir.chdir(rootdir) do
    install_bin
    install_ext
    install_lib
    install_data
    install_man
    install_doc
    install_etc
    prune_install_record
  end
end

#install_binObject

Install binaries (executables).



32
33
34
35
36
37
38
39
# File 'lib/setup/installer.rb', line 32

def install_bin
  return unless directory?('bin')
  report_transfer('bin', config.bindir)
  #io.puts "* bin -> #{config.bindir}" unless quiet?
  files = files('bin')
  install_files('bin', files, config.bindir, 0755)
  #install_shebang(files, config.bindir)
end

#install_dataObject

Install shared data.



66
67
68
69
70
71
72
# File 'lib/setup/installer.rb', line 66

def install_data
  return unless directory?('data')
  report_transfer('data', config.datadir)
  #io.puts "* data -> #{config.datadir}" unless quiet?
  files = files('data')
  install_files('data', files, config.datadir, 0644)
end

#install_docObject

Install documentation.

TODO: The use of the project name in the doc directory should be set during the config phase. Define a seperate config method for it.



95
96
97
98
99
100
101
102
103
104
# File 'lib/setup/installer.rb', line 95

def install_doc
  return unless config.doc?
  return unless directory?('doc')
  return unless project.name
  dir = File.join(config.docdir, "ruby-#{project.name}")
  report_transfer('doc', dir)
  #io.puts "* doc -> #{dir}" unless quiet?
  files = files('doc')
  install_files('doc', files, dir, 0644)
end

#install_etcObject

Install configuration.



75
76
77
78
79
80
# File 'lib/setup/installer.rb', line 75

def install_etc
  return unless directory?('etc')
  report_transfer('etc', config.sysconfdir)
  files = files('etc')
  install_files('etc', files, config.sysconfdir, 0644)
end

#install_extObject

Install shared extension libraries.



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/setup/installer.rb', line 42

def install_ext
  return unless directory?('ext')
  report_transfer('ext', config.sodir)
  #io.puts "* ext -> #{config.sodir}" unless quiet?
  files = files('ext')
  files = select_dllext(files)
  #install_files('ext', files, config.sodir, 0555)
  files.each do |file|
    name = File.join(File.dirname(File.dirname(file)), File.basename(file))
    dest = destination(config.sodir, name)
    install_file('ext', file, dest, 0555, install_prefix)
  end
end

#install_libObject

Install library files.



57
58
59
60
61
62
63
# File 'lib/setup/installer.rb', line 57

def install_lib
  return unless directory?('lib')
  report_transfer('lib', config.rbdir)
  #io.puts "* lib -> #{config.rbdir}" unless quiet?
  files = files('lib')
  install_files('lib', files, config.rbdir, 0644)
end

#install_manObject

Install manpages.



83
84
85
86
87
88
# File 'lib/setup/installer.rb', line 83

def install_man
  return unless directory?('man')
  report_transfer('man', config.mandir)
  files = files('man')
  install_files('man', files, config.mandir, 0644)
end

#install_prefixObject



12
13
14
# File 'lib/setup/installer.rb', line 12

def install_prefix
  config.install_prefix
end