gemfile2opml 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3c81a963add8f1fa1d0fcc9053ec9eb6e39fc91e
4
+ data.tar.gz: 470b7c041d78829721cf46c3766fa820848287ea
5
+ SHA512:
6
+ metadata.gz: 5c96ee50fbca48eeebb501c2dc40a13684cbb2b79a8f0a8361a3f80c4392c84f9ed9f2dfb335476b7cc4fe4de2d224f4ade146ffecb8b5569f036b81ca6c57f0
7
+ data.tar.gz: 17cbc868fddcbfc755d7e6e8890383b49272b114a4389ae7dd583b0ad505c79195458dc94b412d37654a5aa4af03d5c3c5f5d262f13446db0fe9a5f96f6070b8
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.10.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gemfile2opml.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # Gemfile2opml
2
+
3
+ Gemfile2opml generates OPML from Gemfile or gemspec.
4
+ This is useful for subscribe your depending libraries.
5
+
6
+ ## Installation
7
+
8
+ Gemfile2opml is a command-line tool.
9
+
10
+ ```
11
+ % gem install gemfile2opml
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ```
17
+ % gemfile2opml PATH_TO_GEMFILE > a.opml
18
+ ```
19
+
20
+ or,
21
+
22
+ ```
23
+ % gemfile2opml PATH_TO_GEMSPEC > a.opml
24
+ ```
25
+
26
+ Then, subscribe OPML file with your favorite feed reader.
27
+
28
+ ## Development
29
+
30
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
31
+
32
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
33
+
34
+ ## Contributing
35
+
36
+ Bug reports and pull requests are welcome on GitHub at https://github.com/hitode909/gemfile2opml.
37
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "gemfile2opml"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/exe/gemfile2opml ADDED
@@ -0,0 +1,8 @@
1
+ #!ruby
2
+
3
+ lib = File.expand_path('../../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
6
+ require 'gemfile2opml'
7
+
8
+ Gemfile2opml.run(STDOUT, ARGV)
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'gemfile2opml/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "gemfile2opml"
8
+ spec.version = Gemfile2opml::VERSION
9
+ spec.authors = ["hitode909"]
10
+ spec.email = ["hitode909@gmail.com"]
11
+
12
+ spec.summary = %q{Generate OPML from Gemfile}
13
+ spec.description = %q{gemfile2opml is a command line tool which generates OPML from Gemfile. You can subscribe libraries' update on your favorite feed reader.}
14
+ spec.homepage = "https://github.com/hitode909/gemfile2opml"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "gemnasium-parser", "~> 0.1.9"
22
+ spec.add_dependency "nokogiri", "~> 1.6.6.2"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.10"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ end
@@ -0,0 +1,55 @@
1
+ require 'gemnasium/parser'
2
+ require 'nokogiri'
3
+
4
+ class Gemfile2opml::Converter
5
+ def convert(file)
6
+
7
+ gemfile = Gemnasium::Parser.gemfile(open(file).read)
8
+
9
+ gemspec = Gemnasium::Parser.gemspec(open(file).read)
10
+
11
+ dependencies = [*gemfile.dependencies, *gemspec.dependencies]
12
+
13
+ targets = generate_targets(dependencies)
14
+
15
+ opml = Nokogiri::XML::Builder.new {|xml|
16
+ xml.opml(:version => '2.0') {
17
+ xml.head {|head|
18
+ head.title generate_title(file)
19
+ }
20
+ xml.body {|body|
21
+ targets.keys.map {|target|#string
22
+ body.outline(title: target) {|outline|
23
+ targets[target].map {|name|#string
24
+ outline.outline(
25
+ title: name,
26
+ htmlUrl: "https://rubygems.org/gems/#{name}",
27
+ xmlUrl: "https://rubygems.org/gems/#{name}/versions.atom",
28
+ )
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+
36
+ opml.to_xml
37
+ end
38
+
39
+ def generate_title(file)
40
+ application = File.basename File.dirname File.expand_path file
41
+ filename = File.basename file
42
+ "#{application}/#{filename}"
43
+ end
44
+
45
+ def generate_targets(dependencies)
46
+ targets = {}
47
+
48
+ dependencies.each{|dependency|
49
+ targets[dependency.type] ||= []
50
+ targets[dependency.type] << dependency.name
51
+ }
52
+
53
+ targets
54
+ end
55
+ end
@@ -0,0 +1,3 @@
1
+ module Gemfile2opml
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,10 @@
1
+ require "gemfile2opml/version"
2
+ require "gemfile2opml/converter"
3
+
4
+ module Gemfile2opml
5
+ def self.run(stdout, argv)
6
+ converter = Gemfile2opml::Converter.new
7
+ target_file = argv.first
8
+ stdout.puts converter.convert(target_file)
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gemfile2opml
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - hitode909
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-10-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gemnasium-parser
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.9
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.9
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.6.6.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.6.6.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: gemfile2opml is a command line tool which generates OPML from Gemfile.
70
+ You can subscribe libraries' update on your favorite feed reader.
71
+ email:
72
+ - hitode909@gmail.com
73
+ executables:
74
+ - gemfile2opml
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - ".travis.yml"
80
+ - Gemfile
81
+ - README.md
82
+ - Rakefile
83
+ - bin/console
84
+ - bin/setup
85
+ - exe/gemfile2opml
86
+ - gemfile2opml.gemspec
87
+ - lib/gemfile2opml.rb
88
+ - lib/gemfile2opml/converter.rb
89
+ - lib/gemfile2opml/version.rb
90
+ homepage: https://github.com/hitode909/gemfile2opml
91
+ licenses: []
92
+ metadata: {}
93
+ post_install_message:
94
+ rdoc_options: []
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ requirements: []
108
+ rubyforge_project:
109
+ rubygems_version: 2.4.5.1
110
+ signing_key:
111
+ specification_version: 4
112
+ summary: Generate OPML from Gemfile
113
+ test_files: []