autobuild 1.7.8 → 1.7.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,6 +14,7 @@ lib/autobuild/import/archive.rb
14
14
  lib/autobuild/import/cvs.rb
15
15
  lib/autobuild/import/darcs.rb
16
16
  lib/autobuild/import/git.rb
17
+ lib/autobuild/import/hg.rb
17
18
  lib/autobuild/import/svn.rb
18
19
  lib/autobuild/import/tar.rb
19
20
  lib/autobuild/importer.rb
@@ -13,6 +13,7 @@ require 'autobuild/import/cvs'
13
13
  require 'autobuild/import/darcs'
14
14
  require 'autobuild/importer'
15
15
  require 'autobuild/import/git'
16
+ require 'autobuild/import/hg'
16
17
  require 'autobuild/import/svn'
17
18
  require 'autobuild/import/archive'
18
19
  require 'autobuild/import/tar'
@@ -206,11 +206,27 @@ module Autobuild
206
206
  env_update_var(name)
207
207
  end
208
208
 
209
- def self.env_update_var(name)
209
+ def self.env_value(name)
210
210
  if !environment[name] && !inherited_environment[name] && !SYSTEM_ENV[name]
211
- ENV.delete(name)
211
+ nil
212
+ else
213
+ value = []
214
+ [environment[name], inherited_environment[name], SYSTEM_ENV[name]].each do |paths|
215
+ (paths || []).each do |p|
216
+ if !value.include?(p)
217
+ value << p
218
+ end
219
+ end
220
+ end
221
+ value
222
+ end
223
+ end
224
+
225
+ def self.env_update_var(name)
226
+ if value = env_value(name)
227
+ ENV[name] = value.join(ENV_LIST_SEPARATOR)
212
228
  else
213
- ENV[name] = ((environment[name] || []) + (inherited_environment[name] || []) + (SYSTEM_ENV[name] || [])).join(ENV_LIST_SEPARATOR)
229
+ ENV.delete(name)
214
230
  end
215
231
  end
216
232
 
@@ -274,8 +290,10 @@ module Autobuild
274
290
  end
275
291
 
276
292
  variables = []
277
- Autobuild.environment.each do |name, value|
293
+ Autobuild.environment.each do |name, _|
278
294
  variables << name
295
+ value = env_value(name)
296
+
279
297
  if value
280
298
  shell_line = SHELL_SET_COMMAND % [name, value.join(ENV_LIST_SEPARATOR)]
281
299
  else
@@ -0,0 +1,79 @@
1
+ require 'fileutils'
2
+ require 'autobuild/subcommand'
3
+ require 'autobuild/importer'
4
+ require 'utilrb/kernel/options'
5
+
6
+ module Autobuild
7
+ class Hg < Importer
8
+ # Creates an importer which tracks the given repository
9
+ # and (optionally) a branch.
10
+ #
11
+ # This importer uses the 'hg' tool to perform the
12
+ # import. It defaults to 'hg' and can be configured by
13
+ # doing
14
+ # Autobuild.programs['hg'] = 'my_git_tool'
15
+ #
16
+ # @param [String] repository the repository URL
17
+ # @option options [String] :branch (default) the branch to track
18
+ def initialize(repository, options = {})
19
+ @repository = repository.to_str
20
+
21
+ hgopts, common = Kernel.filter_options options, :branch => 'default'
22
+ @branch = hgopts[:branch]
23
+ super(common)
24
+ end
25
+
26
+ # Returns a string that identifies the remote repository uniquely
27
+ #
28
+ # This is meant for display purposes
29
+ def repository_id
30
+ "hg:#{repository}"
31
+ end
32
+
33
+ # The remote repository URL.
34
+ attr_accessor :repository
35
+
36
+ # The tip this importer is tracking
37
+ attr_accessor :branch
38
+
39
+ # Raises ConfigException if the current directory is not a hg
40
+ # repository
41
+ def validate_importdir(package)
42
+ if !File.directory?(File.join(package.importdir, '.hg'))
43
+ raise ConfigException.new(package, 'import'), "while importing #{package.name}, #{package.importdir} is not a hg repository"
44
+ end
45
+ end
46
+
47
+ def update(package)
48
+ validate_importdir(package)
49
+ Dir.chdir(package.importdir) do
50
+ Subprocess.run(package, :import, Autobuild.tool('hg'), 'pull', repository)
51
+ Subprocess.run(package, :import, Autobuild.tool('hg'), 'update', branch)
52
+ end
53
+ end
54
+
55
+ def checkout(package)
56
+ base_dir = File.expand_path('..', package.importdir)
57
+ if !File.directory?(base_dir)
58
+ FileUtils.mkdir_p base_dir
59
+ end
60
+
61
+ Subprocess.run(package, :import,
62
+ Autobuild.tool('hg'), 'clone', '-u', branch, repository, package.importdir)
63
+ end
64
+
65
+ # Changes the repository this importer is pointing to
66
+ def relocate(repository)
67
+ @repository = repository
68
+ end
69
+ end
70
+
71
+ # Creates a hg importer which gets the source for the given repository and branch
72
+ # URL +source+.
73
+ #
74
+ # @param (see Hg#initialize)
75
+ def self.hg(repository, options = {})
76
+ Hg.new(repository, options)
77
+ end
78
+ end
79
+
@@ -1,5 +1,5 @@
1
1
  module Autobuild
2
- VERSION = "1.7.8" unless defined? Autobuild::VERSION
2
+ VERSION = "1.7.9" unless defined? Autobuild::VERSION
3
3
  end
4
4
 
5
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autobuild
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.8
4
+ version: 1.7.9
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: 2013-10-22 00:00:00.000000000 Z
12
+ date: 2013-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -120,6 +120,7 @@ files:
120
120
  - lib/autobuild/import/cvs.rb
121
121
  - lib/autobuild/import/darcs.rb
122
122
  - lib/autobuild/import/git.rb
123
+ - lib/autobuild/import/hg.rb
123
124
  - lib/autobuild/import/svn.rb
124
125
  - lib/autobuild/import/tar.rb
125
126
  - lib/autobuild/importer.rb
@@ -177,8 +178,8 @@ signing_key:
177
178
  specification_version: 3
178
179
  summary: Library to handle build systems and import mechanisms
179
180
  test_files:
180
- - test/test_import_cvs.rb
181
- - test/test_reporting.rb
181
+ - test/test_import_tar.rb
182
182
  - test/test_subcommand.rb
183
+ - test/test_reporting.rb
183
184
  - test/test_import_svn.rb
184
- - test/test_import_tar.rb
185
+ - test/test_import_cvs.rb