module Relish
  module Command
    class Projects < Base

      desc    'list your projects'
      command :default do
        puts format(resource['projects'].get(:accept => :json))
      end
      
      usage   'projects:add <org_or_user_handle>/<project_handle>'
      desc    ['add a project',
               'append :private to make the project private',
               'example: relish projects:add rspec/rspec-core:private']
      command :add do
        puts resource['projects'].post(:handle => handle, :private => private?)
      end
      
      usage   'projects:remove <org_or_user_handle>/<project_handle>'
      desc    'remove a project'
      command :remove do
        puts resource["projects/#{@param}"].delete
      end
      
    private
      def format(response)
        json_parse(response) do |hash| 
          result = hash['project']['full_handle']
          result << " (private)" if hash['project']['private']
          result
        end
      end
      
      def handle
        @param.without_option
      end
      
      def private?
        @param.extract_option == 'private'
      end
            
    end
  end
end