require 'droplet_kit' require 'droplet_kit/utils'
namespace :doc do
task :resources do resources = DropletKit::Client.resources resources.each do |key, klass| if (ENV['SKIP_CLASSES'] || '').split(',').include?(klass.name) next end class_name = DropletKit::Utils.underscore klass.name.split('::'.freeze).last human_name = class_name.dup human_name.tr!('_'.freeze, ' '.freeze) human_name.gsub!(/([a-z\d]*)/i) { |match| match.downcase } human_name.gsub!(/\A\w/) { |match| match.upcase } puts "## #{human_name}" puts puts " client = DropletKit::Client.new(access_token: 'TOKEN')" puts " client.#{key} #=> #{klass.name}" puts puts "Actions supported: " puts klass._resources.each do |action| action_options = action.path.scan(/\:[\w_\-]+/i) params = [] if action.body && action.body.arity > 0 resource = class_name.dup resource.gsub!('_resource', '') resource.downcase! params << resource end if action_options.any? action_string = action_options.map do |option| option.gsub!(/^\:/, '') "#{option}: '#{option}'" end.join(', ') params << action_string end puts "* `client.#{key}.#{action.name}(#{params.join(', ')})`" end puts puts end end
end