updater_gf 0.1.0 → 0.1.2
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 +4 -4
- data/bin/updater_gf +17 -0
- data/lib/updater_gf/version.rb +1 -1
- data/lib/updater_gf.rb +6 -114
- data/updater_gf.gemspec +3 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bbb2da387da89f3aa8d20fa2f2cf9702afb622942baa6b22b5a24aabfb4428f
|
4
|
+
data.tar.gz: ec482e572bb7ba237b30b7825a26139914a377e3bb5043a619540ee56d917ea8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 443c3cecf68988b0e838e2298fc87a8ac296cc6534fee444410309153f18ebcfcd58eccf2b6adf40a68a1a5bfa9225ccb4d983b22ed8f3e3881f95d612f8cbd0
|
7
|
+
data.tar.gz: a48e2e61505a16f6020d8a5b98af9ccb080e7f6ef035ef4fd191f21359b4578f016903aedfde8ca7525642778a35b317c165645f28724dae3c508df35491f5bc
|
data/bin/updater_gf
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'updater_gf'
|
6
|
+
|
7
|
+
# Run the updater
|
8
|
+
puts 'Running the updater gemfile'
|
9
|
+
if ARGV.length > 2
|
10
|
+
puts 'accepts only 2 parameters at most:'
|
11
|
+
puts '-a and -r'
|
12
|
+
puts "'-a' will add commonly used gems"
|
13
|
+
puts "'-r' will update robocop file"
|
14
|
+
exit
|
15
|
+
end
|
16
|
+
UpdaterGf::Updater.run(ARGV[0], ARGV[1])
|
17
|
+
puts 'Finished running the updater gemfile'
|
data/lib/updater_gf/version.rb
CHANGED
data/lib/updater_gf.rb
CHANGED
@@ -1,124 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
|
3
|
+
require_relative 'updater_gf/version'
|
4
|
+
require_relative 'updater_gf/constants'
|
5
|
+
require_relative 'updater_gf/handle_update'
|
5
6
|
module UpdaterGf
|
6
7
|
class Error < StandardError; end
|
7
8
|
|
9
|
+
# class Updater
|
8
10
|
class Updater
|
9
11
|
class << self
|
10
|
-
def
|
11
|
-
|
12
|
-
|
13
|
-
until File.exist?(File.join(current_dir, 'Gemfile'))
|
14
|
-
parent_dir = File.expand_path('..', current_dir)
|
15
|
-
break if current_dir == parent_dir # Reached the root directory
|
16
|
-
|
17
|
-
current_dir = parent_dir
|
18
|
-
end
|
19
|
-
|
20
|
-
gemfile_path = File.join(current_dir, 'Gemfile')
|
21
|
-
raise Error, 'Gemfile not found' unless File.exist?(gemfile_path)
|
22
|
-
|
23
|
-
gemfile_path
|
24
|
-
end
|
25
|
-
|
26
|
-
def update_gemfile
|
27
|
-
gemfile_path = find_gemfile_path
|
28
|
-
content = File.read(gemfile_path)
|
29
|
-
|
30
|
-
# Replace all double quotes with single quotes
|
31
|
-
updated_content = content.gsub(/"/, "'")
|
32
|
-
|
33
|
-
final_content = update_final_content(updated_content)
|
34
|
-
|
35
|
-
File.write(gemfile_path, final_content)
|
36
|
-
end
|
37
|
-
|
38
|
-
def update_final_content(updated_content)
|
39
|
-
lines = updated_content.lines
|
40
|
-
group_test_end_index = find_group_test_end_index(lines)
|
41
|
-
return updated_content if group_test_end_index.nil?
|
42
|
-
|
43
|
-
below_group_test_lines = lines[(group_test_end_index + 1)..]
|
44
|
-
other_lines = get_other_lines(below_group_test_lines)
|
45
|
-
sorted_gem_lines = sorted_gem_lines(below_group_test_lines)
|
46
|
-
final_lines = lines[0..group_test_end_index] + other_lines + sorted_gem_lines
|
47
|
-
|
48
|
-
# Add gems from list_gems_add if not already present
|
49
|
-
final_lines += add_missing_gems(final_lines, list_gems_add)
|
50
|
-
|
51
|
-
# Sort gem lines alphabetically after adding new gems, but only those after the group :test block
|
52
|
-
final_lines = sort_gem_lines_after_test_block(final_lines, group_test_end_index)
|
53
|
-
|
54
|
-
# Add gems from list_gems_add_develop to group :development if not already present
|
55
|
-
final_lines = add_gems_to_development_group(final_lines, list_gems_add_develop)
|
56
|
-
|
57
|
-
final_lines.join
|
58
|
-
end
|
59
|
-
|
60
|
-
def find_group_test_end_index(lines)
|
61
|
-
group_test_start_index = lines.index { |line| line.strip == 'group :test do' }
|
62
|
-
return nil if group_test_start_index.nil?
|
63
|
-
|
64
|
-
group_test_end_index = lines[group_test_start_index..].index { |line| line.strip == 'end' }
|
65
|
-
return nil if group_test_end_index.nil?
|
66
|
-
|
67
|
-
group_test_start_index + group_test_end_index
|
68
|
-
end
|
69
|
-
|
70
|
-
def sorted_gem_lines(below_group_test_lines)
|
71
|
-
get_gem_lines(below_group_test_lines).sort_by { |line| line.match(/gem '([^']+)'/)[1] }
|
72
|
-
end
|
73
|
-
|
74
|
-
def get_gem_lines(below_group_test_lines)
|
75
|
-
below_group_test_lines.select { |line| line.strip.start_with?("gem '") && !line.strip.start_with?('#') }
|
76
|
-
end
|
77
|
-
|
78
|
-
def get_other_lines(below_group_test_lines)
|
79
|
-
below_group_test_lines.reject { |line| line.strip.start_with?("gem '") && !line.strip.start_with?('#') }
|
80
|
-
end
|
81
|
-
|
82
|
-
def add_missing_gems(final_lines, gems_list)
|
83
|
-
existing_gems = final_lines.select { |line| line.strip.start_with?("gem '") }.map { |line| line.match(/gem '([^']+)'/)[1] }
|
84
|
-
missing_gems = gems_list - existing_gems
|
85
|
-
missing_gems.map { |gem| "gem '#{gem}'\n" }
|
86
|
-
end
|
87
|
-
|
88
|
-
def sort_gem_lines_after_test_block(final_lines, group_test_end_index)
|
89
|
-
lines_after_test_block = final_lines[(group_test_end_index + 1)..]
|
90
|
-
gem_lines = lines_after_test_block.select { |line| line.strip.start_with?("gem '") }
|
91
|
-
other_lines = lines_after_test_block.reject { |line| line.strip.start_with?("gem '") }
|
92
|
-
sorted_gem_lines = gem_lines.sort_by { |line| line.match(/gem '([^']+)'/)[1] }
|
93
|
-
final_lines[0..group_test_end_index] + other_lines + sorted_gem_lines
|
94
|
-
end
|
95
|
-
|
96
|
-
def add_gems_to_development_group(final_lines, gems_list)
|
97
|
-
development_group_start_index = final_lines.index { |line| line.strip == 'group :development do' }
|
98
|
-
return final_lines if development_group_start_index.nil?
|
99
|
-
|
100
|
-
development_group_end_index = final_lines[development_group_start_index..].index { |line| line.strip == 'end' }
|
101
|
-
return final_lines if development_group_end_index.nil?
|
102
|
-
|
103
|
-
development_group_end_index += development_group_start_index
|
104
|
-
|
105
|
-
development_group_lines = final_lines[(development_group_start_index + 1)...development_group_end_index]
|
106
|
-
existing_gems = development_group_lines.select { |line| line.strip.start_with?("gem '") }.map { |line| line.match(/gem '([^']+)'/)[1] }
|
107
|
-
missing_gems = gems_list - existing_gems
|
108
|
-
new_gem_lines = missing_gems.map { |gem| " gem '#{gem}'\n" }
|
109
|
-
|
110
|
-
final_lines[0..development_group_start_index] +
|
111
|
-
development_group_lines +
|
112
|
-
new_gem_lines +
|
113
|
-
final_lines[development_group_end_index..]
|
114
|
-
end
|
115
|
-
|
116
|
-
def list_gems_add
|
117
|
-
%w[ransack devise pagy pundit rack-cors redis sidekiq draper paranoia active_admin]
|
118
|
-
end
|
119
|
-
|
120
|
-
def list_gems_add_develop
|
121
|
-
%w[pry letter_opener bullet better_errors binding_of_caller]
|
12
|
+
def run(add_gem = '', add_robocop = '')
|
13
|
+
HandleUpdate.new(add_gem == '-a', add_robocop == '-r').process
|
122
14
|
end
|
123
15
|
end
|
124
16
|
end
|
data/updater_gf.gemspec
CHANGED
@@ -28,9 +28,10 @@ Gem::Specification.new do |spec|
|
|
28
28
|
f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
|
29
29
|
end
|
30
30
|
end
|
31
|
-
spec.bindir = 'exe'
|
32
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
31
|
+
# spec.bindir = 'exe'
|
32
|
+
# spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
33
33
|
spec.require_paths = ['lib']
|
34
|
+
spec.executables << 'updater_gf'
|
34
35
|
|
35
36
|
# Uncomment to register a new dependency of your gem
|
36
37
|
# spec.add_dependency "example-gem", "~> 1.0"
|
metadata
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: updater_gf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- devhoanglv92
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2024-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: update Gemfile and clean code file by updater_gf
|
14
14
|
email:
|
15
15
|
- devhoanglv92@gmail.com
|
16
|
-
executables:
|
16
|
+
executables:
|
17
|
+
- updater_gf
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
@@ -22,6 +23,7 @@ files:
|
|
22
23
|
- LICENSE.txt
|
23
24
|
- README.md
|
24
25
|
- Rakefile
|
26
|
+
- bin/updater_gf
|
25
27
|
- lib/updater_gf.rb
|
26
28
|
- lib/updater_gf/version.rb
|
27
29
|
- sig/updater_gf.rbs
|