Class: Raxe::Installer

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raxe) ⇒ Installer

Returns a new instance of Installer.



7
8
9
# File 'lib/raxe/installer.rb', line 7

def initialize( raxe )
  @raxe = raxe
end

Class Method Details

.get_haxeObject

initialize



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/raxe/installer.rb', line 11

def self.get_haxe
  # TODO: figure out a better way of doing this... seriously...
  # FIXME: Actually test this method lol
  begin
    puts "  Let's see if you have haxe installed..."
    sh "which haxe"
    puts "  Great! It looks like haXe has already been installed."
  rescue
    puts "  Grabbing the tar ball from haxe.org..."
    sh "wget http://haxe.org/file/hxinst-linux.tgz"
    puts "  Extracting the tar ball..."
    sh "tar -xvf hxinst-linux.tgz"
    puts "  Changing permission to run the installer executable"
    sh "chmod 755 hxinst-linux"
    puts "  Running the executable"
    sh "./hxinst-linux"
    puts "  Cleaning up"
    sh "rm hxinst-linux"
    sh "rm hxinst-linux.tgz"
    puts "  Finished installing haxe"
  end # begin-rescue
end

.kill_conf_fileObject

self.install



46
47
48
49
# File 'lib/raxe/installer.rb', line 46

def self.kill_conf_file
  filename = File.join( Dir.pwd, ".raxeconf" )
  File.delete( filename ) if FileTest.exists? filename 
end

.make_conf_fileObject

self.kill_conf_file



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/raxe/installer.rb', line 51

def self.make_conf_file
  configurations = { 
    "root" => "raxe" ,
    "output" => "raxe/out" ,
    "source" => "raxe/src",
    "tests" => "raxe/tests"
  } # configuration
  File.open( File.join( Dir.pwd, ".raxeconf" ), "w+" ) do |f|
    configurations.each do |key, val|
      f.puts key + "!!!" + val
    end # configurations.each
  end # File.open
end

.make_contentObject

kill_content



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/raxe/installer.rb', line 85

def self.make_content
  root_dir = "raxe"
  unless FileTest.exists? root_dir
    Dir.mkdir root_dir 
    puts "  Created directory " + root_dir
  else
    puts "  Directory " + root_dir + " already exists. Skiping to next step."
  end # exists
  [ "src", "out", "tests" ].each do |f|
    folder = File.join( root_dir , f )
    unless FileTest.exists? folder
      Dir.mkdir folder 
      puts " Created directory " + folder
    else
      puts " Directory " + folder + " already exists. Skipping to next step."
    end # exists
  end # each
  File.open( File.join( root_dir, "build.hxml" ), "w+" ) do |f|
    f.puts "# haXe output instructions go here. Uncommented whatever you need"
    f.puts "# -js out/raxe.js"
    f.puts "# -main raxetest.RaxeFire"
  end # File.open
  puts " Wrote build.hxml"
  puts " Done!"
end

Instance Method Details

#install(install_data) ⇒ Object

check_haxe



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/raxe/installer.rb', line 34

def install( install_data )
  case install_data[:req]
    when :install
      Installer.make_conf_file
      Installer.make_content
    when :uninstall
      Installer.kill_conf_file
      kill_content
  end # case req
  install_data[:callback].call
end

#kill_contentObject

self.raxe_conf



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/raxe/installer.rb', line 65

def kill_content
  kill_recursively = lambda do |dir|
    begin
      Dir.delete( dir ) unless Dir.entries( dir ).length > 2
    rescue
      dir.foreach do |item|
        File.delete( item ) if File.file? item
        kill_recursively.call( item ) if Dir.directory? item &&  item != "." && item != ".."
      end # dir.foreach
    end # begin-rescue
  end # kill_recursively
  @raxe.paths.each do |type, location|
    next if type == "root"
    kill_recursively.call( location )
  end # @raxe.paths
  File.delete( File.join( @raxe.paths['root'], "build.hxml" ) ) if FileTest.exists? File.join( @raxe.paths['root'], "build.hxml" )
  puts " Deleted build.hxml"
  Dir.delete( @raxe.paths["root"] ) if Dir.entries( @raxe.paths["root"] ).length < 3
end