bake-modernize 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 850deabfd56b19447f52f260f156ad33342f4a190eb92ce6d405719749732e9f
4
- data.tar.gz: bc2de84361926006008b85b938ac962e82c3c77a81a3ae586159394a1e4da7fb
3
+ metadata.gz: b651d9ec9908359c42ea7d28ac252a68aac3f501747ffd8686d72b2af9092ad8
4
+ data.tar.gz: 51cec1d69dde6eb4793004914fb9ae75e732f1cb742228aaf61392b4a11ab6d9
5
5
  SHA512:
6
- metadata.gz: 2d49a2140890d760138064ccea4ac346e74900f8fc87d692d4976d0c8a608e1b2e762f05feea940309ed0a6ac2a557942988b2d917ce8dca20f0172bf5e799be
7
- data.tar.gz: f90a30c513c7cb533e4e7088d1235b895362f07a21ccf73ae6e4186e62de9d327d7f3f9a4689fbba60fa199281ed90b5751461c66247ae6c4936b48360b11c2e
6
+ metadata.gz: 44fa671dfdb50020b465379804792c01ea58ccfcd03acf8ec7ececea09b72cba68dcf03c9b2ecee34465f4d160c8ee34bbccba5d63b61001333abea940e8fda0
7
+ data.tar.gz: f51cbb00b3ccb8cacc58a76d24fb9d51732506f7d35edf4ac8d54142a01ee4b35bbf88e6f7f307c2a9aaaef4e21e2a0b3ff23e486eee9be9bceea36a8b6f3d43
checksums.yaml.gz.sig CHANGED
Binary file
@@ -20,8 +20,11 @@ def update(root:)
20
20
  template_root = Bake::Modernize.template_path_for('actions')
21
21
  Bake::Modernize.copy_template(template_root, root)
22
22
 
23
- readme_path = File.expand_path("README.md", root)
24
- update_badges(readme_path, repository_url(root))
23
+ readme_path = ["README.md", "readme.md"].find{|path| File.exist?(File.expand_path(path, root))}
24
+
25
+ if readme_path
26
+ update_badges(readme_path, repository_url(root))
27
+ end
25
28
  end
26
29
 
27
30
  private
@@ -33,14 +36,14 @@ def update_filenames(root)
33
36
  # Move all .yml files to .yaml files :)
34
37
  yml_files.each do |path|
35
38
  new_path = path.with(extension: ".yaml", basename: true)
36
- FileUtils.mv(path, new_path)
39
+ FileUtils::Verbose.mv(path, new_path)
37
40
  end
38
41
 
39
42
  # Move development.yaml to test.yaml
40
43
  development_path = actions_root + "development.yaml"
41
44
  test_path = actions_root + "test.yaml"
42
45
  if development_path.exist?
43
- FileUtils.mv(development_path, test_path)
46
+ FileUtils::Verbose.mv(development_path, test_path)
44
47
  end
45
48
  end
46
49
 
@@ -54,7 +57,7 @@ def repository_url(root)
54
57
  end
55
58
 
56
59
  def badge_for(repository_url)
57
- "[![Development Status](#{repository_url}/workflows/Development/badge.svg)](#{repository_url}/actions?workflow=Development)"
60
+ "[![Development Status](#{repository_url}/workflows/Test/badge.svg)](#{repository_url}/actions?workflow=Test)"
58
61
  end
59
62
 
60
63
  def badge?(node)
@@ -0,0 +1,100 @@
1
+
2
+ require 'console'
3
+
4
+ LICENSE = <<~LICENSE
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+ LICENSE
23
+
24
+ # @parameter root [String] The root directory to scan for changes.
25
+ def license
26
+ update(root: Dir.pwd)
27
+ end
28
+
29
+ def update(root:)
30
+ authors = self.authors(root)
31
+
32
+ buffer = StringIO.new
33
+ buffer.puts "# MIT License"
34
+ buffer.puts
35
+
36
+ authors.map do |author, dates|
37
+ years = dates.map(&:year).uniq
38
+
39
+ buffer.puts "Copyright, #{years.join('-')}, by #{author}."
40
+ end
41
+
42
+ buffer.puts
43
+ buffer.puts LICENSE
44
+
45
+ File.open("license.md", "w") do |file|
46
+ file.write(buffer.string)
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def authors(root)
53
+ paths = {}
54
+ authors = {}
55
+
56
+ total = `git rev-list --count HEAD`.to_i
57
+
58
+ input, output = IO.pipe
59
+ pid = Process.spawn("git", "log", "--name-only", "--pretty=format:%ad\t%an", out: output, chdir: root)
60
+
61
+ output.close
62
+
63
+ progress = Console.logger.progress(self, total)
64
+
65
+ while header = (input.readline.chomp rescue nil)
66
+ break if header.empty?
67
+ progress.increment
68
+
69
+ date, author = header.split("\t", 2)
70
+ date = Date.parse(date)
71
+
72
+ while path = (input.readline.chomp rescue nil)
73
+ break if path.empty?
74
+
75
+ paths[path] ||= {}
76
+ paths[path][author] ||= []
77
+ paths[path][author] << date
78
+
79
+ authors[author] ||= []
80
+ authors[author] << date
81
+ end
82
+ end
83
+
84
+ input.close
85
+ Process.wait2(pid)
86
+
87
+ paths.each do |path, authors|
88
+ authors.transform_values! do |dates|
89
+ dates.minmax
90
+ end
91
+ end
92
+
93
+ authors.transform_values! do |dates|
94
+ dates.minmax
95
+ end.to_a.sort_by! do |author, dates|
96
+ dates
97
+ end
98
+
99
+ return authors
100
+ end
@@ -0,0 +1,28 @@
1
+
2
+ require 'bake/modernize'
3
+ require 'build/files/system'
4
+
5
+ def readme
6
+ update(root: Dir.pwd)
7
+ end
8
+
9
+ def update(root:)
10
+ update_filenames(root)
11
+ end
12
+
13
+ private
14
+
15
+ def update_filenames(root)
16
+ root = Build::Files::Path.new(root)
17
+ md_files = root.glob("*.md")
18
+
19
+ # Move all .yml files to .yaml files :)
20
+ md_files.each do |path|
21
+ new_path = path.with(basename: path.basename.downcase)
22
+
23
+ unless new_path == path
24
+ Console.logger.info(self, "Moving #{path} to #{new_path}...")
25
+ system("git", "mv", "-f", path, new_path)
26
+ end
27
+ end
28
+ end
data/bake/modernize.rb CHANGED
@@ -1,4 +1,4 @@
1
1
 
2
2
  def modernize
3
- call('modernize:git', 'modernize:actions', 'modernize:editorconfig', 'modernize:gemfile', 'modernize:signing', 'modernize:gemspec')
3
+ call('modernize:git', 'modernize:readme', 'modernize:actions', 'modernize:editorconfig', 'modernize:gemfile', 'modernize:signing', 'modernize:gemspec', 'modernize:license')
4
4
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Bake
22
22
  module Modernize
23
- VERSION = "0.10.0"
23
+ VERSION = "0.12.0"
24
24
  end
25
25
  end
@@ -32,7 +32,7 @@ jobs:
32
32
 
33
33
  - name: Run tests
34
34
  timeout-minutes: 5
35
- run: bundle exec rspec
35
+ run: bundle exec bake test
36
36
 
37
37
  - uses: actions/upload-artifact@v2
38
38
  with:
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bake-modernize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -11,33 +11,34 @@ bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- MIIEhDCCAuygAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MTUwMwYDVQQDDCxzYW11
15
- ZWwud2lsbGlhbXMvREM9b3Jpb250cmFuc2Zlci9EQz1jby9EQz1uejAeFw0yMTA4
16
- MTYwNjMzNDRaFw0yMjA4MTYwNjMzNDRaMDcxNTAzBgNVBAMMLHNhbXVlbC53aWxs
17
- aWFtcy9EQz1vcmlvbnRyYW5zZmVyL0RDPWNvL0RDPW56MIIBojANBgkqhkiG9w0B
18
- AQEFAAOCAY8AMIIBigKCAYEAyXLSS/cw+fXJ5e7hi+U/TeChPWeYdwJojDsFY1xr
19
- xvtqbTTL8gbLHz5LW3QD2nfwCv3qTlw0qI3Ie7a9VMJMbSvgVEGEfQirqIgJXWMj
20
- eNMDgKsMJtC7u/43abRKx7TCURW3iWyR19NRngsJJmaR51yGGGm2Kfsr+JtKKLtL
21
- L188Wm3f13KAx7QJU8qyuBnj1/gWem076hzdA7xi1DbrZrch9GCRz62xymJlrJHn
22
- 9iZEZ7AxrS7vokhMlzSr/XMUihx/8aFKtk+tMLClqxZSmBWIErWdicCGTULXCBNb
23
- E/mljo4zEVKhlTWpJklMIhr55ZRrSarKFuW7en0+tpJrfsYiAmXMJNi4XAYJH7uL
24
- rgJuJwSaa/dMz+VmUoo7VKtSfCoOI+6v5/z0sK3oT6sG6ZwyI47DBq2XqNC6tnAj
25
- w+XmCywiTQrFzMMAvcA7rPI4F0nU1rZId51rOvvfxaONp+wgTi4P8owZLw0/j0m4
26
- 8C20DYi6EYx4AHDXiLpElWh3AgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8E
27
- BAMCBLAwHQYDVR0OBBYEFB6ZaeWKxQjGTI+pmz7cKRmMIywwMC4GA1UdEQQnMCWB
28
- I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWB
29
- I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEB
30
- CwUAA4IBgQBVoM+pu3dpdUhZM1w051iw5GfiqclAr1Psypf16Tiod/ho//4oAu6T
31
- 9fj3DPX/acWV9P/FScvqo4Qgv6g4VWO5ZU7z2JmPoTXZtYMunRAmQPFL/gSUc6aK
32
- vszMHIyhtyzRc6DnfW2AiVOjMBjaYv8xXZc9bduniRVPrLR4J7ozmGLh4o4uJp7w
33
- x9KCFaR8Lvn/r0oJWJOqb/DMAYI83YeN2Dlt3jpwrsmsONrtC5S3gOUle5afSGos
34
- bYt5ocnEpKSomR9ZtnCGljds/aeO1Xgpn2r9HHcjwnH346iNrnHmMlC7BtHUFPDg
35
- Ts92S47PTOXzwPBDsrFiq3VLbRjHSwf8rpqybQBH9MfzxGGxTaETQYOd6b4e4Ag6
36
- y92abGna0bmIEb4+Tx9rQ10Uijh1POzvr/VTH4bbIPy9FbKrRsIQ24qDbNJRtOpE
37
- RAOsIl+HOBTb252nx1kIRN5hqQx272AJCbCjKx8egcUQKffFVVCI0nye09v5CK+a
38
- HiLJ8VOFx6w=
14
+ MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
15
+ ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
16
+ CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
17
+ MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
18
+ MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
19
+ bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
20
+ igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
21
+ 9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
22
+ sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
23
+ e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
24
+ XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
25
+ RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
26
+ tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
27
+ zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
28
+ xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
29
+ BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
30
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
31
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
32
+ cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
33
+ xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
34
+ c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
35
+ 8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
36
+ JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
37
+ eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
38
+ Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
39
+ voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
39
40
  -----END CERTIFICATE-----
40
- date: 2022-08-06 00:00:00.000000000 Z
41
+ date: 2022-08-18 00:00:00.000000000 Z
41
42
  dependencies:
42
43
  - !ruby/object:Gem::Dependency
43
44
  name: async-http
@@ -135,6 +136,8 @@ files:
135
136
  - bake/modernize/gemfile.rb
136
137
  - bake/modernize/gemspec.rb
137
138
  - bake/modernize/git.rb
139
+ - bake/modernize/license.rb
140
+ - bake/modernize/readme.rb
138
141
  - bake/modernize/signing.rb
139
142
  - lib/bake/modernize.rb
140
143
  - lib/bake/modernize/version.rb
metadata.gz.sig CHANGED
Binary file