Module: PrependCode::Application

Defined in:
lib/prepend_code.rb

Class Method Summary collapse

Class Method Details

.find_file_paths(dir_name, ext) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/prepend_code.rb', line 31

def self.find_file_paths(dir_name, ext)
  ret = []
  dirs = Dir.glob(dir_name)
  dirs.each {|d|
    next unless FileTest.directory?(d)
    
    sub_dirs = Dir.glob("#{d}/**")
    sub_dirs.each {|d|
      if FileTest.directory?(d)
        ret += find_file_paths(d, ext)
      elsif FileTest.file?(d)
        if d =~ /^*#{ext}$/
          ret << d
        end
      end
    }
  }
  return ret
end

.prepend_on_file!(file_path, code) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/prepend_code.rb', line 51

def self.prepend_on_file!(file_path, code)
  f = File.open(file_path, "r+")
  lines = f.readlines
  f.close
  
  return false if lines && lines[0] == code + "\n"
  lines = [sprintf('%s%s', code, "\n")] + lines
  output = File.new(file_path, "w")
  lines.each { |line| output.write line }
  output.close
  return true
end

.run!(*arguments) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/prepend_code.rb', line 9

def self.run!(*arguments)
  dir_base = './app'
  ext = '.rb'
  code = '# coding: utf-8'
  opts = OptionParser.new
  opts.on("-d target directory. default: ./app."){|v| dir_base = v }
  opts.on("-e target file extension. default: .rb"){|v| ext = v }
  opts.on("-t prepend context. default: # coding: utf-8"){|v| code = v }
  opts.parse!(arguments)

  file_paths = find_file_paths(dir_base, ext)

  count = 0
  file_paths.each do |file_path|
    result = prepend_on_file!(file_path, code)
    count += 1 if result
  end
  puts sprintf('%s files has been matched.', file_paths.count)
  puts sprintf('%s files has been saved.', count)
  return 1
end