From 1afbbba129aff8eb024fc740ff2466a52e62c5d8 Mon Sep 17 00:00:00 2001 From: Anton Chuchkalov Date: Fri, 15 Apr 2016 11:07:12 +0300 Subject: [PATCH] add bin/routes script --- devops-service/bin/routes.rb | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 devops-service/bin/routes.rb diff --git a/devops-service/bin/routes.rb b/devops-service/bin/routes.rb new file mode 100755 index 0000000..c82b76b --- /dev/null +++ b/devops-service/bin/routes.rb @@ -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 + +