Module: CFoundry::UploadHelpers

Defined in:
lib/appfog-vmc-plugin/cfoundry/upload_helpers.rb

Instance Method Summary collapse

Instance Method Details

#prepare_package(path, to) ⇒ Object



4
5
6
7
8
9
10
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/appfog-vmc-plugin/cfoundry/upload_helpers.rb', line 4

def prepare_package(path, to)
  if path =~ /\.(jar|war|zip)$/
    CFoundry::Zip.unpack(path, to)
  elsif war_file = Dir.glob("#{path}/*.war").first
    CFoundry::Zip.unpack(war_file, to)
  else
    check_unreachable_links(path)

    FileUtils.mkdir(to)

    files = Dir.glob("#{path}/{*,.[^\.]*}")

    exclude = UPLOAD_EXCLUDE
    if File.exists?("#{path}/.vmcignore")
      exclude += File.read("#{path}/.vmcignore").split(/\n+/)
    end

    # adds additional .afignore
    if File.exists?("#{path}/.afignore")
      exclude += File.read("#{path}/.afignore").split(/\n+/)
    end

    # prevent initial copying if we can, remove sub-files later
    files.reject! do |f|
      exclude.any? do |e|
        File.fnmatch(f.sub(path + "/", ""), e)
      end
    end

    FileUtils.cp_r(files, to)

    find_sockets(to).each do |s|
      File.delete s
    end

    # remove ignored globs more thoroughly
    #
    # note that the above file list only includes toplevel
    # files/directories for cp_r, so this is where sub-files/etc. are
    # removed
    exclude.each do |e|
      Dir.glob("#{to}/#{e}").each do |f|
        FileUtils.rm_rf(f)
      end
    end
  end
end