Class: GNOME2::Rake::SourceDownloadTask

Inherits:
Object
  • Object
show all
Includes:
Rake::DSL
Defined in:
lib/gnome2/rake/source-download-task.rb

Instance Method Summary collapse

Constructor Details

#initialize(package) ⇒ SourceDownloadTask

Returns a new instance of SourceDownloadTask.



29
30
31
# File 'lib/gnome2/rake/source-download-task.rb', line 29

def initialize(package)
  @package = package
end

Instance Method Details

#defineObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/gnome2/rake/source-download-task.rb', line 33

def define
  namespace :source do
    namespace :downloader do
      task :before
      define_download_tasks
      download_tasks = @package.external_packages.collect do |package|
        "source:downloader:download:#{package.name}"
      end
      task :download => download_tasks
      task :after
    end

    desc "Dowanload sources"
    task :download => [
      "source:downloader:before",
      "source:downloader:download",
      "source:downloader:after",
    ]
  end
end

#define_download_tasksObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/gnome2/rake/source-download-task.rb', line 54

def define_download_tasks
  namespace :download do
    @package.external_packages.each do |package|
      download_dir = @package.download_dir
      tar_full_path = download_dir + package.archive_base_name

      task :before
      task :after
      desc "Download #{package.label} into #{download_dir}."
      # task package[:name] => [:before, tar_full_path.to_s, :after]
      task package[:name] => tar_full_path.to_s

      directory_path = tar_full_path.dirname
      directory directory_path.to_s
      file tar_full_path.to_s => directory_path.to_s do
        archive_url = package.archive_url
        rake_output_message "Downloading... #{archive_url}"
        open(archive_url) do |downloaded_tar|
          tar_full_path.open("wb") do |tar_file|
            tar_file.print(downloaded_tar.read)
          end
        end
      end
    end
  end
end