npm2gem 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.
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.