happy_gemfile 0.0.1 → 0.1.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 +4 -4
- data/.gitignore +2 -0
- data/Gemfile +2 -1
- data/README.md +1 -1
- data/exe/happy_gemfile +14 -1
- data/lib/happy_gemfile/version.rb +1 -1
- data/lib/happy_gemfile.rb +83 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 842ccfc678031634380eae7674a29ae53bd57dc0
|
4
|
+
data.tar.gz: 029fa26f25c94fe0912900205352ccb3975f7acf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee5ca8fe9c199707be89c304a3daf17aeda1b4e805644c30d4e8b863e8e35ba10a371aa70eac416b9f7e8a80c4bf5cefe1c99fba885c07e454c1960364114d53
|
7
|
+
data.tar.gz: f74a25b5f1e79d77491e17f594b1850ca68862bcf2dd7664e1664cc85cfd10601e003ba97808f6dfecfa2841354cd46c1a2a6361b252efb7278f417e5df644c3
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/exe/happy_gemfile
CHANGED
@@ -2,4 +2,17 @@
|
|
2
2
|
|
3
3
|
require 'happy_gemfile'
|
4
4
|
|
5
|
-
|
5
|
+
if ARGV.empty?
|
6
|
+
puts "\nHey! I need some arguments here!\n\n"\
|
7
|
+
"You can run 'happy_gemfile all' for everything, or, if you don't trust me, you can pass any of these in:\n\n"\
|
8
|
+
"alphabetize - Organizes gems alphabetically\n"\
|
9
|
+
"wipe_comments - Removes all, non-inline comments\n"\
|
10
|
+
"organize_groups - Places everything tidily their specified group."
|
11
|
+
exit
|
12
|
+
end
|
13
|
+
|
14
|
+
gemfile = HappyGemfile.gemfile
|
15
|
+
|
16
|
+
%w(wipe_comments organize_groups alphabetize).each{|arg|gemfile = HappyGemfile.send(arg, gemfile) unless [arg, 'all'] - ARGV == [arg, 'all']}
|
17
|
+
|
18
|
+
HappyGemfile.replace_gemfile gemfile
|
data/lib/happy_gemfile.rb
CHANGED
@@ -1,21 +1,16 @@
|
|
1
1
|
require "happy_gemfile/version"
|
2
2
|
|
3
3
|
module HappyGemfile
|
4
|
+
def self.alphabetize lines=nil
|
4
5
|
|
5
|
-
|
6
|
-
unless File.exists? "Gemfile"
|
7
|
-
puts "There doesn't appear to be a Gemfile... not sure what to do."
|
8
|
-
return false
|
9
|
-
end
|
10
|
-
|
11
|
-
lines = File.readlines "Gemfile"
|
6
|
+
lines ||= gemfile
|
12
7
|
gem_groups = [[]]
|
13
8
|
gem_indexes = [[]]
|
14
9
|
group_count = 0
|
15
10
|
in_group = false
|
16
11
|
|
17
12
|
lines.each_with_index do |line, index|
|
18
|
-
if line
|
13
|
+
if is?(line, 'gem')
|
19
14
|
unless in_group
|
20
15
|
gem_groups[0] << line
|
21
16
|
gem_indexes[0] << index
|
@@ -23,12 +18,12 @@ module HappyGemfile
|
|
23
18
|
gem_groups[group_count] << line
|
24
19
|
gem_indexes[group_count] << index
|
25
20
|
end
|
26
|
-
elsif line
|
21
|
+
elsif is?(line, 'group')
|
27
22
|
in_group = true
|
28
23
|
group_count += 1
|
29
24
|
gem_groups << []
|
30
25
|
gem_indexes << []
|
31
|
-
elsif
|
26
|
+
elsif is? line, 'end'
|
32
27
|
in_group = false
|
33
28
|
end
|
34
29
|
end
|
@@ -39,6 +34,84 @@ module HappyGemfile
|
|
39
34
|
end
|
40
35
|
end
|
41
36
|
|
37
|
+
lines
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.wipe_comments lines=nil
|
41
|
+
lines ||= gemfile
|
42
|
+
lines.delete_if{|line| is_comment?(line)}
|
43
|
+
lines
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.organize_groups lines=nil
|
47
|
+
lines ||= gemfile
|
48
|
+
groups = {general: []}
|
49
|
+
current_group = :general
|
50
|
+
lines.each do |line|
|
51
|
+
if is? line, 'gem'
|
52
|
+
groups[current_group] << line.gsub("\n", '')
|
53
|
+
elsif is? line, 'group'
|
54
|
+
current_group = group_name line
|
55
|
+
groups[current_group] ||= []
|
56
|
+
elsif is? line, 'end'
|
57
|
+
current_group = :general
|
58
|
+
else
|
59
|
+
groups[:not_gems] ||= []
|
60
|
+
groups[:not_gems] << line.gsub("\n", '')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
groups.each {|key, lines| lines.delete_if {|line| ["\n", ''].include? line} }
|
65
|
+
|
66
|
+
organized = []
|
67
|
+
|
68
|
+
groups[:not_gems].each {|line| organized << line << "\n"}
|
69
|
+
|
70
|
+
organized << "\n"
|
71
|
+
|
72
|
+
groups[:general].each {|line| organized << line << "\n"}
|
73
|
+
|
74
|
+
organized << "\n"
|
75
|
+
|
76
|
+
(groups.keys - [:general, :not_gems]).each do |group|
|
77
|
+
organized << "group #{group_line(group)} do" << "\n"
|
78
|
+
groups[group].each {|line| organized << "#{line}" << "\n"}
|
79
|
+
organized << 'end' << "\n\n"
|
80
|
+
end
|
81
|
+
organized
|
82
|
+
end
|
83
|
+
|
84
|
+
# HELPERS
|
85
|
+
|
86
|
+
def self.is_comment? line
|
87
|
+
is? line, '#'
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.is? line, type
|
91
|
+
line.split(' ').first == type
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.group_name line
|
95
|
+
line.match(/group(.*)do/)
|
96
|
+
.to_a[1]
|
97
|
+
.strip.gsub(', ', '_')
|
98
|
+
.gsub(':', '')
|
99
|
+
.to_sym
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.group_line group
|
103
|
+
group.to_s.split('_').map{|g| ":#{g}"}.join(', ')
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.gemfile
|
107
|
+
unless File.exists? "Gemfile"
|
108
|
+
puts "There doesn't appear to be a Gemfile... not sure what to do."
|
109
|
+
return false
|
110
|
+
end
|
111
|
+
File.readlines "Gemfile"
|
112
|
+
end
|
113
|
+
|
114
|
+
def self.replace_gemfile lines
|
42
115
|
File.open("Gemfile", 'w') { |file| file.write(lines.join('')) }
|
43
116
|
end
|
44
117
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happy_gemfile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MainShayne233
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|