add bin/routes script

This commit is contained in:
Anton Chuchkalov 2016-04-15 11:07:12 +03:00
parent 785f00c928
commit 1afbbba129

71
devops-service/bin/routes.rb Executable file
View File

@ -0,0 +1,71 @@
#!/usr/bin/env ruby
require "rubygems"
require "bundler/setup"
require 'byebug'
root = File.dirname(__FILE__) + '/..'
$:.push root
$stdout = File.open(File::NULL, "w")
require "core/devops-service"
require "core/devops-config"
require "core/devops-routes"
DevopsConfig.read
DevopsService.init
$stdout = STDOUT
class Route
attr_reader :verb, :human_path
def initialize(verb, sinatra_route)
@verb = verb
@human_path = humanize(sinatra_route.first)
end
def humanize(route_regex)
result = route_regex.to_s.sub!('(?-mix:\A\\', '').sub!('\z)','')
result.gsub!('([^\/?#]+)', ":param")
result.gsub!('\/', '/')
result
end
end
class AppRoutes
attr_reader :prefix, :routes
def initialize(prefix, routes)
@prefix, @routes = prefix, routes
end
def print
sorted = @routes.sort_by(&:human_path)
sorted.each do |route|
puts "#{route.verb} #{@prefix}#{route.human_path}"
end
puts "\n\n"
end
end
collections = Devops::Routes.routes.map do |prefix, app|
routes = Devops::Api2.routes.map do |verb, sinatra_routes|
sinatra_routes.map { |r| Route.new(verb, r) }
end.flatten
AppRoutes.new(prefix, routes)
end
# there isn't easy way to get routes by name
apps_order = %w(sidekiq client version backend)
if ARGV.first == 'all'
apps_to_show = %w(sidekiq client version backend)
elsif ARGV.first
apps_to_show = [ARGV.first]
else
apps_to_show = ['backend']
end
apps_to_show.each do |app|
collections[apps_order.index(app)].print
end