#!/usr/bin/env ruby # Sync data for apps from GitHub require "bundler/setup" require "open-uri" require "octokit" client = Octokit::Client.new(:access_token => ENV["GH_TOKEN"]) require "jekyll" config = Jekyll.configuration("source" => File.expand_path("../", File.dirname(__FILE__))) site = Jekyll::Site.new(config) site.read site.collections["apps"].docs.each do |app| puts "Syncing #{app['repository']}" repo = client.repository(app['repository']) content = File.read(app.path) content.sub!(/^stars: \d+$/, "stars: #{repo[:stargazers_count]}") content.sub!(/^updated:.*$/, "updated: #{repo[:pushed_at]}") if app['host'] stats = JSON.parse(URI(app['host'] + '/stats').open.read) content.sub!(/^installations: \d+$/, "installations: #{stats['installations']}") yaml = YAML.dump(stats['popular'].map { |org| org['login'] }).sub('---', '') content.sub!(/^organizations:\n(- .*\n)*/, "organizations:#{yaml}") end File.write(app.path, content) end