40 lines
942 B
Ruby
40 lines
942 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module OceanicWs
|
||
|
GITHUB_REPO = "https://github.com/OceanicJS/Oceanic"
|
||
|
|
||
|
class DocsController < OceanicWs::ApplicationController
|
||
|
include ::ApplicationController::CommonAssetRoutes
|
||
|
|
||
|
def index
|
||
|
@versions = versions
|
||
|
end
|
||
|
|
||
|
def json
|
||
|
render(json: {
|
||
|
versions: versions,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
def latest
|
||
|
redirect_to("/#{latest_version}#{params[:other]}")
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def versions
|
||
|
ver = Cache.redis.smembers("oceanic:versions")
|
||
|
branches = ver.filter { |v| !v.start_with?("v") }
|
||
|
tags = ver.filter { |v| v.start_with?("v") }
|
||
|
{
|
||
|
branches: branches.sort,
|
||
|
tags: tags.sort_by { |v| Gem::Version.new(v[1..]) },
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def latest_version
|
||
|
`git ls-remote --tags #{GITHUB_REPO}`.split("\n").map { |line| line.split("\t")[-1].gsub("refs/tags/", "") }.max_by { |ver| Gem::Version.new(ver[1..]) }
|
||
|
end
|
||
|
end
|
||
|
end
|