Class: GeneratorTimeChecker

Inherits:
Object
  • Object
show all
Defined in:
GeneratorTimeChecker.rb

Overview

TODO check generate api

Constant Summary

@@latest_update_time =
nil
@@app_path =
nil
@@is_run_always =
false
@@cached_time =
nil
@@do_cache =
false

Instance Method Summary (collapse)

Instance Method Details

- (Object) check(xmlpath)



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'GeneratorTimeChecker.rb', line 84

def check(xmlpath)
  #@@do_cache = false
  generate_xml = false
  
  extpath  = File.dirname(xmlpath)
  xml_time = File.mtime(File.new(xmlpath))
  
  #puts "xmlpath: #{xmlpath}; xml_time : #{xml_time}"
  # for generate in first time
  if @@is_run_always
    @@do_cache = true
    generate_xml = true
  elsif !(File.exist? File.join(extpath, "shared", "generated"))              ||
     !(File.exist? File.join(extpath, "platform", "android", "generated")) ||
     !(File.exist? File.join(extpath, "platform", "iphone", "generated"))  ||
#       !(File.exist? File.join(extpath, "platform", "osx", "generated"))     ||
#       !(File.exist? File.join(extpath, "platform", "wm", "generated"))      ||
#       !(File.exist? File.join(extpath, "platform", "wp8", "generated"))     ||
     !(File.exist? File.join(extpath, "..", "public", "api", "generated"))
    @@do_cache = true
    generate_xml = true
  elsif @@cached_time < xml_time
    puts "!!!"
    @@do_cache = true
    generate_xml = true
  end 
  
  generate_xml
end

- (Object) find_latest_modified_date(path)



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'GeneratorTimeChecker.rb', line 13

def find_latest_modified_date(path)
  #puts 'find_latest_modified_date.path=' + path.to_s
  
  latest_mod_time = nil      
  templates_dir   = Dir.new(path)
  
  templates_dir.each { |item|       
    if item == '.' || item == '..'
      next        
    end

    full_path = File.join(path, item)
    mod_time  = nil
    
    if File.directory?(full_path)
      mod_time = find_latest_modified_date(full_path)
      
      if mod_time.nil?
        next
      end            
    else
      mod_time = File.mtime(full_path)
    end
    
    if latest_mod_time.nil?
      latest_mod_time = mod_time
    else
      if latest_mod_time < mod_time
        latest_mod_time = mod_time
      end
    end
  }
  
  return latest_mod_time
end

- (Object) init(startdir, app_path)



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
77
78
79
80
81
82
# File 'GeneratorTimeChecker.rb', line 49

def init(startdir, app_path)
  @@app_path       = app_path
  templates_path   = File.join(startdir, "res", "generators", "templates", "api")
  rhogen_path      = File.join(startdir, "res", "generators", "rhogen.rb")
  
  api_time         = find_latest_modified_date(templates_path)
  rhogen_time      = File.mtime(rhogen_path)
  last_update_time = nil
  
  last_change_data = find_latest_modified_date(templates_path)
  time_cache_path  = File.join(@@app_path, "bin", "tmp", "rhogen.time")
   
  if last_change_data.nil?
    @@is_run_always = true
  end
  
  if File.exist? time_cache_path
    time_cache_file = File.new(time_cache_path)
    @@cached_time   = Time.parse(time_cache_file.gets)
    time_cache_file.close
    
    @@latest_update_time = rhogen_time >= api_time ? rhogen_time : api_time    
    puts 'latest_update_time=' + @@latest_update_time.to_s
    puts "cached_time : #{@@cached_time}"
          
    if @@cached_time < @@latest_update_time
      @@is_run_always = true
    end       
  else
    @@is_run_always = true
  end
  
  @@do_cache = false
end

- (Object) update



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'GeneratorTimeChecker.rb', line 114

def update()
  if @@do_cache == false
    #puts "@@do_cache is FALSE"
    return
  end
  
  time_cache_path  = File.join(@@app_path, "bin", "tmp", "rhogen.time")

  FileUtils.mkdir(File.join(@@app_path, "bin") ) unless File.exist? File.join(@@app_path, "bin")
  FileUtils.mkdir(File.join(@@app_path, "bin", "tmp") ) unless File.exist? File.join(@@app_path, "bin", "tmp")
  
  time_cache_file = File.new(time_cache_path, "w+")
  time_cache_file.puts Time.new
  time_cache_file.close()
end