mirror of
https://github.com/neocities/neocities.git
synced 2025-04-28 19:22:32 +02:00
Add .feedignore support to filter site change files
This commit is contained in:
parent
514836fd4f
commit
89865a79cf
2 changed files with 26 additions and 1 deletions
|
@ -1903,6 +1903,27 @@ class Site < Sequel::Model
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def feedignore_patterns
|
||||||
|
return @feedignore_patterns if defined?(@feedignore_patterns)
|
||||||
|
|
||||||
|
feedignore_path = current_files_path('.feedignore')
|
||||||
|
if File.exist?(feedignore_path)
|
||||||
|
@feedignore_patterns = File.readlines(feedignore_path).map(&:strip).reject { |line| line.empty? || line.start_with?('#') }
|
||||||
|
else
|
||||||
|
@feedignore_patterns = []
|
||||||
|
end
|
||||||
|
@feedignore_patterns
|
||||||
|
end
|
||||||
|
|
||||||
|
def should_ignore_from_feed?(path)
|
||||||
|
return false if feedignore_patterns.empty?
|
||||||
|
feedignore_patterns.any? do |pattern|
|
||||||
|
# Convert glob pattern to regex
|
||||||
|
regex = Regexp.new("^#{pattern.gsub('*', '.*').gsub('?', '.')}$")
|
||||||
|
path.match?(regex)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def store_file(path, uploaded, opts={})
|
def store_file(path, uploaded, opts={})
|
||||||
|
|
|
@ -7,10 +7,14 @@ class SiteChange < Sequel::Model
|
||||||
one_to_many :site_change_files
|
one_to_many :site_change_files
|
||||||
|
|
||||||
def site_change_filenames(limit=6)
|
def site_change_filenames(limit=6)
|
||||||
site_change_files_dataset.select(:filename).limit(limit).order(:created_at.desc).all.collect {|f| f.filename}.sort_by {|f| f.match('html') ? 0 : 1}
|
filenames = site_change_files_dataset.select(:filename).limit(limit).order(:created_at.desc).all.collect {|f| f.filename}
|
||||||
|
filenames = filenames.reject { |f| site.should_ignore_from_feed?(f) }
|
||||||
|
filenames.sort_by {|f| f.match('html') ? 0 : 1}
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.record(site, filename)
|
def self.record(site, filename)
|
||||||
|
return if site.should_ignore_from_feed?(filename)
|
||||||
|
|
||||||
site_change = filter(site_id: site.id).order(:created_at.desc).first
|
site_change = filter(site_id: site.id).order(:created_at.desc).first
|
||||||
|
|
||||||
if site_change.nil? || site_change.created_at+NEW_CHANGE_TIMEOUT < Time.now
|
if site_change.nil? || site_change.created_at+NEW_CHANGE_TIMEOUT < Time.now
|
||||||
|
|
Loading…
Add table
Reference in a new issue