npm2gem 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +241 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +4 -0
  7. data/CODE_OF_CONDUCT.md +111 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +102 -0
  11. data/Rakefile +6 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +7 -0
  14. data/exe/npm2gem +8 -0
  15. data/lib/npm2gem/cli.rb +56 -0
  16. data/lib/npm2gem/config.rb +21 -0
  17. data/lib/npm2gem/exception.rb +4 -0
  18. data/lib/npm2gem/file_copier.rb +65 -0
  19. data/lib/npm2gem/gem_version_updater.rb +42 -0
  20. data/lib/npm2gem/npm_install.rb +36 -0
  21. data/lib/npm2gem/version.rb +3 -0
  22. data/lib/npm2gem/version_updaters/base_file_updater.rb +29 -0
  23. data/lib/npm2gem/version_updaters/gemspec_updater.rb +12 -0
  24. data/lib/npm2gem/version_updaters/version_file_updater.rb +18 -0
  25. data/lib/npm2gem.rb +5 -0
  26. data/npm2gem.gemspec +31 -0
  27. data/spec/cli_spec.rb +22 -0
  28. data/spec/config_spec.rb +40 -0
  29. data/spec/dummy/Gemfile +4 -0
  30. data/spec/dummy/README.md +7 -0
  31. data/spec/dummy/Rakefile +6 -0
  32. data/spec/dummy/dummy.gemspec +31 -0
  33. data/spec/dummy/lib/dummy/version.rb +3 -0
  34. data/spec/dummy/lib/dummy.rb +8 -0
  35. data/spec/dummy/node_modules/bootstrap/CHANGELOG.md +5 -0
  36. data/spec/dummy/node_modules/bootstrap/Gruntfile.js +533 -0
  37. data/spec/dummy/node_modules/bootstrap/LICENSE +21 -0
  38. data/spec/dummy/node_modules/bootstrap/README.md +139 -0
  39. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap-theme.css +587 -0
  40. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
  41. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap-theme.min.css +6 -0
  42. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
  43. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap.css +6760 -0
  44. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap.css.map +1 -0
  45. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap.min.css +6 -0
  46. data/spec/dummy/node_modules/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  47. data/spec/dummy/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  48. data/spec/dummy/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
  49. data/spec/dummy/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  50. data/spec/dummy/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  51. data/spec/dummy/node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  52. data/spec/dummy/node_modules/bootstrap/dist/js/bootstrap.js +2363 -0
  53. data/spec/dummy/node_modules/bootstrap/dist/js/bootstrap.min.js +7 -0
  54. data/spec/dummy/node_modules/bootstrap/dist/js/npm.js +13 -0
  55. data/spec/dummy/node_modules/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  56. data/spec/dummy/node_modules/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
  57. data/spec/dummy/node_modules/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  58. data/spec/dummy/node_modules/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  59. data/spec/dummy/node_modules/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  60. data/spec/dummy/node_modules/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  61. data/spec/dummy/node_modules/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
  62. data/spec/dummy/node_modules/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
  63. data/spec/dummy/node_modules/bootstrap/grunt/bs-raw-files-generator.js +44 -0
  64. data/spec/dummy/node_modules/bootstrap/grunt/configBridge.json +46 -0
  65. data/spec/dummy/node_modules/bootstrap/grunt/sauce_browsers.yml +82 -0
  66. data/spec/dummy/node_modules/bootstrap/js/affix.js +162 -0
  67. data/spec/dummy/node_modules/bootstrap/js/alert.js +94 -0
  68. data/spec/dummy/node_modules/bootstrap/js/button.js +120 -0
  69. data/spec/dummy/node_modules/bootstrap/js/carousel.js +237 -0
  70. data/spec/dummy/node_modules/bootstrap/js/collapse.js +211 -0
  71. data/spec/dummy/node_modules/bootstrap/js/dropdown.js +165 -0
  72. data/spec/dummy/node_modules/bootstrap/js/modal.js +337 -0
  73. data/spec/dummy/node_modules/bootstrap/js/popover.js +108 -0
  74. data/spec/dummy/node_modules/bootstrap/js/scrollspy.js +172 -0
  75. data/spec/dummy/node_modules/bootstrap/js/tab.js +155 -0
  76. data/spec/dummy/node_modules/bootstrap/js/tooltip.js +514 -0
  77. data/spec/dummy/node_modules/bootstrap/js/transition.js +59 -0
  78. data/spec/dummy/node_modules/bootstrap/less/alerts.less +73 -0
  79. data/spec/dummy/node_modules/bootstrap/less/badges.less +66 -0
  80. data/spec/dummy/node_modules/bootstrap/less/bootstrap.less +56 -0
  81. data/spec/dummy/node_modules/bootstrap/less/breadcrumbs.less +26 -0
  82. data/spec/dummy/node_modules/bootstrap/less/button-groups.less +244 -0
  83. data/spec/dummy/node_modules/bootstrap/less/buttons.less +166 -0
  84. data/spec/dummy/node_modules/bootstrap/less/carousel.less +270 -0
  85. data/spec/dummy/node_modules/bootstrap/less/close.less +34 -0
  86. data/spec/dummy/node_modules/bootstrap/less/code.less +69 -0
  87. data/spec/dummy/node_modules/bootstrap/less/component-animations.less +33 -0
  88. data/spec/dummy/node_modules/bootstrap/less/dropdowns.less +216 -0
  89. data/spec/dummy/node_modules/bootstrap/less/forms.less +613 -0
  90. data/spec/dummy/node_modules/bootstrap/less/glyphicons.less +305 -0
  91. data/spec/dummy/node_modules/bootstrap/less/grid.less +84 -0
  92. data/spec/dummy/node_modules/bootstrap/less/input-groups.less +171 -0
  93. data/spec/dummy/node_modules/bootstrap/less/jumbotron.less +54 -0
  94. data/spec/dummy/node_modules/bootstrap/less/labels.less +64 -0
  95. data/spec/dummy/node_modules/bootstrap/less/list-group.less +130 -0
  96. data/spec/dummy/node_modules/bootstrap/less/media.less +66 -0
  97. data/spec/dummy/node_modules/bootstrap/less/mixins/alerts.less +14 -0
  98. data/spec/dummy/node_modules/bootstrap/less/mixins/background-variant.less +9 -0
  99. data/spec/dummy/node_modules/bootstrap/less/mixins/border-radius.less +18 -0
  100. data/spec/dummy/node_modules/bootstrap/less/mixins/buttons.less +65 -0
  101. data/spec/dummy/node_modules/bootstrap/less/mixins/center-block.less +7 -0
  102. data/spec/dummy/node_modules/bootstrap/less/mixins/clearfix.less +22 -0
  103. data/spec/dummy/node_modules/bootstrap/less/mixins/forms.less +85 -0
  104. data/spec/dummy/node_modules/bootstrap/less/mixins/gradients.less +59 -0
  105. data/spec/dummy/node_modules/bootstrap/less/mixins/grid-framework.less +91 -0
  106. data/spec/dummy/node_modules/bootstrap/less/mixins/grid.less +122 -0
  107. data/spec/dummy/node_modules/bootstrap/less/mixins/hide-text.less +21 -0
  108. data/spec/dummy/node_modules/bootstrap/less/mixins/image.less +33 -0
  109. data/spec/dummy/node_modules/bootstrap/less/mixins/labels.less +12 -0
  110. data/spec/dummy/node_modules/bootstrap/less/mixins/list-group.less +30 -0
  111. data/spec/dummy/node_modules/bootstrap/less/mixins/nav-divider.less +10 -0
  112. data/spec/dummy/node_modules/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  113. data/spec/dummy/node_modules/bootstrap/less/mixins/opacity.less +8 -0
  114. data/spec/dummy/node_modules/bootstrap/less/mixins/pagination.less +24 -0
  115. data/spec/dummy/node_modules/bootstrap/less/mixins/panels.less +24 -0
  116. data/spec/dummy/node_modules/bootstrap/less/mixins/progress-bar.less +10 -0
  117. data/spec/dummy/node_modules/bootstrap/less/mixins/reset-filter.less +8 -0
  118. data/spec/dummy/node_modules/bootstrap/less/mixins/reset-text.less +18 -0
  119. data/spec/dummy/node_modules/bootstrap/less/mixins/resize.less +6 -0
  120. data/spec/dummy/node_modules/bootstrap/less/mixins/responsive-visibility.less +15 -0
  121. data/spec/dummy/node_modules/bootstrap/less/mixins/size.less +10 -0
  122. data/spec/dummy/node_modules/bootstrap/less/mixins/tab-focus.less +9 -0
  123. data/spec/dummy/node_modules/bootstrap/less/mixins/table-row.less +28 -0
  124. data/spec/dummy/node_modules/bootstrap/less/mixins/text-emphasis.less +9 -0
  125. data/spec/dummy/node_modules/bootstrap/less/mixins/text-overflow.less +8 -0
  126. data/spec/dummy/node_modules/bootstrap/less/mixins/vendor-prefixes.less +227 -0
  127. data/spec/dummy/node_modules/bootstrap/less/mixins.less +40 -0
  128. data/spec/dummy/node_modules/bootstrap/less/modals.less +150 -0
  129. data/spec/dummy/node_modules/bootstrap/less/navbar.less +660 -0
  130. data/spec/dummy/node_modules/bootstrap/less/navs.less +242 -0
  131. data/spec/dummy/node_modules/bootstrap/less/normalize.less +424 -0
  132. data/spec/dummy/node_modules/bootstrap/less/pager.less +54 -0
  133. data/spec/dummy/node_modules/bootstrap/less/pagination.less +89 -0
  134. data/spec/dummy/node_modules/bootstrap/less/panels.less +271 -0
  135. data/spec/dummy/node_modules/bootstrap/less/popovers.less +131 -0
  136. data/spec/dummy/node_modules/bootstrap/less/print.less +101 -0
  137. data/spec/dummy/node_modules/bootstrap/less/progress-bars.less +87 -0
  138. data/spec/dummy/node_modules/bootstrap/less/responsive-embed.less +35 -0
  139. data/spec/dummy/node_modules/bootstrap/less/responsive-utilities.less +194 -0
  140. data/spec/dummy/node_modules/bootstrap/less/scaffolding.less +161 -0
  141. data/spec/dummy/node_modules/bootstrap/less/tables.less +234 -0
  142. data/spec/dummy/node_modules/bootstrap/less/theme.less +291 -0
  143. data/spec/dummy/node_modules/bootstrap/less/thumbnails.less +36 -0
  144. data/spec/dummy/node_modules/bootstrap/less/tooltip.less +101 -0
  145. data/spec/dummy/node_modules/bootstrap/less/type.less +302 -0
  146. data/spec/dummy/node_modules/bootstrap/less/utilities.less +55 -0
  147. data/spec/dummy/node_modules/bootstrap/less/variables.less +869 -0
  148. data/spec/dummy/node_modules/bootstrap/less/wells.less +29 -0
  149. data/spec/dummy/node_modules/bootstrap/package.json +138 -0
  150. data/spec/dummy/vendor/assets/javascripts/bootstrap.js +2363 -0
  151. data/spec/dummy/vendor/assets/stylesheets/bootstrap-theme.css +587 -0
  152. data/spec/dummy/vendor/assets/stylesheets/bootstrap.css +6760 -0
  153. data/spec/file_copier_spec.rb +45 -0
  154. data/spec/gem_version_updater_spec.rb +45 -0
  155. data/spec/npm2gem_spec.rb +7 -0
  156. data/spec/npm_install_spec.rb +22 -0
  157. data/spec/spec_helper.rb +26 -0
  158. metadata +403 -0
@@ -0,0 +1,65 @@
1
+ require "fileutils"
2
+
3
+ module NPM2Gem
4
+ class FileCopier
5
+ def initialize(from_base, to_base)
6
+ @from_base = from_base
7
+ @to_base = to_base
8
+ end
9
+
10
+ def copy(input_paths)
11
+ input_paths.each do |input_path|
12
+ # TODO: replace with polymorphism, for the love of god
13
+ if input_path.is_a?(Hash)
14
+ copy_to_subfolder(input_path)
15
+ else
16
+ copy_single(input_path)
17
+ end
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def copy_to_subfolder(input_hash)
24
+ input_hash.each do |subfolder, input_paths|
25
+ input_paths.each do |input_path|
26
+ copy_single(input_path, subfolder)
27
+ end
28
+ end
29
+ end
30
+
31
+ def copy_single(input_path, subfolder = "")
32
+ Dir.glob(from_path(input_path)).each do |from_path|
33
+ file_type_directory = file_type_directory(from_path)
34
+ FileUtils.mkdir_p(to_path(file_type_directory, subfolder))
35
+
36
+ FileUtils.cp(
37
+ from_path,
38
+ to_path(file_type_directory, subfolder)
39
+ )
40
+ puts "Copied #{from_path} \t"
41
+ puts " to #{to_path(input_path, subfolder)}"
42
+ end
43
+ end
44
+
45
+ def from_path(input_path)
46
+ File.join(@from_base, input_path)
47
+ end
48
+
49
+ def to_path(file_type_directory, subfolder = "", file_name = "")
50
+ File.join(@to_base, file_type_directory, subfolder, file_name)
51
+ end
52
+
53
+ def file_type_directory(file_name)
54
+ if file_name.include?("css")
55
+ "stylesheets"
56
+ elsif file_name.include?("js")
57
+ "javascripts"
58
+ end
59
+ end
60
+
61
+ def file_name(input_path)
62
+ input_path.split("/").last
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,42 @@
1
+ require "npm2gem/version_updaters/version_file_updater"
2
+ require "npm2gem/version_updaters/gemspec_updater"
3
+
4
+ module NPM2Gem
5
+ class GemVersionUpdater
6
+ def initialize
7
+ @gemspec_file_name = Dir["*.gemspec"].first
8
+ end
9
+
10
+ def run(new_version)
11
+ if gemspec_version =~ /VERSION/
12
+ VersionFileUpdater.new(file_path).run(new_version)
13
+ else
14
+ GemspecUpdater.new(file_path, gemspec_version).run(new_version)
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def file_path
21
+ if gemspec_version =~ /VERSION/
22
+ Dir["**/version.rb"].first
23
+ else
24
+ @gemspec_file_name
25
+ end
26
+ end
27
+
28
+ def gemspec_version
29
+ unless gemspec_version_line.empty?
30
+ gemspec_version_line.match(
31
+ /=\s*(.*VERSION.*)\s*|["'](.*)["']/
32
+ ).captures.compact.first
33
+ end
34
+ end
35
+
36
+ def gemspec_version_line
37
+ File.readlines(@gemspec_file_name).detect do |line|
38
+ line =~ /\.version/
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,36 @@
1
+ require "json"
2
+
3
+ module NPM2Gem
4
+ class NPMInstall
5
+ def initialize(package_name)
6
+ create_node_modules_directory
7
+
8
+ unless system("npm install #{package_name}")
9
+ raise NPM2Gem::Exception, "Couldn't install..."
10
+ end
11
+
12
+ @package_name = package_name
13
+ end
14
+
15
+ def path
16
+ File.join("node_modules", @package_name)
17
+ end
18
+
19
+ def package_version
20
+ parse_json_file("package.json")["version"]
21
+ end
22
+
23
+ private
24
+
25
+ # If npm cannot create a `node_modules` folder,
26
+ # it will fallback to installing globally.
27
+ # We don't want that.
28
+ def create_node_modules_directory
29
+ Dir.mkdir("node_modules") unless Dir.exist?("node_modules")
30
+ end
31
+
32
+ def parse_json_file(json_file_name)
33
+ JSON.parse(File.read(File.join(path, json_file_name)))
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,3 @@
1
+ module NPM2Gem
2
+ VERSION = "0.1.0".freeze
3
+ end
@@ -0,0 +1,29 @@
1
+ module NPM2Gem
2
+ class BaseFileUpdater
3
+ def initialize(file_name, current_version)
4
+ @file_name = file_name
5
+ @current_version = current_version
6
+ @file_contents = File.read(@file_name)
7
+ end
8
+
9
+ def run(new_version)
10
+ write_new_version_file(new_version)
11
+ new_version
12
+ end
13
+
14
+ private
15
+
16
+ def write_new_version_file(new_version)
17
+ File.open(@file_name, "w") do |file|
18
+ file.write(new_file_contents(new_version))
19
+ end
20
+ end
21
+
22
+ def new_file_contents(new_version)
23
+ @file_contents.gsub(
24
+ @current_version,
25
+ new_version
26
+ )
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ require "npm2gem/version_updaters/base_file_updater"
2
+
3
+ module NPM2Gem
4
+ class GemspecUpdater < BaseFileUpdater
5
+ def initialize(file_path, current_version)
6
+ super(
7
+ file_path,
8
+ current_version
9
+ )
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ require "npm2gem/version_updaters/base_file_updater"
2
+
3
+ module NPM2Gem
4
+ class VersionFileUpdater < BaseFileUpdater
5
+ def initialize(file_path)
6
+ super(
7
+ file_path,
8
+ old_version(file_path)
9
+ )
10
+ end
11
+
12
+ private
13
+
14
+ def old_version(file_path)
15
+ File.read(file_path).match(/VERSION\s*=\s*"(.*)"/).captures.first
16
+ end
17
+ end
18
+ end
data/lib/npm2gem.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "npm2gem/version"
2
+ require "npm2gem/cli"
3
+
4
+ module NPM2Gem
5
+ end
data/npm2gem.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "npm2gem/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "npm2gem"
8
+ spec.version = NPM2Gem::VERSION
9
+ spec.authors = ["Sean Collins"]
10
+ spec.email = ["sean@cllns.com"]
11
+
12
+ spec.summary = "A tool to help mainain Asset gems for Ruby on Rails"
13
+ spec.homepage = "https://github.com/cllns/npm2gem"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split("\n").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.test_files = Dir["spec/**/*"]
24
+
25
+ spec.add_dependency "highline", "~> 1.7"
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.10"
28
+ spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rspec", "~> 3.3"
30
+ spec.add_development_dependency "simplecov", "~> 0.10"
31
+ end
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ describe NPM2Gem::CLI do
4
+ before(:each) do
5
+ @cli = NPM2Gem::CLI.new
6
+ allow(@cli).to receive(:want_to_upgrade?) { true }
7
+ @cli.run
8
+ end
9
+
10
+ it "downloads javascript file" do
11
+ expect(File).to exist("vendor/assets/javascripts/bootstrap.js")
12
+ end
13
+
14
+ it "downloads stylesheet files" do
15
+ expect(File).to exist("vendor/assets/stylesheets/bootstrap.css")
16
+ expect(File).to exist("vendor/assets/stylesheets/bootstrap-theme.css")
17
+ end
18
+
19
+ it "outputs new version" do
20
+ expect { @cli.run }.to output(/\d\.\d\.\d/).to_stdout
21
+ end
22
+ end
@@ -0,0 +1,40 @@
1
+ require "spec_helper"
2
+
3
+ describe NPM2Gem::Config do
4
+ before(:all) do
5
+ FileUtils.mkdir("tmp")
6
+ Dir.chdir("tmp")
7
+ File.open(".npm2gem.yml", "w") do |file|
8
+ file.puts("bootstrap:")
9
+ file.puts(" - dist/css/bootstrap.css")
10
+ file.puts(" - dist/js/bootstrap.js")
11
+ file.puts(" - theme:")
12
+ file.puts(" - dist/css/bootstrap-theme.css")
13
+ end
14
+ end
15
+
16
+ after(:all) do
17
+ Dir.chdir("..")
18
+ FileUtils.rm_rf("tmp")
19
+ end
20
+
21
+ subject do
22
+ NPM2Gem::Config.new
23
+ end
24
+
25
+ it "returns package name" do
26
+ expect(subject.package_name).to eq("bootstrap")
27
+ end
28
+
29
+ it "returns contents of package to copy, including a hash" do
30
+ expect(subject.files_to_copy).to eq([
31
+ "dist/css/bootstrap.css",
32
+ "dist/js/bootstrap.js",
33
+ {
34
+ "theme" => [
35
+ "dist/css/bootstrap-theme.css"
36
+ ]
37
+ }
38
+ ])
39
+ end
40
+ end
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in dummy.gemspec
4
+ gemspec
@@ -0,0 +1,7 @@
1
+ # Dummy
2
+
3
+ This is a dummy gem for the `bower2gem` gem.
4
+
5
+ It's an example of 'gemified assets',
6
+ bundling the 'bootstrap' bower package
7
+ (since it's the most popular one).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "dummy/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "dummy"
8
+ spec.version = Dummy::VERSION
9
+ spec.authors = ["Sean Collins"]
10
+ spec.email = ["sean@cllns.com"]
11
+
12
+ spec.summary = " A Dummy Gem for testing the 'bower2gem' gem"
13
+ spec.license = "MIT"
14
+
15
+ # Since this is a gem just for testing, we don't want to push it to
16
+ # rubygems.org
17
+ spec.metadata["allowed_push_host"] = nil
18
+
19
+ spec.files = `git ls-files`.split("\n").reject do |f|
20
+ f.match(%r{^(test|spec|features)/})
21
+ end
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_dependency "railties", "~> 4.0"
27
+
28
+ spec.add_development_dependency "bundler", "~> 1.10"
29
+ spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "rspec", "~> 3.3.0"
31
+ end
@@ -0,0 +1,3 @@
1
+ module Dummy
2
+ VERSION = "0.1.0".freeze
3
+ end
@@ -0,0 +1,8 @@
1
+ require "dummy/version"
2
+
3
+ module Dummy
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs.
2
+
3
+ See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
4
+
5
+ Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.