Class: Purple::PurpleCabinet
- Inherits:
-
Object
- Object
- Purple::PurpleCabinet
- Defined in:
- lib/purple.rb,
lib/purple/osx.rb
Instance Attribute Summary collapse
-
#cabinet_dir ⇒ Object
readonly
Returns the value of attribute cabinet_dir.
-
#files ⇒ Object
readonly
Returns the value of attribute files.
-
#long_name ⇒ Object
Returns the value of attribute long_name.
-
#name ⇒ Object
Returns the value of attribute name.
-
#packages ⇒ Object
readonly
Returns the value of attribute packages.
-
#urls ⇒ Object
readonly
Returns the value of attribute urls.
Instance Method Summary collapse
- #add_url(url) ⇒ Object
-
#assert_dir(path) ⇒ Object
##.
- #build ⇒ Object
- #config ⇒ Object
-
#create_package ⇒ Object
##.
- #deploy ⇒ Object
- #deps ⇒ Object
- #fetch(filename) ⇒ Object
- #fetch_all ⇒ Object
-
#filesdir ⇒ Object
-> aString # Get source dir.
-
#initialize ⇒ PurpleCabinet
constructor
A new instance of PurpleCabinet.
- #make ⇒ Object
- #osx_stage ⇒ Object
- #packagedir ⇒ Object
- #prepare ⇒ Object
- #run_steps(steps = [:prepare, :build, :deps, :make]) ⇒ Object
- #setup ⇒ Object
- #srcdir ⇒ Object
- #stage ⇒ Object
- #stage_root ⇒ Object
Constructor Details
#initialize ⇒ PurpleCabinet
Returns a new instance of PurpleCabinet.
14 15 16 17 18 |
# File 'lib/purple.rb', line 14 def initialize @packages = Array.new @urls = Hash.new @files = Array.new end |
Instance Attribute Details
#cabinet_dir ⇒ Object (readonly)
Returns the value of attribute cabinet_dir.
20 21 22 |
# File 'lib/purple.rb', line 20 def cabinet_dir @cabinet_dir end |
#files ⇒ Object (readonly)
Returns the value of attribute files.
20 21 22 |
# File 'lib/purple.rb', line 20 def files @files end |
#long_name ⇒ Object
Returns the value of attribute long_name.
19 20 21 |
# File 'lib/purple.rb', line 19 def long_name @long_name end |
#name ⇒ Object
Returns the value of attribute name.
19 20 21 |
# File 'lib/purple.rb', line 19 def name @name end |
#packages ⇒ Object (readonly)
Returns the value of attribute packages.
20 21 22 |
# File 'lib/purple.rb', line 20 def packages @packages end |
#urls ⇒ Object (readonly)
Returns the value of attribute urls.
20 21 22 |
# File 'lib/purple.rb', line 20 def urls @urls end |
Instance Method Details
#add_url(url) ⇒ Object
45 46 47 48 49 |
# File 'lib/purple.rb', line 45 def add_url url filename = File.basename URI.parse(url).path @urls[filename] = url @files << filename end |
#assert_dir(path) ⇒ Object
##
123 124 125 126 127 128 129 |
# File 'lib/purple.rb', line 123 def assert_dir path unless FileTest.exist? path puts ">- Creating folder #{path}" Dir.mkdir path end (FileTest.directory? path) ? path : nil end |
#build ⇒ Object
87 88 89 90 91 |
# File 'lib/purple.rb', line 87 def build @packages.each { |p| return false if not p.build } end |
#config ⇒ Object
81 82 83 84 85 |
# File 'lib/purple.rb', line 81 def config @packages.each { |p| return false if not p.config } end |
#create_package ⇒ Object
##
111 112 113 114 115 116 117 118 119 |
# File 'lib/purple.rb', line 111 def create_package p = PackageInfo.new class <<p include PackageActions end p.cabinet = self @packages << p @packages.last end |
#deploy ⇒ Object
110 111 112 113 114 |
# File 'lib/purple/osx.rb', line 110 def deploy packages.each do |pkg| system "open '#{File.join packagedir, pkg.name}.pkg'" end end |
#deps ⇒ Object
99 100 101 |
# File 'lib/purple.rb', line 99 def deps true end |
#fetch(filename) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/purple.rb', line 57 def fetch filename if not FileTest.exist? "#{filesdir}/#{filename}" g = Getter.new urls[filename], filesdir g.get status = 'Getting' loop do status, done = *(g.get_status) printf "\015\033[MFetching %-40s %3d%% %s", filename, done, status $defout.flush sleep 1 break if 'Getting' != status end puts throw :stop, "There was an error while fetching file #{filename}" unless 'Done' == status end end |
#fetch_all ⇒ Object
39 40 41 42 43 |
# File 'lib/purple.rb', line 39 def fetch_all urls.each do |url| Getter.get url, filesdir end end |
#filesdir ⇒ Object
-> aString # Get source dir
23 24 25 |
# File 'lib/purple.rb', line 23 def filesdir assert_dir File.join(@cabinet_dir, 'Files') end |
#make ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/purple/osx.rb', line 81 def make packages.each do |pkg| system "rm -r '#{osx_stage}'" File.open "#{osx_stage}/Description.plist", "w" do |f| f.puts pkg.description end Dir.mkdir "#{osx_stage}/Resources" File.open "#{osx_stage}/Resources/Welcome.txt", "w" do |f| f.print <<-EOS Hello, World! EOS end File.open "#{osx_stage}/Info.plist", "w" do |f| f.print PACKAGE_INFO_TEMPLATE.call(pkg) end File.open "#{osx_stage}/Description.plist", "w" do |f| f.print PACKAGE_DESCRIPTION_TEMPLATE.call(pkg) end system "/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker " + "-build -p '#{packagedir}/#{pkg.name}.pkg' -f '#{pkg.stage_root}' -r '#{osx_stage}/Resources' " + "-d '#{osx_stage}/Description.plist' -i '#{osx_stage}/Info.plist'" end end |
#osx_stage ⇒ Object
75 76 77 78 79 |
# File 'lib/purple/osx.rb', line 75 def osx_stage assert_dir "#{@cabinet_dir}" assert_dir "#{@cabinet_dir}/OsxStage" assert_dir File.join(@cabinet_dir, 'OsxStage') end |
#packagedir ⇒ Object
35 36 37 |
# File 'lib/purple.rb', line 35 def packagedir assert_dir File.join(@cabinet_dir, 'Package') end |
#prepare ⇒ Object
74 75 76 77 78 79 |
# File 'lib/purple.rb', line 74 def prepare @packages.each do |p| p.files.each { |f| fetch f } p.prepare end end |
#run_steps(steps = [:prepare, :build, :deps, :make]) ⇒ Object
103 104 105 106 107 |
# File 'lib/purple.rb', line 103 def run_steps steps=[:prepare, :build, :deps, :make] steps.each do |step| self.method(step).call end end |
#setup ⇒ Object
51 52 53 54 55 |
# File 'lib/purple.rb', line 51 def setup raise 'cabinet long_name not properly set' if not long_name @cabinet_dir = File.join(PURPLE_FOLDER, long_name) assert_dir @cabinet_dir end |
#srcdir ⇒ Object
27 28 29 |
# File 'lib/purple.rb', line 27 def srcdir assert_dir File.join(@cabinet_dir, 'Source') end |
#stage ⇒ Object
93 94 95 96 97 |
# File 'lib/purple.rb', line 93 def stage @packages.each { |p| return false if not p.stage } end |
#stage_root ⇒ Object
31 32 33 |
# File 'lib/purple.rb', line 31 def stage_root assert_dir File.join(@cabinet_dir, 'StageRoot') end |