module WhatsnewSeed
Constants
- DEFAULT_LIMIT
- EXCLUDED_PLUGINS
Public Instance Methods
Source
# File lib/whatsnew_seed.rb, line 54 def default_plugins_dir File.expand_path("../plugins", __dir__) end
Source
# File lib/whatsnew_seed.rb, line 12 def generate_descriptions(plugins_dir:, limit: DEFAULT_LIMIT, now: Time.now) files = Dir[File.join(plugins_dir.to_s, "*.rb")] .reject { |path| EXCLUDED_PLUGINS.include?(File.basename(path, ".rb")) } .sort_by { |path| File.mtime(path) } .reverse .first(limit) files.filter_map do |path| plugin = File.basename(path, ".rb") content = File.read(path) summary = HelpParser.file_description_for(content) summary = summary.split(/\s*—\s*responders:/i, 2).first.to_s.strip next if summary.empty? { plugin: plugin, kind: "new", summary: summary, recorded_at: RabbotDb.iso_time(File.mtime(path).utc) } rescue StandardError nil end end
Source
# File lib/whatsnew_seed.rb, line 37 def seed!(plugins_dir: default_plugins_dir, limit: DEFAULT_LIMIT, store: RabbotDb) return { seeded: false, count: 0 } unless WhatsnewStore.load_entries(store: store).empty? rows = generate_descriptions(plugins_dir: plugins_dir, limit: limit) rows.reverse_each do |row| WhatsnewStore.add_entry( plugin: row[:plugin], kind: row[:kind], summary: row[:summary], recorded_at: row[:recorded_at], store: store ) end WhatsnewStore.mark_seeded!(store: store) { seeded: true, count: rows.length } end