A curated list of libraries & SDKs for the Bluesky API and AT Protocol
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