A curated list of libraries & SDKs for the Bluesky API and AT Protocol
at master 26 lines 598 B view raw
1require 'yaml' 2 3class Project 4 def self.load_all(language = nil) 5 yamls = Dir[File.join(__dir__, '..', '_data', 'projects', language ? "#{language}.yml" : '*.yml')] 6 yamls.map { |y| 7 lang = File.basename(y).gsub(/\.yml$/, '') 8 YAML.load(File.read(y))['repos'].map { |r| Project.new(r, lang) } 9 }.flatten 10 end 11 12 attr_reader :language 13 14 def initialize(yaml, language) 15 @language = language.to_sym 16 @yaml = yaml 17 end 18 19 def urls 20 @yaml['url'] ? [@yaml['url']] : @yaml['urls'] 21 end 22 23 def name 24 @yaml['name'] || urls.first.gsub(/\/$/, '').split('/').last 25 end 26end