ossy 0.3.1 → 0.3.4

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: 293d5356dff91ea8e81f4743a6d3b4a5e3a1811b1c3fe2e58ae44d741ea06bee
4
- data.tar.gz: 5cfb961445bff9d039d42deac7a559eb43d9ed322f7c442e75f65d6ed3c749ca
3
+ metadata.gz: '09293736b8853ce4851c0a079a9f95bf747481919f49048448ed8b22dae77a27'
4
+ data.tar.gz: 5307d372e0f89aabb53d9c6370f752f5caf2a15e45ef3cf2f558cee2fc9070eb
5
5
  SHA512:
6
- metadata.gz: 4d8ded74f12c33f88f184ff43f7452710e29b5a22d8247335076f2784783c259a3d2e7382bef8b652821acfe4b186a258c94e7c442d7d9443645d3372761b0f6
7
- data.tar.gz: e4d08d31c1cbb34f8da36a316603d89a7f3c7d2bb453b9c5e3425993e0e849650da1f021e7ba288dc863a6c1dedfb5a05b9d47414f8f6d0104257eaceec9f9f3
6
+ metadata.gz: 7874aa0794c7f9a005a630ec37282af64940e1d78750cd16d6e978902ecf3ea27303a9c99679db37861dff38f6edd28ced9db690f5013937a43dc503bd86dd2f
7
+ data.tar.gz: 916b47d21be438a82c41e74795f30800d8c854c48278cb540ecc2c4354f091f96f55f54b598df2f03119e9e2d7fa71af19083765f55d86bb3e74a8c4a319e68d
@@ -18,7 +18,7 @@ module Ossy
18
18
  KEYS = %w[version summary date fixed added changed].freeze
19
19
 
20
20
  def call(config_path:, message:)
21
- attrs = YAML.load(message)
21
+ attrs = YAML.safe_load(message)
22
22
  target = YAML.load_file(config_path)
23
23
 
24
24
  version = attrs["version"] || target[0]["version"]
@@ -22,6 +22,8 @@ module Ossy
22
22
 
23
23
  require "ossy/cli/templates/compile"
24
24
 
25
+ require "ossy/cli/metrics/rubocop"
26
+
25
27
  register "github", aliases: %w[gh] do |github|
26
28
  github.register "workflow", Github::Workflow, aliases: %w[w]
27
29
  github.register "membership", Github::Membership, aliases: %w[m]
@@ -46,6 +48,10 @@ module Ossy
46
48
  register "configs", aliases: %w[c] do |configs|
47
49
  configs.register "merge", Configs::Merge, aliases: %w[m]
48
50
  end
51
+
52
+ register "metrics", aliases: %w[m] do |configs|
53
+ configs.register "rubocop", Metrics::Rubocop, aliases: %w[rc]
54
+ end
49
55
  end
50
56
  end
51
57
  end
@@ -16,7 +16,7 @@ module Ossy
16
16
  argument :output_path, required: true, desc: "The path to the output file"
17
17
 
18
18
  option :identifiers, required: false, default: "",
19
- desc: "Key identifier that should be used for merging arrays of hashes"
19
+ desc: "Key identifier that should be used for merging arrays of hashes"
20
20
 
21
21
  def call(source_path:, target_path:, output_path:, **opts)
22
22
  puts "Merging #{source_path} + #{target_path} into #{output_path}"
@@ -49,9 +49,11 @@ module Ossy
49
49
  arr
50
50
  .map
51
51
  .with_index { |el, idx|
52
- (after = el.delete("_after")) ?
53
- [el, arr.index(arr.detect { |a| a[id].eql?(after) }) + 1] :
52
+ if (after = el.delete("_after"))
53
+ [el, arr.index(arr.detect { |a| a[id].eql?(after) }) + 1]
54
+ else
54
55
  [el, idx]
56
+ end
55
57
  }.sort_by(&:last).map(&:first)
56
58
  else
57
59
  (val1 + val2).uniq
@@ -17,8 +17,12 @@ module Ossy
17
17
  def call(repo:, tag:)
18
18
  result = client.tagger(repo: repo, tag: tag)
19
19
 
20
- if result && result[:verified].equal?(true)
21
- puts result[:tagger]["name"]
20
+ return unless result
21
+
22
+ tagger = result[:tagger]
23
+
24
+ if tagger["email"].include?("users.noreply.github.com") || result[:verified].equal?(true)
25
+ puts tagger["name"]
22
26
  end
23
27
  end
24
28
  end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ossy/cli/commands/core"
4
+ require "ossy/import"
5
+ require "ossy/release"
6
+
7
+ require "yaml"
8
+ require "tilt"
9
+ require "ostruct"
10
+
11
+ module Ossy
12
+ module CLI
13
+ module Metrics
14
+ class Rubocop < Commands::Core
15
+ include Import[run_rubocop: "engine.rubocop.run"]
16
+
17
+ desc "Runs rubocop"
18
+
19
+ argument :path, required: true, desc: "The path to file(s)"
20
+ option :format, required: true, desc: "Output format"
21
+ option :do_exit, required: false,
22
+ desc: "Whether the command should exit with the same status as rubocop"
23
+ option :silence, required: false,
24
+ desc: "Whether the rubocop output should be displayed"
25
+
26
+ def call(path:, silence: "false", do_exit: "true", args: [], **opts)
27
+ result, output = run_rubocop.(path: path, args: args, **opts)
28
+
29
+ warn output if silence.eql?("false") && !result.success?
30
+
31
+ exit(result.exitstatus) if do_exit.eql?("true")
32
+
33
+ [result, output]
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -37,6 +37,8 @@ module Ossy
37
37
  argument :output_path, required: true, desc: "The path to the output md file"
38
38
  argument :template_path, required: true, desc: "The path to the changelog ERB template"
39
39
 
40
+ option :data_path, required: false, desc: "Optional path to additional data yaml file"
41
+
40
42
  def call(config_path:, output_path:, template_path:, data_path: nil)
41
43
  puts "Generating #{output_path} from #{config_path} using #{template_path}"
42
44
 
@@ -7,7 +7,7 @@ require "ossy/types"
7
7
 
8
8
  module Ossy
9
9
  class Container < Dry::System::Container
10
- use :env, inferrer: proc { ENV.fetch("OSSY_ENV") { "development" }.to_sym }
10
+ use :env, inferrer: proc { ENV.fetch("OSSY_ENV", "development").to_sym }
11
11
 
12
12
  configure do |config|
13
13
  config.root = Pathname(__dir__).join("../../")
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "open3"
4
+
5
+ require "ossy/cli/commands/core"
6
+ require "ossy/struct"
7
+
8
+ module Ossy
9
+ module Engine
10
+ module Rubocop
11
+ # {
12
+ # "metadata" : {
13
+ # "ruby_platform" : "x86_64-darwin20",
14
+ # "ruby_version" : "2.7.2",
15
+ # "ruby_engine" : "ruby",
16
+ # "ruby_patchlevel" : "137",
17
+ # "rubocop_version" : "1.6.1"
18
+ # },
19
+ # "files" : [
20
+ # {
21
+ # "offenses" : [],
22
+ # "path" : "spec/spec_helper.rb"
23
+ # }
24
+ # ],
25
+ # "summary" : {
26
+ # "target_file_count" : 1,
27
+ # "inspected_file_count" : 1,
28
+ # "offense_count" : 0
29
+ # }
30
+ # }
31
+ #
32
+ # # json["files"] element
33
+ # {"path"=>"spec/fixtures/rubocop/bad.rb",
34
+ # "offenses"=>
35
+ # [{"severity"=>"convention",
36
+ # "message"=> "blablabla",
37
+ # "cop_name"=>"Style/StringLiterals",
38
+ # "corrected"=>false,
39
+ # "correctable"=>true,
40
+ # "location"=>
41
+ # {"start_line"=>3,
42
+ # "start_column"=>1,
43
+ # "last_line"=>3,
44
+ # "last_column"=>30,
45
+ # "length"=>30,
46
+ # "line"=>3,
47
+ # "column"=>1}}]}
48
+ class Result < Ossy::Struct
49
+ attribute :summary do
50
+ attribute :offense_count, Types::Integer
51
+ end
52
+
53
+ def self.build(json)
54
+ klass =
55
+ case json["summary"]["offense_count"]
56
+ in 0 then Success
57
+ in 1.. then Failure
58
+ end
59
+ klass.new(json)
60
+ end
61
+
62
+ def failure?
63
+ !success?
64
+ end
65
+ end
66
+
67
+ class Success < Result
68
+ def success?
69
+ true
70
+ end
71
+ end
72
+
73
+ class Failure < Result
74
+ attribute :files, Types::Array do
75
+ attribute :path, Types::String
76
+ attribute :offenses, Types::Array do
77
+ attribute :severity, Types::String
78
+ attribute :cop_name, Types::String
79
+ attribute :location do
80
+ attribute :start_line, Types::Integer
81
+ attribute :start_column, Types::Integer
82
+ attribute :last_line, Types::Integer
83
+ attribute :last_column, Types::Integer
84
+ attribute :line, Types::Integer
85
+ attribute :column, Types::Integer
86
+ end
87
+ end
88
+ end
89
+
90
+ def success?
91
+ false
92
+ end
93
+ end
94
+
95
+ class Run < Ossy::CLI::Commands::Core
96
+ option :path, desc: "Path to file(s)"
97
+ option :format, desc: "Path to file(s)"
98
+
99
+ def call(path:, format: "json", args: [])
100
+ extra_opts = args.join(" ")
101
+ result, output = exec("rubocop #{path} --format #{format} #{extra_opts}".strip)
102
+
103
+ case format
104
+ when "json" then Result.build(JSON.parse(output))
105
+ else
106
+ [result, output]
107
+ end
108
+ end
109
+
110
+ def exec(cmd, opts = {})
111
+ Open3.popen3(cmd, opts) do |_stdin, stdout, _stderr, wait_thr|
112
+ [wait_thr.value, stdout.read]
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -75,7 +75,7 @@ module Ossy
75
75
 
76
76
  def http
77
77
  @http ||= Faraday.new(url: BASE_URL, headers: headers) do |conn|
78
- conn.basic_auth(settings.github_login, settings.github_token)
78
+ conn.request(:basic_auth, settings.github_login, settings.github_token)
79
79
  end
80
80
  end
81
81
 
data/lib/ossy/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ossy
4
- VERSION = "0.3.1"
4
+ VERSION = "0.3.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ossy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-03 00:00:00.000000000 Z
11
+ date: 2022-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-cli
@@ -64,20 +64,40 @@ dependencies:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '1.2'
67
+ - !ruby/object:Gem::Dependency
68
+ name: dry-configurable
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.12'
74
+ - - "<"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.13'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.12'
84
+ - - "<"
85
+ - !ruby/object:Gem::Version
86
+ version: '0.13'
67
87
  - !ruby/object:Gem::Dependency
68
88
  name: dry-system
69
89
  requirement: !ruby/object:Gem::Requirement
70
90
  requirements:
71
91
  - - "~>"
72
92
  - !ruby/object:Gem::Version
73
- version: '0.14'
93
+ version: 0.18.1
74
94
  type: :runtime
75
95
  prerelease: false
76
96
  version_requirements: !ruby/object:Gem::Requirement
77
97
  requirements:
78
98
  - - "~>"
79
99
  - !ruby/object:Gem::Version
80
- version: '0.14'
100
+ version: 0.18.1
81
101
  - !ruby/object:Gem::Dependency
82
102
  name: dry-types
83
103
  requirement: !ruby/object:Gem::Requirement
@@ -199,9 +219,11 @@ files:
199
219
  - lib/ossy/cli/github/tagger.rb
200
220
  - lib/ossy/cli/github/update_file.rb
201
221
  - lib/ossy/cli/github/workflow.rb
222
+ - lib/ossy/cli/metrics/rubocop.rb
202
223
  - lib/ossy/cli/releases/generate.rb
203
224
  - lib/ossy/cli/templates/compile.rb
204
225
  - lib/ossy/container.rb
226
+ - lib/ossy/engine/rubocop/run.rb
205
227
  - lib/ossy/github/client.rb
206
228
  - lib/ossy/github/workflow.rb
207
229
  - lib/ossy/import.rb
@@ -232,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
254
  - !ruby/object:Gem::Version
233
255
  version: '0'
234
256
  requirements: []
235
- rubygems_version: 3.2.3
257
+ rubygems_version: 3.2.32
236
258
  signing_key:
237
259
  specification_version: 4
238
260
  summary: Ossy is your ruby gem maintenance helper