From 2ffbf228795293d731cc505403be698bf064ea83 Mon Sep 17 00:00:00 2001 From: Gregor Weckbecker Date: Thu, 29 Sep 2011 12:52:23 +0200 Subject: [PATCH 1/4] a simple redmine mock for testing offline --- test/redmine_mock/server.rb | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/redmine_mock/server.rb diff --git a/test/redmine_mock/server.rb b/test/redmine_mock/server.rb new file mode 100644 index 0000000..1d22015 --- /dev/null +++ b/test/redmine_mock/server.rb @@ -0,0 +1,50 @@ + +require 'rubygems' +require 'sinatra' + +get '/projects/test/issues.json' do + < Date: Fri, 11 Nov 2011 14:29:46 +0100 Subject: [PATCH 2/4] introduces global search option '-G' and allows to specify project to query '-P' --- lib/redmine_cli/query.rb | 18 +++++++++++++++++- lib/redmine_cli/tasks/commit.rb | 6 ++++++ lib/redmine_cli/tasks/list.rb | 7 +++++++ test/redmine_mock/server.rb | 10 ++++++++-- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/redmine_cli/query.rb b/lib/redmine_cli/query.rb index 7976bce..fd1878c 100644 --- a/lib/redmine_cli/query.rb +++ b/lib/redmine_cli/query.rb @@ -8,6 +8,7 @@ module RedmineCLI class Query attr_reader :filters + attr_accessor :project def initialize(query = nil) @filters = if query.nil? @@ -15,6 +16,7 @@ def initialize(query = nil) else query.filters.clone end + @project = query.project if query end def add_filter(field, operator, values) @@ -55,6 +57,11 @@ def subject(*values) Query.new(self).add_filter('subject', '~', values) end + def default_project + @project = Config.project + self + end + def assigned_to_me Query.new(self).add_filter('assigned_to_id', '=', 'me') end @@ -62,7 +69,16 @@ def assigned_to_me private def url_for(limit, page) - "#{Config.url}/projects/#{Config.project}/issues.json?key=#{Config.api_key}&limit=#{limit}&page=#{page}&#{query}" + "#{Config.url}#{resource}?key=#{Config.api_key}&limit=#{limit}&page=#{page}&#{query}" + end + + def resource + prefix = if @project + "/projects/#{@project}" + else + "" + end + prefix + "/issues.json" end def query diff --git a/lib/redmine_cli/tasks/commit.rb b/lib/redmine_cli/tasks/commit.rb index 7135c06..5ae0a4f 100644 --- a/lib/redmine_cli/tasks/commit.rb +++ b/lib/redmine_cli/tasks/commit.rb @@ -12,6 +12,9 @@ class Commit < Base class_option :closed_tickets, :type => :boolean, :aliases => "-C", :desc => 'Only search for closed tickets.' class_option :all_tickets, :type => :boolean, :aliases => "-A", :desc => 'Include all tickets into search.' class_option :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." + class_option :global_search, :type => :boolean, :aliases => "-G", :desc => "Perform a global search." + class_option :project_id, :type => :string, :aliases => "-P", :desc => "Search in the project with the given id." + ['fixes', 'closes', 'refs'].each do |method| desc "#{method} [-a] [-m ] [-A | -C] [-I]", "Search for issue and commit with #{method}." @@ -35,6 +38,9 @@ def commit(term, options) def fetch_issues(term, options) query = Query.new + query.project = options.project_id if !options.global_search? && options.project_id + query.default_project if !options.global_search? && !options.project_id + query = query.closed if not options.all_tickets and options.closed_tickets query = query.assigned_to_me if options.assigned_to_me? query = query.open unless options.all_tickets or options.closed_tickets diff --git a/lib/redmine_cli/tasks/list.rb b/lib/redmine_cli/tasks/list.rb index a11cb03..55f35f0 100644 --- a/lib/redmine_cli/tasks/list.rb +++ b/lib/redmine_cli/tasks/list.rb @@ -5,6 +5,8 @@ class List < Base class_option :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." + method_option :global_search, :type => :boolean, :aliases => "-G", :desc => "Perform a global search." + method_option :project_id, :type => :string, :aliases => "-P", :desc => "Search in the project with the given id." ['open', 'closed'].each do |status| desc "#{status} [term] [-I]", "List of all #{status} tickets matching search" define_method status do |*args| @@ -18,6 +20,7 @@ class List < Base method_option :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." def sub(issue_id) query = Query.new + query = query.closed if not options.all_tickets and options.closed_tickets query = query.open if !options.all_tickets and !options.closed_tickets query = query.assigned_to_me if options.assigned_to_me? @@ -30,6 +33,10 @@ def sub(issue_id) def list(method, term, options) query = Query.new.send method + + query.project = options.project_id if !options.global_search? && options.project_id + query.default_project if !options.global_search? && !options.project_id + query = query.subject(term) unless term.nil? or term.empty? query = query.assigned_to_me if options.assigned_to_me? matching = query.all diff --git a/test/redmine_mock/server.rb b/test/redmine_mock/server.rb index 1d22015..48879da 100644 --- a/test/redmine_mock/server.rb +++ b/test/redmine_mock/server.rb @@ -2,8 +2,7 @@ require 'rubygems' require 'sinatra' -get '/projects/test/issues.json' do - < Date: Fri, 11 Nov 2011 18:02:21 +0100 Subject: [PATCH 3/4] refactors query creation --- lib/redmine_cli.rb | 1 + lib/redmine_cli/helpers.rb | 2 + lib/redmine_cli/helpers/query_helper.rb | 87 +++++++++++++++++++++++++ lib/redmine_cli/tasks/commit.rb | 22 ++----- lib/redmine_cli/tasks/list.rb | 32 +++------ 5 files changed, 103 insertions(+), 41 deletions(-) create mode 100644 lib/redmine_cli/helpers.rb create mode 100644 lib/redmine_cli/helpers/query_helper.rb diff --git a/lib/redmine_cli.rb b/lib/redmine_cli.rb index 7890faf..3208ea7 100644 --- a/lib/redmine_cli.rb +++ b/lib/redmine_cli.rb @@ -1,6 +1,7 @@ require 'redmine_cli/config' require 'redmine_cli/query' require 'redmine_cli/filter' +require 'redmine_cli/helpers' require 'redmine_cli/tasks' require 'redmine_cli/cli' require 'redmine_cli/ui' diff --git a/lib/redmine_cli/helpers.rb b/lib/redmine_cli/helpers.rb new file mode 100644 index 0000000..790f9d6 --- /dev/null +++ b/lib/redmine_cli/helpers.rb @@ -0,0 +1,2 @@ + +require 'redmine_cli/helpers/query_helper' diff --git a/lib/redmine_cli/helpers/query_helper.rb b/lib/redmine_cli/helpers/query_helper.rb new file mode 100644 index 0000000..1ea8890 --- /dev/null +++ b/lib/redmine_cli/helpers/query_helper.rb @@ -0,0 +1,87 @@ + +module RedmineCLI + module Helpers + module QueryHelper + + def self.included(base) + base.extend(ClassMethods) + end + + module ClassMethods + + @@query_options = [{ :name => :closed_tickets, :type => :boolean, :aliases => "-C", :desc => 'Only search for closed tickets.' }, + { :name => :all_tickets, :type => :boolean, :aliases => "-A", :desc => 'Include all tickets into search.' }, + { :name => :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." }, + { :name => :global_search, :type => :boolean, :aliases => "-G", :desc => "Perform a global search." }, + { :name => :project_id, :type => :string, :aliases => "-P", :desc => "Search in the project with the given id." }] + + def class_options_for_query + options_for_query :class_option, [] + end + + def method_options_for_query(*excludes) + options_for_query :method_option, excludes + end + + def options_description_for_query(*excludes) + @@query_options.select { |option| !excludes.include?(option[:name])} + .collect { |option| "[#{option[:aliases]}]" }.join(" ") + end + + private + + def options_for_query(method, excludes) + @@query_options.each do |option| + unless excludes.include?(option[:name]) + self.send method, option[:name], :type => option[:type], :aliases => option[:aliases], :desc => option[:desc] + end + end + end + + end + + def extract_query_parameters(options) + params = {}; + + params[:status] = :open + params[:status] = :closed_option if options.closed_tickets? && !options.all_tickets + params[:status] = :all if options.all_tickets? + + params[:assigned_to_me] = options.assigned_to_me? + + params[:project_id] = options.project_id + params[:global_search] = options.global_search? + + params + end + + def create_query_for(params) + query = Query.new + query = add_project(query, params) + query = add_status(query, params) + query = query.assigned_to_me if params[:assigned_to_me] + query = query.subject(params[:term]) unless params[:term].nil? + query + end + + private + + def add_project(query, params) + query.project = options.project_id if !params[:global_search] && params[:project_id] + query.default_project if !params[:global_search] && params[:project_id] + query + end + + def add_status(query, params) + if params[:status] == :open + query.open + elsif params[:status] == :clossed + query.closed + else + query + end + end + + end + end +end diff --git a/lib/redmine_cli/tasks/commit.rb b/lib/redmine_cli/tasks/commit.rb index 5ae0a4f..6f9ae1c 100644 --- a/lib/redmine_cli/tasks/commit.rb +++ b/lib/redmine_cli/tasks/commit.rb @@ -5,19 +5,17 @@ module RedmineCLI module Tasks class Commit < Base + include Helpers::QueryHelper + namespace :commit class_option :msg, :type => :string, :aliases => "-m", :desc => 'Commit message.' class_option :all, :type => :boolean, :aliases => "-a", :desc => 'Passes -a to git commit.' - class_option :closed_tickets, :type => :boolean, :aliases => "-C", :desc => 'Only search for closed tickets.' - class_option :all_tickets, :type => :boolean, :aliases => "-A", :desc => 'Include all tickets into search.' - class_option :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." - class_option :global_search, :type => :boolean, :aliases => "-G", :desc => "Perform a global search." - class_option :project_id, :type => :string, :aliases => "-P", :desc => "Search in the project with the given id." + class_options_for_query ['fixes', 'closes', 'refs'].each do |method| - desc "#{method} [-a] [-m ] [-A | -C] [-I]", "Search for issue and commit with #{method}." + desc "#{method} [-a] [-m ] #{options_description_for_query}", "Search for issue and commit with #{method}." define_method method do |*args| commit(args.first, options.merge(:prefix => method)) end @@ -36,17 +34,7 @@ def commit(term, options) end def fetch_issues(term, options) - query = Query.new - - query.project = options.project_id if !options.global_search? && options.project_id - query.default_project if !options.global_search? && !options.project_id - - query = query.closed if not options.all_tickets and options.closed_tickets - query = query.assigned_to_me if options.assigned_to_me? - query = query.open unless options.all_tickets or options.closed_tickets - query = query.subject(term) unless term.nil? or term.empty? - - query.all + create_query_for(extract_query_parameters(options).merge(:term => term)).all end end diff --git a/lib/redmine_cli/tasks/list.rb b/lib/redmine_cli/tasks/list.rb index 55f35f0..209f8ae 100644 --- a/lib/redmine_cli/tasks/list.rb +++ b/lib/redmine_cli/tasks/list.rb @@ -1,46 +1,30 @@ module RedmineCLI module Tasks class List < Base - namespace :list + include Helpers::QueryHelper - class_option :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." + namespace :list - method_option :global_search, :type => :boolean, :aliases => "-G", :desc => "Perform a global search." - method_option :project_id, :type => :string, :aliases => "-P", :desc => "Search in the project with the given id." ['open', 'closed'].each do |status| - desc "#{status} [term] [-I]", "List of all #{status} tickets matching search" + method_options_for_query :closed_tickets, :all_tickets + desc "#{status} [term] #{options_description_for_query}", "List of all #{status} tickets matching search" define_method status do |*args| list(status, args.first, options) end end - desc "sub ID [-A | -C] [-I]", "List sub tickets" - method_option :closed_tickets, :type => :boolean, :aliases => "-C", :desc => 'Only search for closed tickets.' - method_option :all_tickets, :type => :boolean, :aliases => "-A", :desc => 'Include all tickets into search.' - method_option :assigned_to_me, :type => :boolean, :aliases => "-I", :desc => "Only show issues that are assigned to me." + method_options_for_query + desc "sub ID #{options_description_for_query}", "List sub tickets" def sub(issue_id) - query = Query.new - - query = query.closed if not options.all_tickets and options.closed_tickets - query = query.open if !options.all_tickets and !options.closed_tickets - query = query.assigned_to_me if options.assigned_to_me? + query = create_query_for(extract_query_parameters(options)) matching = Filter.new(query.all).with_parent_id(issue_id).all - RedmineCLI.ui.list_issues(matching) end private def list(method, term, options) - query = Query.new.send method - - query.project = options.project_id if !options.global_search? && options.project_id - query.default_project if !options.global_search? && !options.project_id - - query = query.subject(term) unless term.nil? or term.empty? - query = query.assigned_to_me if options.assigned_to_me? - matching = query.all - + matching = create_query_for(extract_query_parameters(options).merge(:status => method.to_sym, :term => term)).all RedmineCLI.ui.list_issues(matching) end end From 588d6c577e54c18d2bde19aa772fb036fe3299d7 Mon Sep 17 00:00:00 2001 From: Gregor Weckbecker Date: Sun, 5 Feb 2012 15:10:10 +0100 Subject: [PATCH 4/4] wip --- gems/redmine_cli-0.2.1.gem | Bin 0 -> 17920 bytes gems/redmine_cli-0.3.0.gem | Bin 0 -> 17920 bytes lib/redmine_cli/helpers/query_helper.rb | 7 ++++--- lib/redmine_cli/query.rb | 1 + lib/redmine_cli/tasks/commit.rb | 5 ++++- lib/redmine_cli/version.rb | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 gems/redmine_cli-0.2.1.gem create mode 100644 gems/redmine_cli-0.3.0.gem diff --git a/gems/redmine_cli-0.2.1.gem b/gems/redmine_cli-0.2.1.gem new file mode 100644 index 0000000000000000000000000000000000000000..1ca9197a27af9f603ff5d044f85aad20cefe7478 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/gems/redmine_cli-0.3.0.gem b/gems/redmine_cli-0.3.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..2d8411243c1c962ea7462afd04c5bd9c1587d5f3 GIT binary patch literal 17920 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 R_)i4>6M_Fk;QvAd{tMIrOE>@k literal 0 HcmV?d00001 diff --git a/lib/redmine_cli/helpers/query_helper.rb b/lib/redmine_cli/helpers/query_helper.rb index 1ea8890..b2724c6 100644 --- a/lib/redmine_cli/helpers/query_helper.rb +++ b/lib/redmine_cli/helpers/query_helper.rb @@ -44,7 +44,7 @@ def extract_query_parameters(options) params = {}; params[:status] = :open - params[:status] = :closed_option if options.closed_tickets? && !options.all_tickets + params[:status] = :closed if options.closed_tickets? && !options.all_tickets params[:status] = :all if options.all_tickets? params[:assigned_to_me] = options.assigned_to_me? @@ -67,8 +67,9 @@ def create_query_for(params) private def add_project(query, params) - query.project = options.project_id if !params[:global_search] && params[:project_id] - query.default_project if !params[:global_search] && params[:project_id] + return query if params[:global_search] + query.project = options.project_id if params[:project_id] + query.default_project unless params[:project_id] query end diff --git a/lib/redmine_cli/query.rb b/lib/redmine_cli/query.rb index fd1878c..4d2c978 100644 --- a/lib/redmine_cli/query.rb +++ b/lib/redmine_cli/query.rb @@ -28,6 +28,7 @@ def execute issues, totalCount, page = [], 0, 1 begin + puts url_for(99, page) url = URI.parse(url_for(99, page)) http = Net::HTTP.new(url.host, url.port) diff --git a/lib/redmine_cli/tasks/commit.rb b/lib/redmine_cli/tasks/commit.rb index 6f9ae1c..9628057 100644 --- a/lib/redmine_cli/tasks/commit.rb +++ b/lib/redmine_cli/tasks/commit.rb @@ -17,6 +17,7 @@ class Commit < Base ['fixes', 'closes', 'refs'].each do |method| desc "#{method} [-a] [-m ] #{options_description_for_query}", "Search for issue and commit with #{method}." define_method method do |*args| + debugger commit(args.first, options.merge(:prefix => method)) end end @@ -34,7 +35,9 @@ def commit(term, options) end def fetch_issues(term, options) - create_query_for(extract_query_parameters(options).merge(:term => term)).all + puts options.inspect + puts extract_query_parameters(options).merge!(:term => term).inspect + create_query_for(extract_query_parameters(options).merge({:term => term})).all end end diff --git a/lib/redmine_cli/version.rb b/lib/redmine_cli/version.rb index b497c94..f2f433c 100644 --- a/lib/redmine_cli/version.rb +++ b/lib/redmine_cli/version.rb @@ -1,3 +1,3 @@ module RedmineCLI - VERSION = '0.2.1' + VERSION = '0.3.0' end