rakelib/scm.rb
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 13 Dec 2016 13:33:24 +0000
changeset 102 fc572bd895f2
parent 88 112075e99cef
child 117 f163911eb7bc
permissions -rw-r--r--
Cleanup: treat stx:stc & stx:librun as normal packages ...so `rake update`, `rake workflow:push-upstream` and so work with them as well.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
     1
require 'rakelib/hglib'
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
     2
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
module Rake
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
module Rake::StX
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
85
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
     9
# Cross-platform way of finding an executable in the $PATH.
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    10
#
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    11
#   which('ruby') #=> /usr/bin/ruby
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    12
def which(cmd)
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    13
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    14
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    15
    exts.each { |ext|
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    16
      exe = File.join(path, "#{cmd}#{ext}")
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    17
      return exe if File.executable?(exe) && !File.directory?(exe)
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    18
    }
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    19
  end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    20
  return nil
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    21
end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    22
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    23
cvs_rsh_set = false
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    24
60
57c963e85a00 Cleanup: Renamed `vcs.rb` & `Rake::StX::VCS` to `scm.rb` and `Rake::StX::SCM`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 59
diff changeset
    25
module Rake::Stx::SCM
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    26
  # Not quite sure why following code
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    27
  #
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    28
  #     include RakeFileUtils
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    29
  #
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    30
  # does not make extra methods (like `sh`) defined in `extensions.rb`
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    31
  # visible here. To workaround, define them here. Ugly...
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    32
  module_function
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    33
  def sh(cmd, cwd: Dir.pwd, &block)
81
2a1efb99c83d Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 75
diff changeset
    34
    begin 
2a1efb99c83d Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 75
diff changeset
    35
      return RakeFileUtils::sh(cmd, cwd: cwd, &block)
2a1efb99c83d Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 75
diff changeset
    36
    rescue
2a1efb99c83d Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 75
diff changeset
    37
      return false      
2a1efb99c83d Oops, fixed bug introduced in de0e8016c2d5
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 75
diff changeset
    38
    end
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
    39
  end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
85
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    41
  # Make sure CVS_RSH environment variable is properly set. Prefer MSYS2 ssh.exe
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    42
  # over plink.exe. For details, see `hglib.rb`, method `sshconf()`  
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    43
  module_function
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    44
  def ensure_cvs_rsh_set()        
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    45
    if @cvs_rsh_set then
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    46
      return
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    47
    end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    48
    ssh = nil
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    49
    ssh_configured = ENV['CVS_RSH']    
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    50
    ssh_in_path = which('ssh') ? true : false
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    51
    plink_in_path = which('plink') ? true : false
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    52
    if Gem.win_platform? then                        
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    53
      # If CVS_RSH is not set or is set to plink.exe, try to change to 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    54
      # MSYS2 ssh.exe as it gives better performance on (fast) LANs.      
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    55
      if /^.*[pP]link(\.exe)?"?\s*(-ssh)?\s*(-2)?$/ =~ ssh_configured then            
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    56
        if ssh_in_path then
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    57
          ssh = 'ssh'
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    58
        else 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    59
          if (File.exist? "c:\\msys64\\usr\\bin\\ssh.exe") then              
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    60
            ssh = "\"c:\\msys64\\usr\\bin\\ssh.exe\""
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    61
          end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    62
        end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    63
        # Sigh, we should not tamper with SSH configuration wildly. User may have
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    64
        # her ssh and mercurial properly configured to use `plink.exe` and `pageant`.
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    65
        # If we just start using `ssh.exe` clone/pull might not work beause
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    66
        # `ssh.exe` cannot talk to `pageant`. So, if we don't find OpenSSH's 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    67
        # style of agent, don't use `ssh.exe` event if available.
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    68
        if ssh then
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    69
          if ENV['SSH_AUTH_SOCK'] then
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    70
            # Good, OpenSSH agent running but still, be nice and  tell the 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    71
            # user SSH configuration has been tampered wirh. 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    72
            info("Setting CVS_RSH=\"#{ssh}\" for faster transfers")
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    73
          else 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    74
            # No agent, no fun. Be nice and give user a hit
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    75
            warn("Not using CVS_RSH=\"#{ssh}\" option because SSH agent is not running")
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    76
            warn("For faster CVS checkout over LAN, consider using ssh-agent or ssh-pageant (if you want to use PuTTY's pageant)")
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    77
            ssh = nil
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    78
          end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    79
        end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    80
      end       
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    81
    else                 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    82
      if not ssh_configured then
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    83
        ssh = "ssh"
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    84
      end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    85
    end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    86
    if ssh then 
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    87
      ENV['CVS_RSH'] = ssh
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    88
    end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    89
    cvs_rsh_set = true
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    90
  end
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    91
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    92
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    93
  public
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
    94
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
  class CheckoutException < Exception
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
  end # class CheckoutException
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
  def self._check_type(type)
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   100
    if (type != :cvs and type != :svn and type != :git and type != :hg)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
      raise CheckoutException.new("Unknown version control system type (#{type})")
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   105
  def self.update(repository, directory, **kwargs)
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   106
    type = repository.type
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   107
    url = repository.canonical
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   108
    self._check_type(type)    
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   109
    root = kwargs[:root] || BUILD_DIR
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   110
    branch = kwargs[:branch]
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   111
    if branch == nil
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   112
      if type == :svn
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   113
        branch = 'trunk'
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   114
      elsif type == :hg
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   115
        branch = 'default'
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   116
      end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    end
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   118
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    wc = root / directory
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    if (! File.exist? wc)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   121
      self.checkout(repository, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
      return
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    case type
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   125
      when :svn    then _update_svn(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   126
      when :cvs    then _update_cvs(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   127
      when :git    then _update_git(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   128
      when :hg     then _update_hg(repository, directory, branch, root, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   132
  def self._update_hg(repository, directory, branch, root, **kwargs)
72
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   133
    
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   134
    wc = root / directory
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   135
    separator = kwargs[:separator] || '.'
72
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   136
    revision =  kwargs[:revision] 
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   137
    if directory != nil then      
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   138
      url = "#{repository.canonical}/#{directory.gsub('/', separator)}"
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    end
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   140
    hg = HG::Repository.new(wc)
66
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   141
    begin
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   142
      paths = hg.paths
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   143
      if repository.staging then
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   144
        if not paths.has_key? 'staging'           
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   145
          paths['staging'] = "#{repository.staging}/#{directory.gsub('/', separator)}"
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   146
          hg.paths = paths
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   147
        end
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   148
        hg.pull('staging')
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   149
      end
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   150
      if repository.upstream then        
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   151
        if not paths.has_key? 'upstream'           
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   152
          paths['upstream'] = "#{repository.upstream}/#{directory.gsub('/', separator)}"
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   153
          hg.paths = paths
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   154
        end
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   155
        hg.pull('upstream')
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   156
      end
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   157
      if not paths.has_key? 'canonical'
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   158
        paths['canonical'] = "#{repository.canonical}/#{directory.gsub('/', separator)}"
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   159
        hg.paths = paths
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   160
      end
102
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   161
      hg.pull('canonical')
72
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   162
      # If revision is not specified, then look for an active bookmark
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   163
      # and update to it. If no bookmark is active, then look for bookmark
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   164
      # `master`. If it exist, then update to `master`. If it 
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   165
      # does not, then update to tip or throw an error.
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   166
      # The error is thrown if there's no bookmark `master` and
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   167
      # branch has multiple heads since it's not clear which 
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   168
      # head rev to use.
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   169
      if not revision then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   170
        revision = hg.bookmark()
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   171
        if not revision then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   172
          bookmarks = hg.bookmarks(branch)
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   173
          if (bookmarks.has_key? 'master') then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   174
            revision = 'master'
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   175
          else
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   176
            if (hg.heads(branch).size > 1) then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   177
              raise CheckoutException.new("HG: Cannot checkout #{directory}: branch #{branch} has multiple heads but no bookmark named 'master'!")
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   178
            end            
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   179
          end          
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   180
        end
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   181
      end
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   182
      hg.update(revision || branch)
66
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   183
    rescue Exception => ex 
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   184
      raise CheckoutException.new("HG: Cannot update #{wc}: #{ex.message}")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   189
  def self._update_svn(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   190
    wc = root / directory
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   191
    if not sh %W{svn --non-interactive --trust-server-cert update}, cwd: wc
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   192
      raise CheckoutException.new("SVN: Cannot update #{wc}")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    end
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   194
  end
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   195
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   196
  def self._update_cvs(repository, directory, branch, root, **kwargs)
85
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
   197
    ensure_cvs_rsh_set()
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   198
    wc = root / directory
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   199
    if File.directory? wc
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   200
      if not sh %W{cvs -z 9 update -A -d}, cwd: wc
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   201
        raise CheckoutException.new("CVS: Cannot update #{wc}")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
      end
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   203
    else
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   204
      if not sh %W{cvs -z 9 update -A #{File.basename(wc)}}, cwd: File.dirname(wc)
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   205
        raise CheckoutException.new("CVS: Cannot update #{wc}")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   210
  def self.checkout(repository, directory, **kwargs)    
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   211
    type = repository.type
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   212
    url = repository.canonical
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
    self._check_type(type)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   214
    
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   215
    root = kwargs[:root] || BUILD_DIR
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   216
    branch = kwargs[:branch]
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    if branch == nil
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
      if type == :svn
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
        branch = 'trunk'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
      elsif type == :hg
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
        branch = 'default'
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    wc = root / directory
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
    if (File.exist? wc)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   227
      self.update(repository, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
      return
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
    if (not File.exists? File.dirname(wc))
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
      begin
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
        FileUtils.mkdir_p(File.dirname(wc))
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
      rescue => ex
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
        raise CheckoutException.new("Cannot create directory for working copy (#{ex})")
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
      end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
    case type
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   239
      when :svn    then _checkout_svn(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   240
      when :cvs    then _checkout_cvs(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   241
      when :git    then _checkout_git(repository, directory, branch, root, **kwargs)
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   242
      when :hg     then _checkout_hg(repository, directory, branch, root, **kwargs)      
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
85
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
   247
  def self._checkout_svn(repository, directory, branch, root, **kwargs)    
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   248
    url = "#{repository.canonical}/#{directory}/#{branch}"
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   249
    if not sh %W{svn --non-interactive --trust-server-cert co #{url} #{directory}}, cwd: root
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   250
      raise CheckoutException.new("SVN: Cannot checkout from #{url}")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   254
  def self._checkout_hg(repository, directory, branch, root, **kwargs)    
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   255
    separator = kwargs[:separator] || '.'
72
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   256
    revision =  kwargs[:revision] 
75
9b57c88b2ab3 Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   257
    
102
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   258
    paths = {}
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   259
    if repository.canonical then
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   260
      paths['canonical'] = "#{repository.canonical}/#{directory.gsub('/', separator)}"
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   261
    else
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   262
      raise Exception.new("Repository named #{repository.name} does not define mandatory canonical repository URL")
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   263
    end
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   264
    if repository.upstream then
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   265
      paths['upstream'] = "#{repository.upstream}/#{directory.gsub('/', separator)}"
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   266
    end
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   267
    if repository.staging then
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   268
      paths['staging'] = "#{repository.staging}/#{directory.gsub('/', separator)}"
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   269
    end
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   270
66
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   271
    begin
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   272
      if repository.staging then
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   273
        paths['default'] = paths['staging']
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   274
        hg = HG::Repository.clone(paths['staging'], root / directory, noupdate: true)        
75
9b57c88b2ab3 Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   275
        hg.paths = paths
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   276
        hg.pull('upstream') if paths['upstream'] 
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   277
        hg.pull('canonical')
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   278
      elsif repository.upstream then
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   279
        paths['default'] = paths['upstream']
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   280
        hg = HG::Repository.clone(paths['upstream'], root / directory, noupdate: true)        
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   281
        hg.paths = paths
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   282
        hg.pull('canonical')
75
9b57c88b2ab3 Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   283
      else
102
fc572bd895f2 Cleanup: treat stx:stc & stx:librun as normal packages
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 88
diff changeset
   284
        paths['default'] = paths['canonical']
88
112075e99cef Support for 'upstream' repositories refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   285
        hg = HG::Repository.clone(paths['canonical'], root / directory, noupdate: true)
75
9b57c88b2ab3 Use `hg clone` instead of `hg init` followed by `hg pull` to checkout a Mercurial repository
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   286
        hg.paths = paths
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   287
      end
72
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   288
      # If revision is not specified, then look for bookmark
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   289
      # `master`. If it exist, then check out `master`. If it 
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   290
      # does not, then checkout tip or throw an error.
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   291
      # The error is thrown if there's no bookmark `master` and
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   292
      # branch has multiple heads since it's not clear which 
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   293
      # head rev to use.
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   294
      if not revision then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   295
        bookmarks = hg.bookmarks(branch)
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   296
        if (bookmarks.has_key? 'master') then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   297
          revision = 'master'
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   298
        else
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   299
          if (hg.heads(branch).size > 1) then
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   300
            raise CheckoutException.new("HG: Cannot checkout #{directory}: branch #{branch} has multiple heads but no bookmark named 'master'!")
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   301
          end            
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   302
        end          
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   303
      end
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   304
3e832d54a4af Added support for checking out a particular revision
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   305
      hg.update(revision || branch)
66
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   306
    #rescue Exception => e
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   307
    #  raise CheckoutException.new("HG: Cannot clone from #{url}: #{e.message}")
8d2d5dfe94d0 Refactored SCM support to use `hglib.rb` for performing Mercurial related tasks
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 62
diff changeset
   308
    end
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
  end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   311
  def self._checkout_cvs(repository, directory, branch, root, **kwargs)    
85
6d918f722075 Do not tamper with SSH configuration if SSH agent is not running.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
   312
    ensure_cvs_rsh_set()
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   313
    if not sh %W{cvs -z 9 -d #{repository.canonical} co #{directory}}, cwd: root
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   314
      raise CheckoutException.new("CVS: Cannot checkout #{directory}from #{repository.url}")
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
    end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
  end
60
57c963e85a00 Cleanup: Renamed `vcs.rb` & `Rake::StX::VCS` to `scm.rb` and `Rake::StX::SCM`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 59
diff changeset
   317
end # module Rake::Stx::SCM
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   319
def checkout(repo_name, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
  # repository should be symbolic name
59
9099e2455d9c Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 58
diff changeset
   321
  repo = Rake::Stx::Configuration::Repository::find(repo_name)
9099e2455d9c Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 58
diff changeset
   322
  if not repo then
9099e2455d9c Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 58
diff changeset
   323
      error("checkout(): No repository found (#{repo_name})")
62
de0e8016c2d5 Cleanup: Cleaned up command executing code in `rakelib\scm.rb`.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 61
diff changeset
   324
  end  
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   325
  kwargs[:separator] = repo.separator
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   326
  Rake::Stx::SCM.checkout(repo, directory, **kwargs)  
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   329
def update(repo_name, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
  # repository should be symbolic name
59
9099e2455d9c Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 58
diff changeset
   331
  repo = Rake::Stx::Configuration::Repository::find(repo_name)
9099e2455d9c Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 58
diff changeset
   332
  if not repo then  
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    error("update(): No repository found (#{repo_name})")
59
9099e2455d9c Added support for multiple different repository sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 58
diff changeset
   334
  end  
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   335
  kwargs[:separator] = repo.separator
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   336
  Rake::Stx::SCM.update(repo, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   339
def cvs(url, directory, **kwargs)
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   340
  repo = Rake::Stx::Configuration::Repository.new(:type => :cvs, :url => url)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   341
  Rake::Stx::SCM.checkout(repo, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   344
def svn(url, directory, **kwargs)
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   345
  repo = Rake::Stx::Configuration::Repository.new(:type => :svn, :url => url)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   346
  Rake::Stx::SCM.checkout(repo, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   349
def hg(url, directory, **kwargs)
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   350
  repo = Rake::Stx::Configuration::Repository.new(:type => :hg, :url => url)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   351
  Rake::Stx::SCM.checkout(repo, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   354
def git(url, directory, **kwargs)
67
75b6eb7b781c Added support for canonical, upstream and staging repositores.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 66
diff changeset
   355
  repo = Rake::Stx::Configuration::Repository.new(:type => :git, :url => url)
71
68c8cccbdec5 Cleanup in `scm.rb`: Unified API of `checkout` and `update` functions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   356
  Rake::Stx::SCM.checkout(repo, directory, **kwargs)
0
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
end
f46260ba26b1 Initial shot of "new" rake-based builder
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358