label 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.
data/README.md CHANGED
@@ -1,29 +1,37 @@
1
1
  # Label
2
2
 
3
- TODO: Write a gem description
3
+ Label labels the gems in your Gemfile.
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
7
+ $ gem install label
8
8
 
9
- gem 'label'
9
+ ## Usage
10
10
 
11
- And then execute:
11
+ $ cd /path/to/Gemfile
12
+ $ label
12
13
 
13
- $ bundle
14
+ ```ruby
15
+ # /path/to/Gemfile
14
16
 
15
- Or install it yourself as:
17
+ source 'http://rubygems.org'
16
18
 
17
- $ gem install label
19
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
20
+ gem 'rails', '4.0.0'
18
21
 
19
- ## Usage
22
+ # Flexible authentication solution for Rails with Warden
23
+ gem 'devise'
24
+
25
+ # Upload files in your Ruby applications, map them to a range of ORMs, store
26
+ # them on different backends.
27
+ gem 'carrierwave'
20
28
 
21
- TODO: Write usage instructions here
29
+ # RailsAdmin is a Rails engine that provides an easy-to-use interface for
30
+ # managing your data.
31
+ gem 'rails_admin'
32
+ ```
22
33
 
23
- ## Contributing
34
+ ## I love you
24
35
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
36
+ Johannes Gorset made this. You should [tweet me](http://twitter.com/jgorset) if you can't get
37
+ it to work. In fact, you should tweet me anyway.
data/bin/label ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "label"
4
+
5
+ Label.label
data/label.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Johannes Gorset"]
10
10
  spec.email = ["jgorset@gmail.com"]
11
11
  spec.description = "Labels gems in your Gemfile"
12
- spec.summary = "Label labels the gems in your Gemfie"
12
+ spec.summary = "Label labels the gems in your Gemfile"
13
13
  spec.homepage = "https://github.com/jgorset/label"
14
14
  spec.license = "MIT"
15
15
 
@@ -18,6 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "gems", "~> 0.8"
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.3"
22
24
  spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
23
26
  end
data/lib/label.rb CHANGED
@@ -1,5 +1,71 @@
1
1
  require "label/version"
2
+ require "optparse"
3
+ require "ostruct"
4
+ require "gems"
2
5
 
3
6
  module Label
4
- # Your code goes here...
7
+
8
+ class << self
9
+
10
+ def label
11
+ output = process "Gemfile"
12
+
13
+ write "Gemfile", output
14
+ end
15
+
16
+ # Process the given Gemfile.
17
+ #
18
+ # gemfile - A String describing the path to a Gemfile.
19
+ def process gemfile
20
+ file = read gemfile
21
+
22
+ lines = file.read.split "\n"
23
+
24
+ processed_lines = []
25
+
26
+ lines.each_with_index do |line, i|
27
+ gem = line[/gem ['"](.+)['"]/, 1]
28
+
29
+ if gem
30
+ previous_line = lines[i - 1]
31
+
32
+ unless previous_line.start_with? "#"
33
+ processed_lines << "# #{describe gem}"
34
+ end
35
+ end
36
+
37
+ processed_lines << line
38
+ end
39
+
40
+ processed_lines.join("\n") + "\n"
41
+ end
42
+
43
+ # Read the given file.
44
+ #
45
+ # file - A String describing the path to a file.
46
+ def read file
47
+ File.open file
48
+ end
49
+
50
+ # Write to the given file.
51
+ #
52
+ # file - A String describing the path to a file.
53
+ # text - A String describing text to be written.
54
+ def write file, text
55
+ File.open file, "w" do |file|
56
+ file.write text
57
+ end
58
+ end
59
+
60
+ # Describe the given gem.
61
+ #
62
+ # gem - A String describing the name of a gem.
63
+ #
64
+ # Returns a String.
65
+ def describe gem
66
+ Gems.info(gem).fetch "info"
67
+ end
68
+
69
+ end
70
+
5
71
  end
data/lib/label/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Label
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Flexible authentication solution for Rails with Warden
4
+ gem 'devise'
5
+
6
+ # Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends.
7
+ gem 'carrierwave'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Authentication
4
+ gem 'devise'
5
+
6
+ # Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends.
7
+ gem 'carrierwave'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Authentication
4
+ gem 'devise'
5
+
6
+ gem 'carrierwave'
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ describe Label do
4
+ describe "#process" do
5
+ it "should label unlabelled gems" do
6
+ expect(File).to receive(:open).with("Gemfile").and_return(StringIO.new fixture("stock_gemfile"))
7
+
8
+ expect(subject.process("Gemfile")).to eq fixture("processed_gemfile")
9
+ end
10
+ end
11
+
12
+ describe "#describe" do
13
+ it "should describe a given gem" do
14
+ expect(Gems).to receive(:info).with("label").and_return("info" => "Label gems in your Gemfile")
15
+
16
+ expect(subject.describe("label")).to eq "Label gems in your Gemfile"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ require "label"
2
+
3
+ def fixture file
4
+ File.read "spec/fixtures/#{file}"
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: label
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,6 +11,22 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2013-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: gems
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.8'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.8'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: bundler
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -43,10 +59,27 @@ dependencies:
43
59
  - - ! '>='
44
60
  - !ruby/object:Gem::Version
45
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
46
78
  description: Labels gems in your Gemfile
47
79
  email:
48
80
  - jgorset@gmail.com
49
- executables: []
81
+ executables:
82
+ - label
50
83
  extensions: []
51
84
  extra_rdoc_files: []
52
85
  files:
@@ -55,9 +88,15 @@ files:
55
88
  - LICENSE.txt
56
89
  - README.md
57
90
  - Rakefile
91
+ - bin/label
58
92
  - label.gemspec
59
93
  - lib/label.rb
60
94
  - lib/label/version.rb
95
+ - spec/fixtures/forced_processed_gemfile
96
+ - spec/fixtures/processed_gemfile
97
+ - spec/fixtures/stock_gemfile
98
+ - spec/label_spec.rb
99
+ - spec/spec_helper.rb
61
100
  homepage: https://github.com/jgorset/label
62
101
  licenses:
63
102
  - MIT
@@ -73,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
112
  version: '0'
74
113
  segments:
75
114
  - 0
76
- hash: -4299498849003829426
115
+ hash: -1622466383723177347
77
116
  required_rubygems_version: !ruby/object:Gem::Requirement
78
117
  none: false
79
118
  requirements:
@@ -82,11 +121,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
121
  version: '0'
83
122
  segments:
84
123
  - 0
85
- hash: -4299498849003829426
124
+ hash: -1622466383723177347
86
125
  requirements: []
87
126
  rubyforge_project:
88
127
  rubygems_version: 1.8.23
89
128
  signing_key:
90
129
  specification_version: 3
91
- summary: Label labels the gems in your Gemfie
92
- test_files: []
130
+ summary: Label labels the gems in your Gemfile
131
+ test_files:
132
+ - spec/fixtures/forced_processed_gemfile
133
+ - spec/fixtures/processed_gemfile
134
+ - spec/fixtures/stock_gemfile
135
+ - spec/label_spec.rb
136
+ - spec/spec_helper.rb