Module: DockerSyncConfig

Included in:
UpdateChecker
Defined in:
lib/config.rb

Overview

this has basically completely reused from Thor::runner.rb - thank you!

Instance Method Summary collapse

Instance Method Details

#escape_globs(path) ⇒ Object



85
86
87
# File 'lib/config.rb', line 85

def escape_globs(path)
  path.to_s.gsub(/[*?{}\[\]]/, '\\\\\\&')
end

#find_configObject



34
35
36
37
38
39
40
41
# File 'lib/config.rb', line 34

def find_config
  files = find_config_file
  if files.length > 0
    return files.pop
  else
    raise('No docker-sync.yml configuration found in your path ( traversing up ) Did you define it for your project?')
  end
end

#find_config_file(skip_lookup = false) ⇒ Object

this has been ruthlessly stolen from Thor/runner.rb - please do not hunt me for that :)



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/config.rb', line 44

def find_config_file(skip_lookup = false)
  # Finds docker-sync.yml by traversing from your current directory down to the root
  # directory of your system. If at any time we find a docker-sync.yml file, we stop.
  #
  #
  # ==== Example
  #
  # If we start at /Users/wycats/dev/thor ...
  #
  # 1. /Users/wycats/dev/thor
  # 2. /Users/wycats/dev
  # 3. /Users/wycats <-- we find a docker-sync.yml here, so we stop
  #
  # Suppose we start at c:\Documents and Settings\james\dev\docker-sync ...
  #
  # 1. c:\Documents and Settings\james\dev\docker-sync.yml
  # 2. c:\Documents and Settings\james\dev
  # 3. c:\Documents and Settings\james
  # 4. c:\Documents and Settings
  # 5. c:\ <-- no docker-sync.yml found!
  #
  docker_sync_files = []

  unless skip_lookup
    Pathname.pwd.ascend do |path|
      docker_sync_files = globs_for_config(path).map { |g| Dir[g] }.flatten
      break unless docker_sync_files.empty?
    end
  end

  files = []
  files += docker_sync_files
end

#global_configObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/config.rb', line 16

def global_config
  global_config_path = global_config_location
  date = DateTime.new(2001, 1, 1) #paste
  defaults = {'update_check'=>true, 'update_last_check' => date.iso8601(9), 'update_enforce' => true}
  if File.exist?(global_config_path)
    config =  YAML.load_file(global_config_path)
    config = defaults.merge(config)
    return config
  else
    return defaults
  end
end

#global_config_locationObject



7
8
9
# File 'lib/config.rb', line 7

def global_config_location
  return File.expand_path('~/.docker-sync-global.yml')
end

#global_config_save(config) ⇒ Object



29
30
31
32
# File 'lib/config.rb', line 29

def global_config_save(config)
  global_config_path = global_config_location
  File.open(global_config_path, 'w') {|f| f.write config.to_yaml }
end

#globs_for_config(path) ⇒ Object

Where to look for docker-sync.yml files.



80
81
82
83
# File 'lib/config.rb', line 80

def globs_for_config(path)
  path = escape_globs(path)
  ["#{path}/docker-sync.yml"]
end

#is_first_runObject



11
12
13
14
# File 'lib/config.rb', line 11

def is_first_run
  global_config_path = global_config_location
  return !File.exist?(global_config_path)
end