private_gem 1.0.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: 5c97de10eaaa9b52be80ae588d37be3aa9245aba
4
+ data.tar.gz: 075d707403a84bd38b1e1b9adcba1d2cd43a6fd5
5
+ SHA512:
6
+ metadata.gz: 86803bd5bb27ac71b374699f81ada59354aabe1b9c7aa24b9c30a462b91e1c163de1000f4d2e8a083051ed7f9f49fefa683b2a6967d44021c275be35eecc7db1
7
+ data.tar.gz: 5a0766dde0a43710d04af37ee8da7f796558d4a8af290db62fe5c858be5c6fdc703021dea9bbce3ea155ab7bd630c41258a55cea5999fad4752d996ee21b4b61
data/bin/private_gem ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler'
4
+ root = File.expand_path('../..', __FILE__)
5
+ $LOAD_PATH << "#{root}/lib" if File.exist?("#{root}/Gemfile")
6
+ require 'private_gem'
7
+
8
+ require 'bundler/friendly_errors'
9
+ Bundler.with_friendly_errors do
10
+ require 'private_gem/cli'
11
+ PrivateGem::CLI.start(ARGV, :debug => true)
12
+ end
@@ -0,0 +1,57 @@
1
+ require 'bundler/cli'
2
+
3
+ module PrivateGem
4
+ class CLI < Thor
5
+ include Thor::Actions
6
+
7
+ default_task :help
8
+
9
+ desc 'version', 'show version'
10
+ def version
11
+ puts PrivateGem::VERSION
12
+ end
13
+
14
+ desc 'new GEM [OPTIONS]', 'Creates a skeleton for a private ruby gem'
15
+ method_option :bin, :type => :boolean, :default => false, :aliases => '-b', :banner => 'Generate a binary for your gem.'
16
+ def new(gem_name)
17
+ name = gem_name.chomp('/') # remove trailing slash if present
18
+ underscored_name = name.tr('-', '_')
19
+ namespaced_path = name.tr('-', '/')
20
+ target = File.join(Dir.pwd, name)
21
+ constant_name = name.split('_').map{|p| p[0..0].upcase + p[1..-1] }.join
22
+ constant_name = constant_name.split('-').map{|q| q[0..0].upcase + q[1..-1] }.join('::') if constant_name =~ /-/
23
+ constant_array = constant_name.split('::')
24
+ git_user_name = `git config user.name`.chomp
25
+ git_user_email = `git config user.email`.chomp
26
+ opts = {
27
+ :name => name,
28
+ :underscored_name => underscored_name,
29
+ :namespaced_path => namespaced_path,
30
+ :constant_name => constant_name,
31
+ :constant_array => constant_array,
32
+ :author => git_user_name.empty? ? 'TODO: Write your name' : git_user_name,
33
+ :email => git_user_email.empty? ? 'TODO: Write your email address' : git_user_email
34
+ }
35
+
36
+ template 'newgem/Gemfile.tt', "#{target}/Gemfile", opts
37
+ template "newgem/Rakefile.tt", "#{target}/Rakefile", opts
38
+ template "newgem/README.md.tt", "#{target}/README.md", opts
39
+ template "newgem/gitignore.tt", "#{target}/.gitignore", opts
40
+ template "newgem/newgem.gemspec.tt", "#{target}/#{name}.gemspec", opts
41
+ template "newgem/lib/newgem.rb.tt", "#{target}/lib/#{namespaced_path}.rb", opts
42
+ template "newgem/lib/newgem/version.rb.tt", "#{target}/lib/#{namespaced_path}/version.rb", opts
43
+ template "newgem/test/minitest_helper.rb.tt", "#{target}/test/minitest_helper.rb", opts
44
+ template "newgem/test/test_newgem.rb.tt", "#{target}/test/test_#{namespaced_path}.rb", opts
45
+ template "newgem/travis.yml.tt", "#{target}/.travis.yml", opts
46
+ if options[:bin]
47
+ template "newgem/bin/newgem.tt", "#{target}/bin/#{name}", opts
48
+ end
49
+
50
+ Dir.chdir(target) { `git init; git add .` }
51
+ end
52
+
53
+ def self.source_root
54
+ File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,43 @@
1
+ require 'private_gem'
2
+ require 'bundler/gem_helper'
3
+
4
+ module PrivateGem
5
+ module GemHelperPatches
6
+ def install
7
+ super
8
+
9
+ Rake::Task[:release].clear_comments
10
+ Rake::Task[:release].comment = "Create tag v#{version} and build and push #{name}-#{version}.gem to your private gem server"
11
+
12
+ task :verify_gemspec do
13
+ verify_allowed_push_host
14
+ end
15
+
16
+ Rake::Task[:build].enhance([:verify_gemspec])
17
+ end
18
+
19
+ protected
20
+
21
+ def rubygem_push(path)
22
+ if PrivateGem.server && PrivateGem.credentials
23
+ Bundler.ui.confirm sh("curl --data-binary '@#{path}' --user '#{PrivateGem.credentials}' --header 'Content-Type: application/octet-stream' --silent #{PrivateGem.server}api/v1/gems")
24
+
25
+ Bundler.ui.confirm "Pushed #{name} #{version} to #{PrivateGem.server}."
26
+ else
27
+ raise "Your private gem server credentials aren't set."
28
+ end
29
+ end
30
+
31
+ def verify_allowed_push_host
32
+ allowed_push_host = gemspec.metadata['allowed_push_host']
33
+
34
+ if allowed_push_host != PrivateGem.server
35
+ abort("You must set allowed_push_host to #{PrivateGem.server} in #{File.basename(spec_path)} to prevent accidental pushes to rubygems.org")
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ Bundler::GemHelper.send(:prepend, PrivateGem::GemHelperPatches)
42
+
43
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+ source <%= PrivateGem.server.inspect %>
3
+
4
+ # Specify your gem's dependencies in <%= config[:name] %>.gemspec
5
+ gemspec
@@ -0,0 +1,34 @@
1
+ # <%=config[:constant_name]%>
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem '<%= config[:name] %>'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```Bash
16
+ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+
21
+ ```Bash
22
+ gem install <%= config[:name] %>
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ TODO: Write usage instructions here
28
+
29
+ ## Contributing
30
+
31
+ 1. Create your feature branch (`git checkout -b my-new-feature`)
32
+ 2. Commit your changes (`git commit -am 'Add some feature'`)
33
+ 3. Push to the branch (`git push origin my-new-feature`)
34
+ 4. Create a new Pull Request
@@ -0,0 +1,7 @@
1
+ require 'bundler/setup'
2
+ require 'private_gem/tasks'
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new(:test) { }
6
+
7
+ task :default => :test
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ root = File.expand_path('../..', __FILE__)
4
+ $LOAD_PATH << "#{root}/lib" if File.exist?("#{root}/Gemfile")
5
+ require '<%= config[:namespaced_path] %>'
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
@@ -0,0 +1,7 @@
1
+ <%- config[:constant_array].each_with_index do |c,i| -%>
2
+ <%= ' '*i %>module <%= c %>
3
+ <%- end -%>
4
+ <%= ' '*config[:constant_array].size %>VERSION = '0.0.1'
5
+ <%- (config[:constant_array].size-1).downto(0) do |i| -%>
6
+ <%= ' '*i %>end
7
+ <%- end -%>
@@ -0,0 +1,9 @@
1
+ require '<%= config[:namespaced_path] %>/version'
2
+
3
+ <%- config[:constant_array].each_with_index do |c,i| -%>
4
+ <%= ' '*i %>module <%= c %>
5
+ <%- end -%>
6
+ <%= ' '*config[:constant_array].size %># Your code goes here...
7
+ <%- (config[:constant_array].size-1).downto(0) do |i| -%>
8
+ <%= ' '*i %>end
9
+ <%- end -%>
@@ -0,0 +1,22 @@
1
+ require './lib/<%= config[:namespaced_path] %>/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = <%= config[:name].inspect %>
5
+ spec.version = <%= config[:constant_name] %>::VERSION
6
+ spec.authors = [<%= config[:author].inspect %>]
7
+ spec.email = [<%= config[:email].inspect %>]
8
+ spec.summary = %q{TODO: Write a short summary. Required.}
9
+ spec.description = %q{TODO: Write a longer description. Optional.}
10
+ spec.homepage = ''
11
+ spec.license = 'PRIVATE'
12
+
13
+ spec.metadata['allowed_push_host'] = <%= PrivateGem.server.inspect %>
14
+
15
+ spec.files = Dir.glob('lib/**/*')
16
+ spec.executables = Dir.glob('bin/**/*').map {|f| File.basename(f)}
17
+
18
+ spec.add_development_dependency 'private_gem'
19
+ spec.add_development_dependency 'bundler'
20
+ spec.add_development_dependency 'rake'
21
+ spec.add_development_dependency 'minitest'
22
+ end
@@ -0,0 +1,4 @@
1
+ require 'bundler/setup'
2
+ require '<%= config[:namespaced_path] %>'
3
+
4
+ require 'minitest/autorun'
@@ -0,0 +1,11 @@
1
+ require_relative 'minitest_helper'
2
+
3
+ describe <%= config[:constant_name] %> do
4
+ it 'has a version number' do
5
+ ::<%= config[:constant_name] %>::VERSION.wont_be_nil
6
+ end
7
+
8
+ it 'does something useful' do
9
+ flunk 'It does nothing useful!'
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - <%= RUBY_VERSION %>
@@ -0,0 +1,3 @@
1
+ module PrivateGem
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,37 @@
1
+ require 'private_gem/version'
2
+ require 'bundler'
3
+
4
+ module PrivateGem
5
+ def self.server
6
+ servers_with_credentials = Bundler.settings.all.select do |n|
7
+ url = URI.parse(n)
8
+ url && ['http', 'https'].include?(url.scheme)
9
+ end
10
+
11
+ if servers_with_credentials.empty?
12
+ abort("You don't have any configured private gem credentials.")
13
+ elsif servers_with_credentials.size > 1
14
+ private_gem_server = Bundler.settings['private_gem_server']
15
+
16
+ if private_gem_server
17
+ if servers_with_credentials.include?(private_gem_server)
18
+ return private_gem_server
19
+ else
20
+ abort("You don't have any configured credentials for the private gem server at #{private_gem_server}")
21
+ end
22
+ else
23
+ puts "You have multiple private gem servers defined:"
24
+ servers_with_credentials.each do |s|
25
+ puts " #{s}"
26
+ end
27
+ abort("You need to select which private gem server to use using `bundle config private_gem_server URL_OF_GEM_SERVER`")
28
+ end
29
+ else
30
+ servers_with_credentials.first
31
+ end
32
+ end
33
+
34
+ def self.credentials
35
+ Bundler.settings[server]
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: private_gem
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mick Staugaard
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest-around
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bump
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ description:
84
+ email:
85
+ - mick@staugaard.com
86
+ executables:
87
+ - private_gem
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - bin/private_gem
92
+ - lib/private_gem.rb
93
+ - lib/private_gem/cli.rb
94
+ - lib/private_gem/tasks.rb
95
+ - lib/private_gem/templates/newgem/Gemfile.tt
96
+ - lib/private_gem/templates/newgem/README.md.tt
97
+ - lib/private_gem/templates/newgem/Rakefile.tt
98
+ - lib/private_gem/templates/newgem/bin/newgem.tt
99
+ - lib/private_gem/templates/newgem/gitignore.tt
100
+ - lib/private_gem/templates/newgem/lib/newgem.rb.tt
101
+ - lib/private_gem/templates/newgem/lib/newgem/version.rb.tt
102
+ - lib/private_gem/templates/newgem/newgem.gemspec.tt
103
+ - lib/private_gem/templates/newgem/test/minitest_helper.rb.tt
104
+ - lib/private_gem/templates/newgem/test/test_newgem.rb.tt
105
+ - lib/private_gem/templates/newgem/travis.yml.tt
106
+ - lib/private_gem/version.rb
107
+ homepage: https://github.com/zendesk/private_gem
108
+ licenses:
109
+ - Apache License Version 2.0
110
+ metadata: {}
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '2.0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 2.2.2
128
+ signing_key:
129
+ specification_version: 4
130
+ summary: Tries to help you make sure your private gems stay private
131
+ test_files: []