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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b468868e369e146c0f3411f67229197cdc0e74e9fe998ff38a5b2935f210770b
4
- data.tar.gz: 7d7cfea5c0665b4558aac3075aac8736598250766e51f8e2a96c86a73710c65d
3
+ metadata.gz: 3bbb2da387da89f3aa8d20fa2f2cf9702afb622942baa6b22b5a24aabfb4428f
4
+ data.tar.gz: ec482e572bb7ba237b30b7825a26139914a377e3bb5043a619540ee56d917ea8
5
5
  SHA512:
6
- metadata.gz: '028aab5c15effc590fb1ae02fad761a46d49eb547bc2bef1c769364d4a5522ae5bb221f1092c42dba4301e101d84016925c8cbc75bf02ab5d31fd5a91b549987'
7
- data.tar.gz: 14a73ce98cadb8bb26ba64b40cd6dc785b6b02ef86e751efb067d2b42fc42313ffab9ad0bb9b58227f672be68392afa78d127593ae77f15dce48e1f6a3cbbc6e
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'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UpdaterGf
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.2'
5
5
  end
data/lib/updater_gf.rb CHANGED
@@ -1,124 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "updater_gf/version"
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 find_gemfile_path
11
- current_dir = Dir.pwd
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.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - devhoanglv92
8
8
  autorequire:
9
- bindir: exe
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