diggit 3.0.1 → 3.0.2

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: 923c33e8ad605d0ce6a4213cc65b733d39e5a022bc316ce5274a5cead3a793a1
4
- data.tar.gz: 835b774912312f59d93049e237259b73d51a022bd8ec2268be9c0391986e215f
3
+ metadata.gz: 2e5d600c1a153b908c21f736888189e787cd37b9dfe8b825dd2b09e6d87d3504
4
+ data.tar.gz: be325f5cfb4e9145e8e6d5b527c4a518f6852687849028e7c4ce06fcbb39e0e2
5
5
  SHA512:
6
- metadata.gz: 90e82684cdea177aab66ba4a32d31a82a25a00dd358840b1139572bb5da9d9857957f10331d4ffb5cc7e96b28d96d064a8558bfe7734dd25aee470111ca0774c
7
- data.tar.gz: 5bb52f527c746f2666f272460a80ade1e5f4558e3cabdab27c824c131200a200b31907b688fa275fb2e753ad4e67730b5f930d8e28c33a9748048e7254204fab
6
+ metadata.gz: 39fca80590e7d9c00936319c5363605fd7e8b9653d200c638b082f4da3a6efa17bfd3c11e5e211a3e8392702beb3c9e4e9f7e7414df5542afcdde4e4a042b09e
7
+ data.tar.gz: 58660bd365187ac0d816571bd5d7078202a8a0a7401f405f4afad567e82275432334202300d52509c392e8aedcbea5dd24978d328e8c49099db1e04403dddc82
@@ -1,5 +1,11 @@
1
1
  # Changelog of Diggit
2
2
 
3
+ ### Version 3.0.2
4
+ * Added version command
5
+ * `out` plugin is now able to furnish and clean folder dedicated for an analysis bound to a source
6
+ * New command to handle options
7
+ * Use ignore option of Oj to avoid weird serialization
8
+
3
9
  ### Version 3.0.1
4
10
  * Verbose option now used
5
11
  * Improved gemspec
data/bin/dgit CHANGED
@@ -30,10 +30,44 @@ module Diggit
30
30
  flag %i[f folder], default_value: ".", desc: "Path to the diggit folder. Default: current folder."
31
31
 
32
32
  version Diggit::VERSION
33
-
34
33
  subcommand_option_handling :normal
35
34
  arguments :strict
36
35
 
36
+ accept(Hash) do |value|
37
+ result = {}
38
+ value.split(/,/).each do |pair|
39
+ k, v = pair.split(/=/)
40
+ i = v.split(/\|/)
41
+ result[k] = i
42
+ end
43
+ result
44
+ end
45
+
46
+ pre do |globals, _command, _options, _args|
47
+ Diggit::Dig.init globals[:f]
48
+ Log.level = :fine if globals[:v]
49
+ true
50
+ end
51
+
52
+ post do |_global, _command, _options, _args|
53
+ # Post logic here, skips_post to skip commands
54
+ end
55
+
56
+ on_error do |exception|
57
+ Log.error "Error running diggit."
58
+ Log.error exception.message
59
+ Log.info exception.backtrace.join("\n")
60
+ false
61
+ end
62
+
63
+ desc "Prints diggit version"
64
+ skips_pre
65
+ command :version do |c|
66
+ c.action do |_globals, _options, _args|
67
+ Log.ok "Diggit version #{Diggit::VERSION}"
68
+ end
69
+ end
70
+
37
71
  desc 'Init a diggit folder.'
38
72
  skips_pre
39
73
  command :init do |c|
@@ -43,6 +77,25 @@ module Diggit
43
77
  end
44
78
  end
45
79
 
80
+ desc 'Manage the options of the diggit folder.'
81
+ command :options do |c|
82
+ c.desc 'Set an option'
83
+ c.command :set do |set|
84
+ set.flag %i[h hash], desc: "hash to store (format: 'foo=bar,baz=val1|val2')", type: Hash, default_value: {}
85
+ set.action do |_global_options, options, _args|
86
+ Diggit::Dig.it.options.merge!(options[:h])
87
+ Diggit::Dig.it.save_options
88
+ end
89
+ end
90
+ c.desc 'Display the options'
91
+ c.command :show do |show|
92
+ show.action do |_global_options, _options, _args|
93
+ Log.info Diggit::Dig.it.options
94
+ end
95
+ end
96
+ c.default_command :show
97
+ end
98
+
46
99
  desc 'Display the status of the diggit folder.'
47
100
  command :status do |c|
48
101
  c.action do |_global_options, _options, _args|
@@ -235,22 +288,6 @@ module Diggit
235
288
  end
236
289
  c.default_command :perform
237
290
  end
238
- pre do |globals, _command, _options, _args|
239
- Diggit::Dig.init globals[:f]
240
- Log.level = :fine if globals[:v]
241
- true
242
- end
243
-
244
- post do |_global, _command, _options, _args|
245
- # Post logic here, skips_post to skip commands
246
- end
247
-
248
- on_error do |exception|
249
- Log.error "Error running diggit."
250
- Log.error exception.message
251
- Log.info exception.backtrace.join("\n")
252
- false
253
- end
254
291
 
255
292
  exit run(ARGV)
256
293
  end
@@ -22,19 +22,13 @@ require 'singleton'
22
22
  require_relative 'log'
23
23
  require_relative 'entries'
24
24
 
25
- class Dummy
26
- def initialize(_)
27
- Object.new
28
- end
29
- end
30
-
31
25
  Oj.default_options = Oj.default_options.merge(
32
26
  mode: :object,
33
27
  indent: 2,
34
28
  auto_define: true,
29
+ ignore: [Rugged::Repository],
35
30
  circular: true
36
31
  )
37
- Oj.register_odd(Rugged::Repository, Dummy, :new, :to_s)
38
32
 
39
33
  class String
40
34
  # Returns a underscore cased version of the string.
@@ -16,5 +16,5 @@
16
16
  # Copyright 2015 Jean-Rémy Falleri <jr.falleri@gmail.com>
17
17
 
18
18
  module Diggit
19
- VERSION = '3.0.1'.freeze
19
+ VERSION = '3.0.2'.freeze
20
20
  end
@@ -50,6 +50,13 @@ class Out < Diggit::Addon
50
50
  File.join(@out, *paths)
51
51
  end
52
52
 
53
+ # Get an output path for an analysis bound to a source.
54
+ # @param analysis [Analysis] an analysis object.
55
+ # @return [String] the absolute path.
56
+ def out_path_for_analysis(analysis, *paths)
57
+ out_path(analysis.name, analysis.source.id, *paths)
58
+ end
59
+
53
60
  # Get a temporary path for a file/directory.
54
61
  # @param paths [Array<String>] the different folders of the path.
55
62
  # @return [String] the absolute path.
@@ -57,10 +64,22 @@ class Out < Diggit::Addon
57
64
  File.join(@tmp, *paths)
58
65
  end
59
66
 
67
+ # Get a temporary path for an analysis bound to a source.
68
+ # @param analysis [Analysis] an analysis object.
69
+ # @return [String] the absolute path.
70
+ def tmp_path_for_analysis(analysis, *paths)
71
+ tmp_path(analysis.name, analysis.source.id, *paths)
72
+ end
73
+
60
74
  # Clean the output and temporary folders.
61
75
  # @return [void]
62
- def clean
76
+ def clean_all
63
77
  FileUtils.rm_rf(@out)
64
78
  FileUtils.rm_rf(@tmp)
65
79
  end
80
+
81
+ def clean_analysis(analysis)
82
+ FileUtils.rm_rf(out_path_for_analysis(analysis))
83
+ FileUtils.rm_rf(tmp_path_for_analysis(analysis))
84
+ end
66
85
  end
@@ -36,7 +36,7 @@ class ConflictMerge < Diggit::Analysis
36
36
  walker.sorting(Rugged::SORT_TOPO | Rugged::SORT_REVERSE)
37
37
  walker.push(repo.head.name)
38
38
  walker.each do |commit|
39
- out_dir = out.out_path(source.id, commit.oid)
39
+ out_dir = out.out_path_for_analysis(self, commit.oid)
40
40
  parents = commit.parents
41
41
  next unless parents.size > 1
42
42
  left = parents[0]
@@ -114,6 +114,6 @@ class ConflictMerge < Diggit::Analysis
114
114
  end
115
115
 
116
116
  def clean
117
- out.clean
117
+ out.clean_analysis(self)
118
118
  end
119
119
  end
@@ -32,6 +32,7 @@ class Javadoc < Diggit::Analysis
32
32
  end
33
33
 
34
34
  def run
35
+ FileUtils.mkdir_p(out.out_path_for_analysis(self))
35
36
  files = Dir["#{@source.folder}/src/main/java/**/*.java"]
36
37
  puts "#{files.length} files to process"
37
38
  db = {}
@@ -43,7 +44,7 @@ class Javadoc < Diggit::Analysis
43
44
  db[f] = index_methods(doc)
44
45
  end
45
46
 
46
- Oj.to_file("#{out.out}/#{@source.id}.json", db)
47
+ Oj.to_file(file, db)
47
48
  end
48
49
 
49
50
  def index_methods(doc)
@@ -176,6 +177,10 @@ class Javadoc < Diggit::Analysis
176
177
  end
177
178
 
178
179
  def clean
179
- out.clean
180
+ out.clean_analysis(self)
181
+ end
182
+
183
+ def file
184
+ out.out_path_for_analysis(self, "javadoc.json")
180
185
  end
181
186
  end
@@ -17,29 +17,35 @@
17
17
 
18
18
  require 'fileutils'
19
19
 
20
- class Tex < Diggit::Analysis
20
+ class Words < Diggit::Analysis
21
21
  require_addons 'out'
22
22
 
23
23
  def initialize(options)
24
24
  super(options)
25
+ @extensions = options[name]
25
26
  end
26
27
 
27
28
  def run
29
+ FileUtils.mkdir_p(out.out_path_for_analysis(self))
28
30
  walker = Rugged::Walker.new(repo)
29
31
  walker.sorting(Rugged::SORT_TOPO | Rugged::SORT_REVERSE)
30
32
  walker.push(repo.head.name)
31
33
  walker.each do |c|
32
34
  repo.checkout(c.oid, { strategy: %i[force remove_untracked] })
33
- words = Dir["**/*.tex"].reduce(0) { |acc, elem| acc + `cat "#{elem}" | wc -w`.to_i }
35
+ words = words_files.reduce(0) { |acc, elem| acc + `cat "#{elem}" | wc -w`.to_i }
34
36
  File.open(file, 'a') { |f| f.puts("#{source.url};#{c.oid};#{words}\n") }
35
37
  end
36
38
  end
37
39
 
40
+ def words_files
41
+ @extensions.reduce([]) { |acc, elem| acc + Dir["**/*.#{elem}"] }
42
+ end
43
+
38
44
  def clean
39
- out.clean
45
+ out.clean_analysis(self)
40
46
  end
41
47
 
42
48
  def file
43
- "#{out.out}/words.csv"
49
+ out.out_path_for_analysis(self, "words.csv")
44
50
  end
45
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diggit
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Rémy Falleri
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-01-23 00:00:00.000000000 Z
14
+ date: 2018-01-27 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: formatador
@@ -47,14 +47,20 @@ dependencies:
47
47
  requirements:
48
48
  - - "~>"
49
49
  - !ruby/object:Gem::Version
50
- version: '2'
50
+ version: '3'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 3.4.0
51
54
  type: :runtime
52
55
  prerelease: false
53
56
  version_requirements: !ruby/object:Gem::Requirement
54
57
  requirements:
55
58
  - - "~>"
56
59
  - !ruby/object:Gem::Version
57
- version: '2'
60
+ version: '3'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 3.4.0
58
64
  - !ruby/object:Gem::Dependency
59
65
  name: rugged
60
66
  requirement: !ruby/object:Gem::Requirement
@@ -204,7 +210,7 @@ files:
204
210
  - plugins/analysis/cloc_per_file.rb
205
211
  - plugins/analysis/conflict_merge.rb
206
212
  - plugins/analysis/javadoc.rb
207
- - plugins/analysis/tex.rb
213
+ - plugins/analysis/words.rb
208
214
  - spec/cli_spec.rb
209
215
  - spec/core_spec.rb
210
216
  - spec/dgit/plugins/addon/test_addon.rb