ordinare 0.3.0 → 0.4.0

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
  SHA1:
3
- metadata.gz: e8eefbe9b6d3f26de2734863db44c6545edbad95
4
- data.tar.gz: 3caea8639b118c3b4165a0d59921c9735cc72279
3
+ metadata.gz: 14a96df1b928e752b8e7e4f58dec45684cf7eeca
4
+ data.tar.gz: 82c1d5904834601be09a5b01559268f08e2a7791
5
5
  SHA512:
6
- metadata.gz: 3c8dc9e5021c9ed77f65a9da1822f34ba02bffe5e87de87a939f164ec423ba6b8d478e7c847f42c181a94de59f2a588e7d749aa817768848e3cbfd34f6187f5b
7
- data.tar.gz: 7ebb521a7018e5ea544837411ffd4c5ed6d5cf4289a183eb0db6a8ffe40f0ae74c7dee332829348fa43fa2466b0d0272ea89f4616aa8605508a44c5df03eb92e
6
+ metadata.gz: 7e174e6998ad43ae8c473edf8203c59e4527c1bb547059e67579735d591e071f8f105fa7538e4ff887086ac53b78884f2328a7be7ef266cbf618211d62ea1f2f
7
+ data.tar.gz: 163973763fce1b3e09c04a92e7c64c06f177e9e224e2b773083773cb50ba26723d3a52aa98a499740d7e8d0dbdef092507c7abec7d5e6477e386dcff65bce937
@@ -5,5 +5,5 @@ require "ordinare"
5
5
  if ARGV.size > 0
6
6
  Ordinare.parse_args
7
7
  else
8
- Ordinare.sort
8
+ Ordinare::Sort.sort_gemfile
9
9
  end
@@ -1,4 +1,6 @@
1
1
  require "ordinare/version"
2
+ require "ordinare/sort"
3
+ require "ordinare/check"
2
4
  require "optparse"
3
5
 
4
6
  module Ordinare
@@ -13,6 +15,7 @@ module Ordinare
13
15
  overwrite = true
14
16
  version = nil
15
17
  help = nil
18
+ check = nil
16
19
 
17
20
  OptionParser.new do |opts|
18
21
  opts.banner = "Usage: ordinare inside your Rails project"
@@ -27,6 +30,10 @@ module Ordinare
27
30
  overwrite = false
28
31
  end
29
32
 
33
+ opts.on("-c", "--check", "Check if Gemfile is sorted properly") do
34
+ check = true
35
+ end
36
+
30
37
  opts.on("-v", "--version", "Check gem version") do
31
38
  puts Ordinare::VERSION
32
39
  version = true
@@ -38,64 +45,13 @@ module Ordinare
38
45
  end
39
46
  end.parse!
40
47
 
41
- Ordinare.sort(overwrite, path) unless version || help
42
- end
43
-
44
- def sort(overwrite = true, path = "Gemfile")
45
- unless File.file?(path)
46
- abort("No Gemfile found in the current directory, is this a Rails project with Gemfile?")
47
- end
48
-
49
- content = File.readlines(path)
48
+ return if version || help
50
49
 
51
- ranges_to_sort = find_ranges_of_gems(content)
52
-
53
- ranges_to_sort.each do |range|
54
- content[range[:start_index]..range[:end_index]] =
55
- content[range[:start_index]..range[:end_index]].sort
56
- end
57
-
58
- path = "#{path}.ordinare" unless overwrite
59
-
60
- File.open(path, "w+") do |file|
61
- content.each { |line| file.puts(line) }
62
- end
63
-
64
- puts "Your sorted Gemfile can be found at #{path} path"
65
- end
66
-
67
- def find_ranges_of_gems(content)
68
- gems = content.each_with_index.map do |line, index|
69
- if line.strip.start_with?("gem ")
70
- index
71
- end
72
- end
73
-
74
- ranges_to_sort = []
75
- gems.each_with_index do |gem, index|
76
- current_range = if ranges_to_sort.last && !ranges_to_sort.last[:end_index]
77
- ranges_to_sort.last
78
- else
79
- { :start_index => nil, :end_index => nil }
80
- end
81
- start_index = current_range[:start_index]
82
- end_index = current_range[:end_index]
83
-
84
- if gem && !gems[index - 1] && gems[index + 1]
85
- current_range[:start_index] = index
86
- current_range[:end_index] = index if index == gems.length - 1
87
-
88
- ranges_to_sort << current_range unless ranges_to_sort.any? { |range| range[:start_index] == index }
89
- elsif gem && gems[index - 1] && !gems[index + 1]
90
- ranges_to_sort.map do |range|
91
- if range[:start_index] == start_index
92
- range[:end_index] = index
93
- end
94
-
95
- range
96
- end
97
- end
50
+ if check
51
+ Ordinare::Check.gemfile_sorted?(path)
52
+ else
53
+ puts path
54
+ Ordinare::Sort.sort_gemfile(overwrite, path)
98
55
  end
99
- ranges_to_sort
100
56
  end
101
57
  end
@@ -0,0 +1,28 @@
1
+ module Ordinare
2
+ class Check
3
+ def self.gemfile_sorted?(path = "Gemfile")
4
+ new(path).gemfile_sorted?
5
+ end
6
+
7
+ def initialize(path)
8
+ @path = path
9
+ end
10
+
11
+ def gemfile_sorted?
12
+ unless File.file?(@path)
13
+ abort "No Gemfile found in the current directory, is this a Rails project with Gemfile?"
14
+ end
15
+
16
+ ordered_content = Ordinare::Sort.sort_content(@path, File.readlines(@path))
17
+
18
+ read_content = File.readlines(@path)
19
+
20
+ if read_content == ordered_content
21
+ puts "Gemfile is sorted properly"
22
+ true
23
+ else
24
+ abort "Gemfile is not sorted"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,85 @@
1
+ module Ordinare
2
+ class Sort
3
+ def self.sort_gemfile(overwrite = true, path = "Gemfile")
4
+ new(overwrite, path).sort_gemfile
5
+ end
6
+
7
+ def self.sort_content(path = "Gemfile", content)
8
+ new(false, path).sort_content(content)
9
+ end
10
+
11
+ def initialize(overwrite, path)
12
+ @overwrite = overwrite
13
+ @read_path = path
14
+ @write_path = overwrite ? @read_path : "#{path}.ordinare"
15
+ end
16
+
17
+ def sort_gemfile
18
+ unless File.file?(@read_path)
19
+ abort "No Gemfile found in the current directory, is this a Rails project with Gemfile?"
20
+ end
21
+
22
+ read_content = File.readlines(@read_path)
23
+
24
+ ordered_content = sort_content(read_content)
25
+
26
+ write_to_a_file(ordered_content)
27
+ end
28
+
29
+ def sort_content(content)
30
+ ranges_to_sort = find_ranges_of_gems(content)
31
+
32
+ ranges_to_sort.each do |range|
33
+ content[range[:start_index]..range[:end_index]] =
34
+ content[range[:start_index]..range[:end_index]].sort
35
+ end
36
+
37
+ content
38
+ end
39
+
40
+ private
41
+
42
+ def find_ranges_of_gems(content)
43
+ gems = content.each_with_index.map do |line, index|
44
+ if line.strip.start_with?("gem ")
45
+ index
46
+ end
47
+ end
48
+
49
+ ranges_to_sort = []
50
+ gems.each_with_index do |gem, index|
51
+ current_range = if ranges_to_sort.last && !ranges_to_sort.last[:end_index]
52
+ ranges_to_sort.last
53
+ else
54
+ { :start_index => nil, :end_index => nil }
55
+ end
56
+ start_index = current_range[:start_index]
57
+ end_index = current_range[:end_index]
58
+
59
+ if gem && !gems[index - 1] && gems[index + 1]
60
+ current_range[:start_index] = index
61
+ current_range[:end_index] = index if index == gems.length - 1
62
+
63
+ ranges_to_sort << current_range unless ranges_to_sort.any? { |range| range[:start_index] == index }
64
+ elsif gem && gems[index - 1] && !gems[index + 1]
65
+ ranges_to_sort.map do |range|
66
+ if range[:start_index] == start_index
67
+ range[:end_index] = index
68
+ end
69
+
70
+ range
71
+ end
72
+ end
73
+ end
74
+ ranges_to_sort
75
+ end
76
+
77
+ def write_to_a_file(content)
78
+ File.open(@write_path, "w+") do |file|
79
+ content.each { |line| file.puts(line) }
80
+ end
81
+
82
+ puts "Your sorted Gemfile can be found at #{@write_path} path"
83
+ end
84
+ end
85
+ end
@@ -1,3 +1,3 @@
1
1
  module Ordinare
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ordinare
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Đuza
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-04 00:00:00.000000000 Z
11
+ date: 2017-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: codecov
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,6 +53,8 @@ extra_rdoc_files: []
39
53
  files:
40
54
  - bin/ordinare
41
55
  - lib/ordinare.rb
56
+ - lib/ordinare/check.rb
57
+ - lib/ordinare/sort.rb
42
58
  - lib/ordinare/version.rb
43
59
  homepage: https://github.com/nikolalsvk/ordinare
44
60
  licenses: