Class: Tagrity::TagGenerator
- Inherits:
-
Object
- Object
- Tagrity::TagGenerator
show all
- Defined in:
- lib/tagrity/tag_generator.rb
Defined Under Namespace
Classes: ExecutableNonExist
Instance Method Summary
collapse
Constructor Details
#initialize(config, logger) ⇒ TagGenerator
Returns a new instance of TagGenerator.
10
11
12
13
|
# File 'lib/tagrity/tag_generator.rb', line 10
def initialize(config, logger)
@config = config
@logger = logger
end
|
Instance Method Details
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/tagrity/tag_generator.rb', line 60
def delete_files_tags(files)
return if files.empty? || !File.readable?(tagf)
Tempfile.create do |tmpf|
File.open(tagf) do |f|
f.each_line do |line|
unless files.any? { |fname| line.include?("\t#{fname}\t") }
tmpf.write line
end
end
end
tmpf.rewind
FileUtils.mv(tmpf.path, tagf, force: true)
@logger.info("Deleted tags for #{files} from #{tagf}")
end
end
|
#generate(files, check_git) ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/tagrity/tag_generator.rb', line 39
def generate(files, check_git)
return if files.empty?
if not Helper.git_dir?
check_git = false
end
files
.select { |file| generate_tags?(file, check_git) }
.group_by { |file| @config.command_for_extension(file.split('.').last) }
.each do |cmd, fnames|
Tempfile.create do |tmpf|
IO::write(tmpf.path, fnames.join("\n"))
system(cmd, '-f', tagf, '--append', '-L', tmpf.path, out: File::NULL, err: File::NULL)
if $?.exitstatus == 0
@logger.info("{#{cmd}} generated tags for #{fnames} into #{tagf}")
else
@logger.error("{#{cmd}} failed (#{$?.exitstatus}) to generate tags for #{fnames} into #{tagf}")
end
end
end
end
|
#generate_all ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/tagrity/tag_generator.rb', line 15
def generate_all
files = []
if Helper.git_dir?
untracked_files = `git ls-files --others --exclude-standard 2> /dev/null`.split("\n")
if $?.exitstatus != 0
@logger.error("Failed to get a listing of all untracked files under pwd for use with --fresh.")
untracked_files = []
end
tracked_files = `git ls-files 2> /dev/null`.split("\n")
if $?.exitstatus != 0
@logger.error("Failed to get a listing of all tracked files under pwd for use with --fresh.")
tracked_files = []
end
files = tracked_files.concat untracked_files
else
files = `find * -type f 2> /dev/null`.split("\n")
end
if not files.empty? and File.exists?(tagf)
File.delete(tagf)
end
generate(files, false)
end
|