Compare commits
1 commit
master
...
import_git
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9c03ba6c31 |
1 changed files with 57 additions and 0 deletions
57
lib/tasks/repositories.rake
Normal file
57
lib/tasks/repositories.rake
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
require 'net/https'
|
||||||
|
|
||||||
|
namespace :repositories do
|
||||||
|
def get_url_content(url, headers = {})
|
||||||
|
uri = URI.parse(url)
|
||||||
|
req = Net::HTTP::Get.new(uri)
|
||||||
|
|
||||||
|
headers.each do |header, value|
|
||||||
|
req[header] = value
|
||||||
|
end
|
||||||
|
|
||||||
|
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
||||||
|
http.request(req)
|
||||||
|
end.body
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'Update version from github repositories'
|
||||||
|
task github: :environment do
|
||||||
|
GithubRepository.all.each do |repo|
|
||||||
|
begin
|
||||||
|
software = Software.find(repo.software_id)
|
||||||
|
versions = software.versions.all.map(&:number)
|
||||||
|
headers = {
|
||||||
|
'Accept' => 'application/vnd.github.v3+json',
|
||||||
|
'Authorization' => 'token cabbd658df98458404ab519f02bca93bb2923dfb'
|
||||||
|
}
|
||||||
|
tags =
|
||||||
|
JSON.parse(
|
||||||
|
get_url_content(
|
||||||
|
"https://api.github.com/repos/#{repo.name}/git/refs/tags",
|
||||||
|
headers
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
tags.each do |tag|
|
||||||
|
version = tag['ref'].split('/').last
|
||||||
|
next if versions.include?(version)
|
||||||
|
puts version
|
||||||
|
|
||||||
|
date =
|
||||||
|
JSON.parse(
|
||||||
|
get_url_content(tag['object']['url'], headers)
|
||||||
|
)['committer']['date']
|
||||||
|
|
||||||
|
Version.new(
|
||||||
|
software_id: software.id,
|
||||||
|
number: version,
|
||||||
|
date: date
|
||||||
|
).save
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
puts e
|
||||||
|
next
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue