bake-modernize 0.1.4 → 0.4.1

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: a43c383bb9baa39b723d9e32328b95221dc92d9dd71addf4aa535e4f07bd8059
4
- data.tar.gz: 15488c3b2641443ab69909e139faa43d8cba0c6b4f71653d0cf6775faf8f1c1d
3
+ metadata.gz: 904b0280bd4e281dc69bbf777b3705803211314ca3f0bf35b28a2790f6674e87
4
+ data.tar.gz: aa494bb27e8337d9542da21d018311e45aa8e9052f6dbc686bcc3c6cacfdb19b
5
5
  SHA512:
6
- metadata.gz: 3588ead1b3bbf41dd6f2760e6cc5e1be7758afabab578ca26b73802a73b115b05699a8e9d1ca68ef3cca58bc3b8ab67f83222764260d28a7dc3a7f074697c08d
7
- data.tar.gz: 7dd515852d76b609a5c47171b7071b7073046b24982c3ecad478bfd07d78170877a6fd638707eabac444e171fa2d6c1765767d8cda8512d1f7fbf68e9cab845c
6
+ metadata.gz: 65ff2a4ede12154d09745c87aa3838f03b62e4fe3d5d59b55976229045b183395a97dcd9937b3b008cd60d0e89ca71f2609eafd1958688fe8d7473f311f2e8f9
7
+ data.tar.gz: 1aa50ca6b9ca112a3e5b7450ec912dc377900c1027bee30647539d73c3daca95c5c0ad1925ebedddf618b2d36e6f4242cb7a48793fa60244ec02b1a6fcd0804a
@@ -1,4 +1,4 @@
1
1
 
2
2
  def modernize
3
- call('modernize:actions', 'modernize:gemfile', 'modernize:gemspec')
3
+ call('modernize:actions', 'modernize:editorconfig', 'modernize:gemfile', 'modernize:gemspec')
4
4
  end
@@ -1,5 +1,7 @@
1
1
 
2
2
  require 'bake/modernize'
3
+ require 'rugged'
4
+ require 'markly'
3
5
 
4
6
  def actions
5
7
  update(root: Dir.pwd)
@@ -14,4 +16,58 @@ def update(root:)
14
16
 
15
17
  template_root = Bake::Modernize.template_path_for('actions')
16
18
  Bake::Modernize.copy_template(template_root, root)
19
+
20
+ readme_path = File.expand_path("README.md", root)
21
+ repository_url = self.repository_url(root)
22
+ self.update_badges(readme_path, repository_url)
23
+ end
24
+
25
+ private
26
+
27
+ def repository_url(root)
28
+ repository = Rugged::Repository.discover(root)
29
+ git_url = repository.remotes['origin'].url
30
+
31
+ if match = git_url.match(/@(?<url>.*?):(?<path>.*?)(\.git)?\z/)
32
+ return "https://#{match[:url]}/#{match[:path]}"
33
+ end
34
+ end
35
+
36
+ def badge_for(repository_url = self.repository_url)
37
+ "[![Development Status](#{repository_url}/workflows/Development/badge.svg)](#{repository_url}/actions?workflow=Development)"
38
+ end
39
+
40
+ def badge?(node)
41
+ return false unless node.type == :link
42
+ return node.all?{|child| child.type == :image}
43
+ end
44
+
45
+ def badges?(node)
46
+ node.any?{|child| badge?(child)}
47
+ end
48
+
49
+ def update_badges(readme_path, repository_url)
50
+ root = Markly.parse(File.read(readme_path))
51
+
52
+ node = root.first_child
53
+
54
+ # Skip heading:
55
+ node = node.next if node.type == :header
56
+
57
+ replacement = Markly.parse(badge_for(repository_url))
58
+
59
+ # We are looking for the first paragraph which contains only links, which contain one image.
60
+ while node
61
+ if badges?(node)
62
+ node = node.replace(replacement.first_child)
63
+ break
64
+ elsif node.type == :header
65
+ node.insert_before(replacement.first_child)
66
+ break
67
+ end
68
+
69
+ node = node.next
70
+ end
71
+
72
+ File.write(readme_path, root.to_markdown(width: 0))
17
73
  end
@@ -0,0 +1,17 @@
1
+
2
+ require 'bake/modernize'
3
+
4
+ def editorconfig
5
+ update(root: Dir.pwd)
6
+ end
7
+
8
+ def update(root:)
9
+ editorconfig_path = File.expand_path(".editorconfig", root)
10
+
11
+ if File.exist?(editorconfig_path)
12
+ FileUtils.rm_rf(editorconfig_path)
13
+ end
14
+
15
+ template_root = Bake::Modernize.template_path_for('editorconfig')
16
+ Bake::Modernize.copy_template(template_root, root)
17
+ end
@@ -70,8 +70,10 @@ def update(path: self.default_gemspec_path, output: $stdout)
70
70
  end
71
71
 
72
72
  if required_ruby_version = spec.required_ruby_version
73
- output.puts
74
- output.puts "\tspec.required_ruby_version = #{required_ruby_version.to_s.inspect}"
73
+ unless required_ruby_version.none?
74
+ output.puts "\t"
75
+ output.puts "\tspec.required_ruby_version = #{required_ruby_version.to_s.inspect}"
76
+ end
75
77
  end
76
78
 
77
79
  if spec.dependencies.any?
@@ -107,7 +109,7 @@ def directory_glob_for(spec, paths = spec.files)
107
109
  end
108
110
  end
109
111
 
110
- return "Dir['{#{directories.keys.join(',')}}/**/*', base: __dir__]"
112
+ return "Dir.glob('{#{directories.keys.join(',')}}/**/*', File::FNM_DOTMATCH, base: __dir__)"
111
113
  end
112
114
 
113
115
  def format_dependency(dependency)
@@ -155,7 +157,7 @@ end
155
157
  GITHUB_PROJECT = /github.com\/(?<account>.*?)\/(?<project>.*?)\/?/
156
158
 
157
159
  def detect_funding_uri(spec)
158
- if match = spec.homepage.match(GITHUB_PROJECT)
160
+ if match = spec.homepage&.match(GITHUB_PROJECT)
159
161
  account = match[:account]
160
162
 
161
163
  funding_uri = "https://github.com/sponsors/#{account}/"
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Bake
22
22
  module Modernize
23
- VERSION = "0.1.4"
23
+ VERSION = "0.4.1"
24
24
  end
25
25
  end
@@ -0,0 +1,46 @@
1
+ name: Development
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ${{matrix.os}}-latest
8
+ continue-on-error: ${{matrix.experimental}}
9
+
10
+ strategy:
11
+ matrix:
12
+ os:
13
+ - ubuntu
14
+ - macos
15
+
16
+ ruby:
17
+ - 2.5
18
+ - 2.6
19
+ - 2.7
20
+
21
+ experimental: [false]
22
+ env: [""]
23
+
24
+ include:
25
+ - os: ubuntu
26
+ ruby: truffleruby
27
+ experimental: true
28
+ - os: ubuntu
29
+ ruby: jruby
30
+ experimental: true
31
+ - os: ubuntu
32
+ ruby: head
33
+ experimental: true
34
+
35
+ steps:
36
+ - uses: actions/checkout@v2
37
+ - uses: ruby/setup-ruby@v1
38
+ with:
39
+ ruby-version: ${{matrix.ruby}}
40
+
41
+ - name: Install dependencies
42
+ run: ${{matrix.env}} bundle install
43
+
44
+ - name: Run tests
45
+ timeout-minutes: 5
46
+ run: ${{matrix.env}} bundle exec rspec
@@ -0,0 +1,5 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = tab
5
+ indent_size = 2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bake-modernize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-29 00:00:00.000000000 Z
11
+ date: 2020-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-http
@@ -53,7 +53,35 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bake-bundler
56
+ name: markly
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rugged
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - ">="
@@ -66,33 +94,36 @@ dependencies:
66
94
  - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
- description:
70
- email:
97
+ description:
98
+ email:
71
99
  executables: []
72
100
  extensions: []
73
101
  extra_rdoc_files: []
74
102
  files:
75
103
  - bake/modernize.rb
76
104
  - bake/modernize/actions.rb
105
+ - bake/modernize/editorconfig.rb
77
106
  - bake/modernize/gemfile.rb
78
107
  - bake/modernize/gemspec.rb
79
108
  - lib/bake/modernize.rb
80
109
  - lib/bake/modernize/version.rb
110
+ - template/actions/.github/workflows/development.yml
111
+ - template/editorconfig/.editorconfig
81
112
  - template/readme/README.md
82
113
  homepage: https://github.com/ioquatix/bake-modernize
83
114
  licenses:
84
115
  - MIT
85
116
  metadata:
86
117
  funding_uri: https://github.com/sponsors/ioquatix/
87
- post_install_message:
118
+ post_install_message:
88
119
  rdoc_options: []
89
120
  require_paths:
90
121
  - lib
91
122
  required_ruby_version: !ruby/object:Gem::Requirement
92
123
  requirements:
93
- - - "~>"
124
+ - - ">="
94
125
  - !ruby/object:Gem::Version
95
- version: '2.5'
126
+ version: '0'
96
127
  required_rubygems_version: !ruby/object:Gem::Requirement
97
128
  requirements:
98
129
  - - ">="
@@ -100,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
131
  version: '0'
101
132
  requirements: []
102
133
  rubygems_version: 3.1.2
103
- signing_key:
134
+ signing_key:
104
135
  specification_version: 4
105
136
  summary: Automatically modernize parts of your project/gem.
106
137
  test_files: []