class BibSync::Actions::SynchronizeFiles
Constants
- FileTypes
Public Class Methods
new(options)
click to toggle source
# File lib/bibsync/actions/synchronize_files.rb, line 9 def initialize(options) raise 'Option --bib is required' unless @bib = options[:bib] raise 'Option --dir is required' unless @dir = options[:dir] @dir = File.join(@dir, '**') unless options[:non_recursive] end
Public Instance Methods
run()
click to toggle source
# File lib/bibsync/actions/synchronize_files.rb, line 15 def run notice 'Synchronize with files' files = {} Dir[File.join(@dir, "*.{#{FileTypes.join(',')}}")].sort.each do |file| name = File.basename(file) if name =~ /\A[\w\.\-]+\Z/ key = name_without_ext(name) raise "Duplicate file #{name}" if files[key] files[key] = file else warning('File with invalid name', key: name) end end files.each do |key, file| unless entry = @bib[key] info('New file', key: key) entry = Entry.new(key: key) @bib << entry end entry.type ||= :ARTICLE entry.file = file end end