dust-deploy 0.13.17 → 0.13.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/changelog.md +9 -0
 - data/lib/dust/helper.rb +1 -2
 - data/lib/dust/recipes/iptables.rb +2 -2
 - data/lib/dust/recipes/newrelic.rb +0 -6
 - data/lib/dust/recipes/packages.rb +3 -3
 - data/lib/dust/recipes/repositories.rb +32 -15
 - data/lib/dust/recipes/skel.rb +2 -2
 - data/lib/dust/server.rb +61 -25
 - data/lib/dust/version.rb +1 -1
 - metadata +2 -2
 
    
        data/changelog.md
    CHANGED
    
    | 
         @@ -1,6 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Changelog
         
     | 
| 
       2 
2 
     | 
    
         
             
            =============
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
            0.13.18
         
     | 
| 
      
 5 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            -  adds support for ppa-repositories
         
     | 
| 
      
 8 
     | 
    
         
            +
            -  fixes small bug with iptables ipv6 workaround
         
     | 
| 
      
 9 
     | 
    
         
            +
            -  newrelic now works with non-apt systems
         
     | 
| 
      
 10 
     | 
    
         
            +
            -  packages recipe now accepts https, http and ftp urls
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       4 
13 
     | 
    
         
             
            0.13.17
         
     | 
| 
       5 
14 
     | 
    
         
             
            ------------
         
     | 
| 
       6 
15 
     | 
    
         | 
    
        data/lib/dust/helper.rb
    CHANGED
    
    
| 
         @@ -263,14 +263,14 @@ class Iptables < Recipe 
     | 
|
| 
       263 
263 
     | 
    
         
             
              def workaround_setup
         
     | 
| 
       264 
264 
     | 
    
         
             
                # openwrt always needs the workaround
         
     | 
| 
       265 
265 
     | 
    
         
             
                if @node.uses_opkg?
         
     | 
| 
       266 
     | 
    
         
            -
                  @workaround  
     | 
| 
      
 266 
     | 
    
         
            +
                  @workaround ||= { 'path' => '/etc/firewall.sh' }
         
     | 
| 
       267 
267 
     | 
    
         | 
| 
       268 
268 
     | 
    
         
             
                # iptables-persistent < version 0.5.1 doesn't support ipv6
         
     | 
| 
       269 
269 
     | 
    
         
             
                # so doing a workaround
         
     | 
| 
       270 
270 
     | 
    
         
             
                elsif @node.uses_apt? and @ip_version == 6
         
     | 
| 
       271 
271 
     | 
    
         
             
                  unless @node.package_min_version?('iptables-persistent', '0.5.1', :quiet => true)
         
     | 
| 
       272 
272 
     | 
    
         
             
                    @node.messages.add('iptables-persistent too old (< 0.5.1), using workaround for ipv6').warning
         
     | 
| 
       273 
     | 
    
         
            -
                    @workaround  
     | 
| 
      
 273 
     | 
    
         
            +
                    @workaround ||= { 'path' => '/etc/network/if-pre-up.d/ip6tables' }
         
     | 
| 
       274 
274 
     | 
    
         
             
                  end
         
     | 
| 
       275 
275 
     | 
    
         
             
                end
         
     | 
| 
       276 
276 
     | 
    
         | 
| 
         @@ -2,12 +2,6 @@ class Newrelic < Recipe 
     | 
|
| 
       2 
2 
     | 
    
         
             
              desc 'newrelic:deploy', 'installs and configures newrelic system monitoring'
         
     | 
| 
       3 
3 
     | 
    
         
             
              def deploy
         
     | 
| 
       4 
4 
     | 
    
         
             
                return Dust.print_failed 'no key specified' unless @config
         
     | 
| 
       5 
     | 
    
         
            -
                return unless @node.uses_apt? :quiet=>false
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                if @options.restart? or @options.reload?
         
     | 
| 
       8 
     | 
    
         
            -
                  msg = @node.messages.add('updating repositories')
         
     | 
| 
       9 
     | 
    
         
            -
                  msg.parse_result(@node.exec('aptitude update')[:exit_code])
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
5 
     | 
    
         | 
| 
       12 
6 
     | 
    
         
             
                unless @node.install_package 'newrelic-sysmond'
         
     | 
| 
       13 
7 
     | 
    
         
             
                  @node.messages.add('installing newrelic monitoring daemon failed, did you setup the newrelic repositories?').failed
         
     | 
| 
         @@ -16,7 +16,7 @@ class Repositories < Recipe 
     | 
|
| 
       16 
16 
     | 
    
         
             
              # deletes all .list files under /etc/apt/sources.list.d
         
     | 
| 
       17 
17 
     | 
    
         
             
              def delete_old_repositories
         
     | 
| 
       18 
18 
     | 
    
         
             
                msg = @node.messages.add('deleting old repositories')
         
     | 
| 
       19 
     | 
    
         
            -
                @node.rm 
     | 
| 
      
 19 
     | 
    
         
            +
                @node.rm('/etc/apt/sources.list.d/*.list', :quiet => true) if @node.uses_apt?
         
     | 
| 
       20 
20 
     | 
    
         
             
                msg.ok
         
     | 
| 
       21 
21 
     | 
    
         
             
              end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
         @@ -26,37 +26,43 @@ class Repositories < Recipe 
     | 
|
| 
       26 
26 
     | 
    
         
             
                  # if repo is present but not a hash use defaults
         
     | 
| 
       27 
27 
     | 
    
         
             
                  repo = {} unless repo.is_a? Hash
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                  merge_with_default_settings 
     | 
| 
      
 29 
     | 
    
         
            +
                  merge_with_default_settings(repo)
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
                  # the default repository in /etc/apt/sources.list (debian)
         
     | 
| 
       32 
32 
     | 
    
         
             
                  if name == 'default'
         
     | 
| 
       33 
     | 
    
         
            -
                    msg = @node.messages.add('deploying default repository' 
     | 
| 
       34 
     | 
    
         
            -
                    sources = generate_default_repo 
     | 
| 
       35 
     | 
    
         
            -
                    msg.parse_result(@node.write('/etc/apt/sources.list', sources, :quiet => true) 
     | 
| 
      
 33 
     | 
    
         
            +
                    msg = @node.messages.add('deploying default repository')
         
     | 
| 
      
 34 
     | 
    
         
            +
                    sources = generate_default_repo(repo)
         
     | 
| 
      
 35 
     | 
    
         
            +
                    msg.parse_result(@node.write('/etc/apt/sources.list', sources, :quiet => true))
         
     | 
| 
       36 
36 
     | 
    
         
             
                  else
         
     | 
| 
       37 
     | 
    
         
            -
                     
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
      
 37 
     | 
    
         
            +
                    if repo['ppa']
         
     | 
| 
      
 38 
     | 
    
         
            +
                      @node.messages.add("adding ppa repository '#{name}'\n")
         
     | 
| 
      
 39 
     | 
    
         
            +
                      add_ppa(repo)
         
     | 
| 
      
 40 
     | 
    
         
            +
                    else
         
     | 
| 
      
 41 
     | 
    
         
            +
                      msg = @node.messages.add("adding repository '#{name}' to sources")
         
     | 
| 
      
 42 
     | 
    
         
            +
                      sources = generate_repo(repo)
         
     | 
| 
      
 43 
     | 
    
         
            +
                      msg.parse_result(@node.write("/etc/apt/sources.list.d/#{name}.list", sources, :quiet => true))
         
     | 
| 
      
 44 
     | 
    
         
            +
                      add_repo_key(name, repo)
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
       41 
46 
     | 
    
         
             
                  end
         
     | 
| 
       42 
47 
     | 
    
         
             
                end
         
     | 
| 
       43 
48 
     | 
    
         
             
              end
         
     | 
| 
       44 
49 
     | 
    
         | 
| 
       45 
50 
     | 
    
         
             
              # merge repo configuration with default settings
         
     | 
| 
       46 
     | 
    
         
            -
              def merge_with_default_settings 
     | 
| 
      
 51 
     | 
    
         
            +
              def merge_with_default_settings(repo)
         
     | 
| 
       47 
52 
     | 
    
         
             
                # setting defaults
         
     | 
| 
       48 
53 
     | 
    
         
             
                repo['url'] ||= 'http://ftp.debian.org/debian/' if @node.is_debian?
         
     | 
| 
       49 
54 
     | 
    
         
             
                repo['url'] ||= 'http://archive.ubuntu.com/ubuntu/' if @node.is_ubuntu?
         
     | 
| 
       50 
55 
     | 
    
         | 
| 
       51 
56 
     | 
    
         
             
                repo['release'] ||= @node['lsbdistcodename']
         
     | 
| 
       52 
     | 
    
         
            -
                repo['components'] ||= 'main'
         
     | 
| 
      
 57 
     | 
    
         
            +
                repo['components'] ||= [ 'main' ]
         
     | 
| 
      
 58 
     | 
    
         
            +
                repo['components'] = repo['components'].to_array.join(' ')
         
     | 
| 
       53 
59 
     | 
    
         | 
| 
       54 
60 
     | 
    
         
             
                # ||= doesn't work for booleans
         
     | 
| 
       55 
61 
     | 
    
         
             
                repo['source'] = repo['source'].nil? ? true : repo['source']
         
     | 
| 
       56 
62 
     | 
    
         
             
                repo['binary'] = repo['binary'].nil? ? true : repo['binary']
         
     | 
| 
       57 
63 
     | 
    
         
             
              end
         
     | 
| 
       58 
64 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
              def generate_default_repo 
     | 
| 
      
 65 
     | 
    
         
            +
              def generate_default_repo(repo)
         
     | 
| 
       60 
66 
     | 
    
         
             
                sources = ''
         
     | 
| 
       61 
67 
     | 
    
         
             
                sources << "deb #{repo['url']} #{repo['release']} #{repo['components']}\n"
         
     | 
| 
       62 
68 
     | 
    
         
             
                sources << "deb-src #{repo['url']} #{repo['release']} #{repo['components']}\n\n"
         
     | 
| 
         @@ -89,7 +95,18 @@ class Repositories < Recipe 
     | 
|
| 
       89 
95 
     | 
    
         
             
                sources
         
     | 
| 
       90 
96 
     | 
    
         
             
              end
         
     | 
| 
       91 
97 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
              def  
     | 
| 
      
 98 
     | 
    
         
            +
              def add_ppa(repo)
         
     | 
| 
      
 99 
     | 
    
         
            +
                return false unless @node.install_package('python-software-properties', :indent => 2)
         
     | 
| 
      
 100 
     | 
    
         
            +
                msg = @node.messages.add('running add-apt-repository', :indent => 2)
         
     | 
| 
      
 101 
     | 
    
         
            +
                cmd = "add-apt-repository -y ppa:#{repo['ppa']}"
         
     | 
| 
      
 102 
     | 
    
         
            +
                if repo['keyserver']
         
     | 
| 
      
 103 
     | 
    
         
            +
                  @node.messages.add("using custom keyserver '#{repo['keyserver']}'").ok
         
     | 
| 
      
 104 
     | 
    
         
            +
                  cmd << " -k #{repo['keyserver']}"
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
                msg.parse_result(@node.exec(cmd)[:exit_code])
         
     | 
| 
      
 107 
     | 
    
         
            +
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
              def generate_repo(repo)
         
     | 
| 
       93 
110 
     | 
    
         
             
                # add url to sources.list
         
     | 
| 
       94 
111 
     | 
    
         
             
                sources = ''
         
     | 
| 
       95 
112 
     | 
    
         
             
                repo['release'].to_array.each do |release|
         
     | 
| 
         @@ -99,14 +116,14 @@ class Repositories < Recipe 
     | 
|
| 
       99 
116 
     | 
    
         
             
                sources
         
     | 
| 
       100 
117 
     | 
    
         
             
              end
         
     | 
| 
       101 
118 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
              def add_repo_key 
     | 
| 
      
 119 
     | 
    
         
            +
              def add_repo_key(name, repo)
         
     | 
| 
       103 
120 
     | 
    
         
             
                # add the repository key
         
     | 
| 
       104 
121 
     | 
    
         
             
                if repo['key']
         
     | 
| 
       105 
122 
     | 
    
         
             
                  msg = @node.messages.add("adding #{name} repository key")
         
     | 
| 
       106 
123 
     | 
    
         | 
| 
       107 
124 
     | 
    
         
             
                  # if the key is a .deb, download and install it
         
     | 
| 
       108 
125 
     | 
    
         
             
                  if repo['key'].match /\.deb$/
         
     | 
| 
       109 
     | 
    
         
            -
                    ret = @node.exec 
     | 
| 
      
 126 
     | 
    
         
            +
                    ret = @node.exec('mktemp --tmpdir dust.XXXXXXXXXX')
         
     | 
| 
       110 
127 
     | 
    
         
             
                    if ret[:exit_code] != 0
         
     | 
| 
       111 
128 
     | 
    
         
             
                      msg.failed('could not create temporary file on server')
         
     | 
| 
       112 
129 
     | 
    
         
             
                      return false
         
     | 
    
        data/lib/dust/recipes/skel.rb
    CHANGED
    
    | 
         @@ -4,8 +4,8 @@ class Skel < Recipe 
     | 
|
| 
       4 
4 
     | 
    
         
             
                @config.to_array.each do |user|
         
     | 
| 
       5 
5 
     | 
    
         
             
                  @node.messages.add("deploying homedir skeleton for #{user}\n")
         
     | 
| 
       6 
6 
     | 
    
         
             
                  Dir["#{@template_path}/.*"].each do |file|
         
     | 
| 
       7 
     | 
    
         
            -
                    next unless File.file? 
     | 
| 
       8 
     | 
    
         
            -
                    @node.deploy_file 
     | 
| 
      
 7 
     | 
    
         
            +
                    next unless File.file?(file)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    @node.deploy_file(file, "#{@node.get_home(user)}/#{File.basename(file)}", { :binding => binding, :indent => 2 })
         
     | 
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
    
        data/lib/dust/server.rb
    CHANGED
    
    | 
         @@ -163,13 +163,8 @@ module Dust 
     | 
|
| 
       163 
163 
     | 
    
         | 
| 
       164 
164 
     | 
    
         
             
                  # if in sudo mode, copy file to temporary place, then move using sudo
         
     | 
| 
       165 
165 
     | 
    
         
             
                  if @node['sudo']
         
     | 
| 
       166 
     | 
    
         
            -
                     
     | 
| 
       167 
     | 
    
         
            -
                     
     | 
| 
       168 
     | 
    
         
            -
                      msg.failed('could not create temporary file (needed for sudo)')
         
     | 
| 
       169 
     | 
    
         
            -
                      return false
         
     | 
| 
       170 
     | 
    
         
            -
                    end
         
     | 
| 
       171 
     | 
    
         
            -
             
     | 
| 
       172 
     | 
    
         
            -
                    tmpfile = ret[:stdout].chomp
         
     | 
| 
      
 166 
     | 
    
         
            +
                    tmpfile = mktemp
         
     | 
| 
      
 167 
     | 
    
         
            +
                    return msg.failed('could not create temporary file (needed for sudo)') unless tmpfile
         
     | 
| 
       173 
168 
     | 
    
         | 
| 
       174 
169 
     | 
    
         
             
                    # allow user to write file without sudo (for scp)
         
     | 
| 
       175 
170 
     | 
    
         
             
                    # then change file back to root, and copy to the destination
         
     | 
| 
         @@ -319,32 +314,66 @@ module Dust 
     | 
|
| 
       319 
314 
     | 
    
         
             
                  msg.failed
         
     | 
| 
       320 
315 
     | 
    
         
             
                end
         
     | 
| 
       321 
316 
     | 
    
         | 
| 
       322 
     | 
    
         
            -
                def install_package 
     | 
| 
       323 
     | 
    
         
            -
                  options = default_options.merge 
     | 
| 
      
 317 
     | 
    
         
            +
                def install_package(package, options = {})
         
     | 
| 
      
 318 
     | 
    
         
            +
                  options = default_options.merge(options)
         
     | 
| 
       324 
319 
     | 
    
         
             
                  options[:env] ||= ''
         
     | 
| 
       325 
320 
     | 
    
         | 
| 
       326 
     | 
    
         
            -
                  if package_installed? 
     | 
| 
      
 321 
     | 
    
         
            +
                  if package_installed?(package, :quiet => true)
         
     | 
| 
       327 
322 
     | 
    
         
             
                    return messages.add("package #{package} already installed", options).ok
         
     | 
| 
       328 
323 
     | 
    
         
             
                  end
         
     | 
| 
       329 
324 
     | 
    
         | 
| 
       330 
     | 
    
         
            -
                   
     | 
| 
      
 325 
     | 
    
         
            +
                  # if package is an url, download and install the package file
         
     | 
| 
      
 326 
     | 
    
         
            +
                  if package =~ /^(http:\/\/|https:\/\/|ftp:\/\/)/
         
     | 
| 
      
 327 
     | 
    
         
            +
                    if uses_apt?
         
     | 
| 
      
 328 
     | 
    
         
            +
                      messages.add("installing #{package}\n", options)
         
     | 
| 
      
 329 
     | 
    
         
            +
                      return false unless install_package('wget')
         
     | 
| 
       331 
330 
     | 
    
         | 
| 
       332 
     | 
    
         
            -
             
     | 
| 
       333 
     | 
    
         
            -
             
     | 
| 
       334 
     | 
    
         
            -
             
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
     | 
    
         
            -
             
     | 
| 
       338 
     | 
    
         
            -
             
     | 
| 
       339 
     | 
    
         
            -
             
     | 
| 
       340 
     | 
    
         
            -
             
     | 
| 
       341 
     | 
    
         
            -
             
     | 
| 
      
 331 
     | 
    
         
            +
                      msg = messages.add('downloading package', options.merge(:indent => options[:indent] + 1))
         
     | 
| 
      
 332 
     | 
    
         
            +
             
     | 
| 
      
 333 
     | 
    
         
            +
                      # creating temporary file
         
     | 
| 
      
 334 
     | 
    
         
            +
                      tmpfile = mktemp
         
     | 
| 
      
 335 
     | 
    
         
            +
                      return msg.failed('could not create temporary file') unless tmpfile
         
     | 
| 
      
 336 
     | 
    
         
            +
             
     | 
| 
      
 337 
     | 
    
         
            +
                      msg.parse_result(exec("wget #{package} -O #{tmpfile}")[:exit_code])
         
     | 
| 
      
 338 
     | 
    
         
            +
             
     | 
| 
      
 339 
     | 
    
         
            +
                      msg = messages.add('installing package', options.merge(:indent => options[:indent] + 1))
         
     | 
| 
      
 340 
     | 
    
         
            +
                      ret = msg.parse_result(exec("dpkg -i #{tmpfile}")[:exit_code])
         
     | 
| 
      
 341 
     | 
    
         
            +
             
     | 
| 
      
 342 
     | 
    
         
            +
                      msg = messages.add('deleting downloaded file', options.merge(:indent => options[:indent] + 1))
         
     | 
| 
      
 343 
     | 
    
         
            +
                      msg.parse_result(rm(tmpfile, :quiet => true))
         
     | 
| 
      
 344 
     | 
    
         
            +
             
     | 
| 
      
 345 
     | 
    
         
            +
                      return ret
         
     | 
| 
      
 346 
     | 
    
         
            +
             
     | 
| 
      
 347 
     | 
    
         
            +
                    elsif uses_rpm?
         
     | 
| 
      
 348 
     | 
    
         
            +
                      msg = messages.add("installing #{package}", options)                             
         
     | 
| 
      
 349 
     | 
    
         
            +
                      return msg.parse_result(exec("rpm -U #{package}")[:exit_code])
         
     | 
| 
      
 350 
     | 
    
         
            +
             
     | 
| 
      
 351 
     | 
    
         
            +
                    else
         
     | 
| 
      
 352 
     | 
    
         
            +
                      return msg.failed("\ninstalling packages from url not yet supported " +
         
     | 
| 
      
 353 
     | 
    
         
            +
                                        "for your distribution. feel free to contribute!").failed
         
     | 
| 
      
 354 
     | 
    
         
            +
                    end
         
     | 
| 
      
 355 
     | 
    
         
            +
             
     | 
| 
      
 356 
     | 
    
         
            +
                  # package is not an url, use package manager
         
     | 
| 
       342 
357 
     | 
    
         
             
                  else
         
     | 
| 
       343 
     | 
    
         
            -
                     
     | 
| 
       344 
     | 
    
         
            -
             
     | 
| 
      
 358 
     | 
    
         
            +
                    msg = messages.add("installing #{package}", options)
         
     | 
| 
      
 359 
     | 
    
         
            +
             
     | 
| 
      
 360 
     | 
    
         
            +
                    if uses_apt?
         
     | 
| 
      
 361 
     | 
    
         
            +
                      exec "DEBIAN_FRONTEND=noninteractive aptitude install -y #{package}"
         
     | 
| 
      
 362 
     | 
    
         
            +
                    elsif uses_emerge?
         
     | 
| 
      
 363 
     | 
    
         
            +
                      exec "#{options[:env]} emerge #{package}"
         
     | 
| 
      
 364 
     | 
    
         
            +
                    elsif uses_rpm?
         
     | 
| 
      
 365 
     | 
    
         
            +
                      exec "yum install -y #{package}"
         
     | 
| 
      
 366 
     | 
    
         
            +
                    elsif uses_pacman?
         
     | 
| 
      
 367 
     | 
    
         
            +
                      exec "echo y |pacman -S #{package}"
         
     | 
| 
      
 368 
     | 
    
         
            +
                    elsif uses_opkg?
         
     | 
| 
      
 369 
     | 
    
         
            +
                      exec "opkg install #{package}"
         
     | 
| 
      
 370 
     | 
    
         
            +
                    else
         
     | 
| 
      
 371 
     | 
    
         
            +
                      return msg.failed("install_package only supports apt, emerge and yum systems at the moment")
         
     | 
| 
      
 372 
     | 
    
         
            +
                    end
         
     | 
| 
       345 
373 
     | 
    
         | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
       347 
     | 
    
         
            -
             
     | 
| 
      
 374 
     | 
    
         
            +
                    # check if package actually was installed
         
     | 
| 
      
 375 
     | 
    
         
            +
                    return msg.parse_result(package_installed?(package, :quiet => true))
         
     | 
| 
      
 376 
     | 
    
         
            +
                  end
         
     | 
| 
       348 
377 
     | 
    
         
             
                end
         
     | 
| 
       349 
378 
     | 
    
         | 
| 
       350 
379 
     | 
    
         
             
                # check if installed package is at least version min_version
         
     | 
| 
         @@ -760,6 +789,13 @@ module Dust 
     | 
|
| 
       760 
789 
     | 
    
         
             
                  end
         
     | 
| 
       761 
790 
     | 
    
         
             
                end
         
     | 
| 
       762 
791 
     | 
    
         | 
| 
      
 792 
     | 
    
         
            +
                # create a temporary file
         
     | 
| 
      
 793 
     | 
    
         
            +
                def mktemp
         
     | 
| 
      
 794 
     | 
    
         
            +
                  ret = exec('mktemp --tmpdir dust.XXXXXXXXXX')
         
     | 
| 
      
 795 
     | 
    
         
            +
                  return false if ret[:exit_code] != 0
         
     | 
| 
      
 796 
     | 
    
         
            +
                  ret[:stdout].chomp
         
     | 
| 
      
 797 
     | 
    
         
            +
                end
         
     | 
| 
      
 798 
     | 
    
         
            +
             
     | 
| 
       763 
799 
     | 
    
         | 
| 
       764 
800 
     | 
    
         
             
                private
         
     | 
| 
       765 
801 
     | 
    
         | 
    
        data/lib/dust/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dust-deploy
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.13. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.13.18
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-07- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-07-13 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: json
         
     |