tractive 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f8e921094cb307df3ab46beb5ca61451f70dff070d002524d01311830fdfa2c
4
- data.tar.gz: 3a41b37b4e9abdc7f54182023a5d8051bfa5cc0179e9a54a69f55acf64b140dc
3
+ metadata.gz: 5ebcddc1621be979b25f4041cc4eac2429e6a6a08b05611154c230d49d9de86c
4
+ data.tar.gz: f61bd5af4741266ae56d81c277c7aaec723a49358f81dcb6eebdc3dbaae2e37c
5
5
  SHA512:
6
- metadata.gz: 9be506ff5ac3b8dd8613805202b10da56276fbe955415f395b11aef693367b95ed46dd19edc9e7ac3f22ff1eadb26a1be3deb68cb59a4ddbbb5c2fb06fdc754d
7
- data.tar.gz: 427ac9b2b341dae9bad18073b310a716c6def1604ecd63b96b718eb73fe09b3c6688579b635403d008f36b75683c99709f7b38c57b5f60df6d1b4fd08eefeca0
6
+ metadata.gz: b29d97cc67c43cc4d9ee72d88563e01dc6d7cdc7b988ed3b987c73a3cbc9a2fc8746597c3d3b1e175ebca83073fd6e4b19f8b51f60c9792849893a6816483f5d
7
+ data.tar.gz: d07192c1b845a3a4ca266e881ead6a7583ba5575313d68372ffa9df6785c0f4e8856be09cafdf736bb279e5e651a4d3eb1e6f294b0754b0dd4c3a5dfded9ac03
data/.rubocop.yml CHANGED
@@ -34,6 +34,9 @@ Metrics/AbcSize:
34
34
  Metrics/MethodLength:
35
35
  Enabled: false
36
36
 
37
+ Metrics/ModuleLength:
38
+ Max: 150
39
+
37
40
  Security/Open:
38
41
  Enabled: false
39
42
 
data/README.adoc CHANGED
@@ -682,6 +682,7 @@ The following options are allowed (at least one necessary):
682
682
  * `column-name`
683
683
  * `operator`
684
684
  * `column-value`
685
+ * `include-null`
685
686
 
686
687
  | Boolean
687
688
 
@@ -697,6 +698,10 @@ The following options are allowed (at least one necessary):
697
698
  | Value of the column to filter.
698
699
  | String
699
700
 
701
+ | `--include-null`
702
+ | Include rows having null value in filtered column.
703
+ | Boolean
704
+
700
705
  | `-h`, `help`
701
706
  | Display the Tractive help message, or you can provide a command to know more
702
707
  about a single command via `tractive help {command}`.
data/db/trac-test.db CHANGED
Binary file
data/exe/tractive CHANGED
@@ -30,6 +30,8 @@ class TractiveCommand < Thor
30
30
  desc: "Operator for filter."
31
31
  method_option "columnvalue", type: :string, aliases: ["--column-value"],
32
32
  desc: "Value of the column to filter."
33
+ method_option "includenull", type: :boolean, aliases: ["--include-null"],
34
+ desc: "Flag for including null values in the filter result."
33
35
 
34
36
  method_option "importfromfile", type: :string, aliases: ["-I", "--import-from-file"],
35
37
  desc: "Import issues from a json file"
@@ -16,6 +16,7 @@ module Migrator
16
16
  @client = GithubApi::Client.new(access_token: args[:cfg]["github"]["token"])
17
17
  @wiki_attachments_url = args[:cfg]["trac"]["wiki_attachments_url"]
18
18
  @revmap_file_path = args[:opts][:revmapfile] || args[:cfg]["revmap_path"]
19
+ @attachment_options = { hashed: args[:cfg].dig("attachments", "hashed") }
19
20
 
20
21
  load_milestone_map
21
22
  create_labels_on_github(@labels_cfg["severity"].values)
@@ -287,7 +288,7 @@ module Migrator
287
288
  name = meta[:filename]
288
289
  body = meta[:description]
289
290
  if @attachurl
290
- url = @uri_parser.escape("#{@attachurl}/#{meta[:id]}/#{name}")
291
+ url = @uri_parser.escape("#{@attachurl}/#{attachment_path(meta[:id], name, @attachment_options)}")
291
292
  text += "[`#{name}`](#{url})"
292
293
  body += "\n![#{name}](#{url})" if [".png", ".jpg", ".gif"].include? File.extname(name).downcase
293
294
  else
@@ -339,6 +340,17 @@ module Migrator
339
340
 
340
341
  "[trac:#{ticket[:id]}](#{@tracticketbaseurl}/#{ticket[:id]})"
341
342
  end
343
+
344
+ def attachment_path(id, filename, options = {})
345
+ return "#{id}/#{filename}" unless options[:hashed]
346
+
347
+ folder_name = Digest::SHA1.hexdigest(id)
348
+ parent_folder_name = folder_name[0..2]
349
+ hashed_filename = Digest::SHA1.hexdigest(filename)
350
+ file_extension = File.extname(filename)
351
+
352
+ "#{parent_folder_name}/#{folder_name}/#{hashed_filename}#{file_extension}"
353
+ end
342
354
  end
343
355
  end
344
356
  end
@@ -27,7 +27,7 @@ module Migrator
27
27
  input_file_name = args[:opts][:importfromfile]
28
28
 
29
29
  @filter_applied = args[:opts][:filter]
30
- @filter_options = { column_name: args[:opts][:columnname], operator: args[:opts][:operator], column_value: args[:opts][:columnvalue] }
30
+ @filter_options = { column_name: args[:opts][:columnname], operator: args[:opts][:operator], column_value: args[:opts][:columnvalue], include_null: args[:opts][:includenull] }
31
31
 
32
32
  @trac = Tractive::Trac.new(db)
33
33
  @repo = github["repo"]
@@ -19,14 +19,18 @@ module Tractive
19
19
  def filter_column(options)
20
20
  return self if options.nil? || options.values.compact.empty?
21
21
 
22
- case options[:operator].downcase
23
- when "like"
24
- where { Sequel.like(options[:column_name].to_sym, options[:column_value]) }
25
- when "not like"
26
- where { ~Sequel.like(options[:column_name].to_sym, options[:column_value]) }
27
- else
28
- where { Sequel.lit("#{options[:column_name]} #{options[:operator]} '#{options[:column_value]}'") }
29
- end
22
+ query = case options[:operator].downcase
23
+ when "like"
24
+ Sequel.like(options[:column_name].to_sym, options[:column_value])
25
+ when "not like"
26
+ ~Sequel.like(options[:column_name].to_sym, options[:column_value])
27
+ else
28
+ Sequel.lit("#{options[:column_name]} #{options[:operator]} '#{options[:column_value]}'")
29
+ end
30
+
31
+ query = Sequel.|(query, { options[:column_name].to_sym => nil }) if options[:include_null]
32
+
33
+ where { query }
30
34
  end
31
35
  end
32
36
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tractive
4
- VERSION = "1.0.8"
4
+ VERSION = "1.0.9"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tractive
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-26 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2