From 0244bf13b35401520517f733e060404d93d00b93 Mon Sep 17 00:00:00 2001 From: Steven Bazyl Date: Mon, 15 Dec 2014 11:44:51 -0800 Subject: [PATCH] Update depdencies, simplify gem management --- Gemfile | 27 ------ google-api-client.gemspec | 83 +++++++----------- .../auth/compute_service_account.rb | 2 +- script/package | 8 ++ script/release | 14 +++ .../google/api_client/service_account_spec.rb | 10 +-- tasks/gem.rake | 85 +++---------------- tasks/git.rake | 2 +- 8 files changed, 69 insertions(+), 162 deletions(-) create mode 100755 script/package create mode 100755 script/release diff --git a/Gemfile b/Gemfile index a0da71a31..ab0b3d14f 100644 --- a/Gemfile +++ b/Gemfile @@ -2,31 +2,4 @@ source 'https://rubygems.org' gemspec -gem 'signet', '>= 0.5.0' -gem 'addressable', '>= 2.3.2' -gem 'uuidtools', '>= 2.1.0' -gem 'autoparse', '>= 0.3.3' -gem 'faraday', '>= 0.9.0' -gem 'multi_json', '>= 1.0.0' -gem 'extlib', '>= 0.9.15' -gem 'jwt', '~> 0.1.5' -gem 'retriable', '~> 1.4' gem 'jruby-openssl', :platforms => :jruby - -group :development do - gem 'launchy', '>= 2.1.1' - gem 'yard' - gem 'kramdown' -end - -group :examples do - gem 'sinatra' -end - -group :test, :development do - gem 'json', '~> 1.7.7' - gem 'rspec', '~> 3.0' - gem 'simplecov', :platforms => [:ruby_19, :ruby_20], :require => false -end - -gem 'idn', :platforms => :mri_18 diff --git a/google-api-client.gemspec b/google-api-client.gemspec index 9246d9013..bae8bec14 100644 --- a/google-api-client.gemspec +++ b/google-api-client.gemspec @@ -1,65 +1,40 @@ # -*- encoding: utf-8 -*- +require File.join(File.dirname(__FILE__), 'lib/google/api_client', 'version') Gem::Specification.new do |s| s.name = "google-api-client" - s.version = "0.7.1" + s.version = Google::APIClient::VERSION::STRING - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Bob Aman", "Steve Bazyl"] - s.date = "2014-01-23" - s.description = "The Google API Ruby Client makes it trivial to discover and access supported\nAPIs.\n" + s.required_rubygems_version = ">= 1.3.5" + s.require_paths = ["lib"] + s.authors = ["Bob Aman", "Steven Bazyl"] + s.license = "Apache-2.0" + s.description = "The Google API Ruby Client makes it trivial to discover and access supported APIs." s.email = "sbazyl@google.com" s.extra_rdoc_files = ["README.md"] - s.files = ["lib/cacerts.pem", "lib/compat", "lib/compat/multi_json.rb", "lib/google", "lib/google/api_client", "lib/google/api_client.rb", "lib/google/api_client/auth", "lib/google/api_client/auth/compute_service_account.rb", "lib/google/api_client/auth/file_storage.rb", "lib/google/api_client/auth/installed_app.rb", "lib/google/api_client/auth/jwt_asserter.rb", "lib/google/api_client/auth/key_utils.rb", "lib/google/api_client/auth/pkcs12.rb", "lib/google/api_client/batch.rb", "lib/google/api_client/client_secrets.rb", "lib/google/api_client/discovery", "lib/google/api_client/discovery.rb", "lib/google/api_client/discovery/api.rb", "lib/google/api_client/discovery/media.rb", "lib/google/api_client/discovery/method.rb", "lib/google/api_client/discovery/resource.rb", "lib/google/api_client/discovery/schema.rb", "lib/google/api_client/environment.rb", "lib/google/api_client/errors.rb", "lib/google/api_client/gzip.rb", "lib/google/api_client/logging.rb", "lib/google/api_client/media.rb", "lib/google/api_client/railtie.rb", "lib/google/api_client/reference.rb", "lib/google/api_client/request.rb", "lib/google/api_client/result.rb", "lib/google/api_client/service", "lib/google/api_client/service.rb", "lib/google/api_client/service/batch.rb", "lib/google/api_client/service/request.rb", "lib/google/api_client/service/resource.rb", "lib/google/api_client/service/result.rb", "lib/google/api_client/service/simple_file_store.rb", "lib/google/api_client/service/stub_generator.rb", "lib/google/api_client/service_account.rb", "lib/google/api_client/version.rb", "lib/google/inflection.rb", "spec/fixtures", "spec/fixtures/files", "spec/fixtures/files/privatekey.p12", "spec/fixtures/files/sample.txt", "spec/fixtures/files/secret.pem", "spec/google", "spec/google/api_client", "spec/google/api_client/batch_spec.rb", "spec/google/api_client/discovery_spec.rb", "spec/google/api_client/gzip_spec.rb", "spec/google/api_client/media_spec.rb", "spec/google/api_client/request_spec.rb", "spec/google/api_client/result_spec.rb", "spec/google/api_client/service_account_spec.rb", "spec/google/api_client/service_spec.rb", "spec/google/api_client/simple_file_store_spec.rb", "spec/google/api_client_spec.rb", "spec/spec_helper.rb", "tasks/gem.rake", "tasks/git.rake", "tasks/metrics.rake", "tasks/spec.rake", "tasks/wiki.rake", "tasks/yard.rake", "CHANGELOG.md", "CONTRIBUTING.md", "Gemfile", "LICENSE", "README.md", "Rakefile"] - s.homepage = "https://github.com/google/google-api-ruby-client" - s.licenses = ["Apache 2.0"] + s.files = %w(google-api-client.gemspec Rakefile LICENSE CHANGELOG.md README.md Gemfile) + s.files += Dir.glob("lib/**/*.rb") + s.files += Dir.glob("spec/**/*.{rb,opts}") + s.files += Dir.glob("vendor/**/*.rb") + s.files += Dir.glob("tasks/**/*") + s.files += Dir.glob("website/**/*") + s.homepage = "https://github.com/google/google-api-ruby-client/" s.rdoc_options = ["--main", "README.md"] - s.require_paths = ["lib"] - s.rubygems_version = "2.0.7" - s.summary = "Package Summary" + s.summary = "The Google API Ruby Client makes it trivial to discover and access Google's REST APIs." - if s.respond_to? :specification_version then - s.specification_version = 4 + s.add_runtime_dependency 'addressable', '~> 2.3' + s.add_runtime_dependency 'signet', '~> 0.6' + s.add_runtime_dependency 'faraday', '~> 0.9' + s.add_runtime_dependency 'multi_json', '~> 1.10' + s.add_runtime_dependency 'uuidtools', "~> 2.1" + s.add_runtime_dependency 'autoparse', "~> 0.3" + s.add_runtime_dependency 'extlib', '~> 0.9' + s.add_runtime_dependency 'launchy', '~> 2.4' + s.add_runtime_dependency 'retriable', '~> 1.4' - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0.5.0"]) - s.add_runtime_dependency(%q, [">= 2.3.2"]) - s.add_runtime_dependency(%q, [">= 2.1.0"]) - s.add_runtime_dependency(%q, [">= 0.3.3"]) - s.add_runtime_dependency(%q, [">= 0.9.0"]) - s.add_runtime_dependency(%q, [">= 1.0.0"]) - s.add_runtime_dependency(%q, [">= 0.9.15"]) - s.add_runtime_dependency(%q, [">= 0.1.5"]) - s.add_runtime_dependency(%q, ["~> 1.4"]) - s.add_runtime_dependency(%q, [">= 2.1.1"]) - s.add_development_dependency(%q, [">= 0.9.0"]) - s.add_development_dependency(%q, [">= 2.11.0"]) - else - s.add_dependency(%q, [">= 0.5.0"]) - s.add_dependency(%q, [">= 2.3.2"]) - s.add_dependency(%q, [">= 2.1.0"]) - s.add_dependency(%q, [">= 0.3.3"]) - s.add_dependency(%q, [">= 0.9.0"]) - s.add_dependency(%q, [">= 1.0.0"]) - s.add_dependency(%q, [">= 0.9.15"]) - s.add_dependency(%q, [">= 0.1.5"]) - s.add_dependency(%q, ["~> 1.4"]) - s.add_dependency(%q, [">= 2.1.1"]) - s.add_dependency(%q, [">= 0.9.0"]) - s.add_dependency(%q, [">= 2.11.0"]) - end - else - s.add_dependency(%q, [">= 0.5.0"]) - s.add_dependency(%q, [">= 2.3.2"]) - s.add_dependency(%q, [">= 2.1.0"]) - s.add_dependency(%q, [">= 0.3.3"]) - s.add_dependency(%q, [">= 0.9.0"]) - s.add_dependency(%q, [">= 1.0.0"]) - s.add_dependency(%q, [">= 0.9.15"]) - s.add_dependency(%q, [">= 0.1.5"]) - s.add_dependency(%q, ["~> 1.4"]) - s.add_dependency(%q, [">= 2.1.1"]) - s.add_dependency(%q, [">= 0.9.0"]) - s.add_dependency(%q, [">= 2.11.0"]) - end + s.add_development_dependency 'rake', '~> 10.0' + s.add_development_dependency 'yard', '~> 0.8' + s.add_development_dependency 'rspec', '~> 3.1' + s.add_development_dependency 'kramdown', '~> 1.5' + s.add_development_dependency 'simplecov', '~> 0.9' end diff --git a/lib/google/api_client/auth/compute_service_account.rb b/lib/google/api_client/auth/compute_service_account.rb index 3f512f9a0..118f1e6eb 100644 --- a/lib/google/api_client/auth/compute_service_account.rb +++ b/lib/google/api_client/auth/compute_service_account.rb @@ -21,7 +21,7 @@ module Google def fetch_access_token(options={}) connection = options[:connection] || Faraday.default_connection response = connection.get 'http://metadata/computeMetadata/v1beta1/instance/service-accounts/default/token' - Signet::OAuth2.parse_json_credentials(response.body) + Signet::OAuth2.parse_credentials(response.body, response.headers['content-type']) end end end diff --git a/script/package b/script/package new file mode 100755 index 000000000..3f59b5037 --- /dev/null +++ b/script/package @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Usage: script/gem +# Updates the gemspec and builds a new gem in the pkg directory. + +mkdir -p pkg +gem build *.gemspec +mv *.gem pkg + diff --git a/script/release b/script/release new file mode 100755 index 000000000..1a26a4234 --- /dev/null +++ b/script/release @@ -0,0 +1,14 @@ +age: script/release +# Build the package, tag a commit, push it to origin, and then release the +# package publicly. + +set -e + +version="$(script/package | grep Version: | awk '{print $2}')" +[ -n "$version" ] || exit 1 + +git commit --allow-empty -a -m "Release $version" +git tag "$version" +git push --tags origin +gem push pkg/*-${version}.gem + diff --git a/spec/google/api_client/service_account_spec.rb b/spec/google/api_client/service_account_spec.rb index f700dfe19..51945b8e8 100644 --- a/spec/google/api_client/service_account_spec.rb +++ b/spec/google/api_client/service_account_spec.rb @@ -77,7 +77,7 @@ describe Google::APIClient::JWTAsserter do params = Addressable::URI.form_unencode(env[:body]) JWT.decode(params.assoc("assertion").last, @key.public_key) expect(params.assoc("grant_type")).to eq(['grant_type','urn:ietf:params:oauth:grant-type:jwt-bearer']) - [200, {}, '{ + [200, {'content-type' => 'application/json'}, '{ "access_token" : "1/abcdef1234567890", "token_type" : "Bearer", "expires_in" : 3600 @@ -97,7 +97,7 @@ describe Google::APIClient::JWTAsserter do params = Addressable::URI.form_unencode(env[:body]) JWT.decode(params.assoc("assertion").last, @key.public_key) expect(params.assoc("grant_type")).to eq(['grant_type','urn:ietf:params:oauth:grant-type:jwt-bearer']) - [200, {}, '{ + [200, {'content-type' => 'application/json'}, '{ "access_token" : "1/abcdef1234567890", "token_type" : "Bearer", "expires_in" : 3600 @@ -117,7 +117,7 @@ describe Google::APIClient::JWTAsserter do params = Addressable::URI.form_unencode(env[:body]) JWT.decode(params.assoc("assertion").last, @key.public_key) expect(params.assoc("grant_type")).to eq(['grant_type','urn:ietf:params:oauth:grant-type:jwt-bearer']) - [200, {}, '{ + [200, {'content-type' => 'application/json'}, '{ "access_token" : "1/abcdef1234567890", "token_type" : "Bearer", "expires_in" : 3600 @@ -127,7 +127,7 @@ describe Google::APIClient::JWTAsserter do params = Addressable::URI.form_unencode(env[:body]) JWT.decode(params.assoc("assertion").last, @key.public_key) expect(params.assoc("grant_type")).to eq(['grant_type','urn:ietf:params:oauth:grant-type:jwt-bearer']) - [200, {}, '{ + [200, {'content-type' => 'application/json'}, '{ "access_token" : "1/0987654321fedcba", "token_type" : "Bearer", "expires_in" : 3600 @@ -153,7 +153,7 @@ describe Google::APIClient::ComputeServiceAccount do conn = stub_connection do |stub| stub.get('/computeMetadata/v1beta1/instance/service-accounts/default/token') do |env| expect(env.url.host).to eq('metadata') - [200, {}, '{ + [200, {'content-type' => 'application/json'}, '{ "access_token" : "1/abcdef1234567890", "token_type" : "Bearer", "expires_in" : 3600 diff --git a/tasks/gem.rake b/tasks/gem.rake index 6a714a9d0..71edc7f81 100644 --- a/tasks/gem.rake +++ b/tasks/gem.rake @@ -1,81 +1,18 @@ -require 'rubygems/package_task' -require 'rake/clean' - -CLOBBER.include('pkg') +require "rubygems/package_task" namespace :gem do - GEM_SPEC = Gem::Specification.new do |s| - unless s.respond_to?(:add_development_dependency) - puts 'The gem spec requires a newer version of RubyGems.' - exit(1) - end - s.name = PKG_NAME - s.version = PKG_VERSION - s.author = PKG_AUTHOR - s.email = PKG_AUTHOR_EMAIL - s.summary = PKG_SUMMARY - s.description = PKG_DESCRIPTION - s.license = 'Apache 2.0' - s.files = PKG_FILES.to_a - - s.extra_rdoc_files = %w( README.md ) - s.rdoc_options.concat ['--main', 'README.md'] - - # Dependencies used in the main library - s.add_runtime_dependency('signet', '>= 0.5.0') - s.add_runtime_dependency('addressable', '>= 2.3.2') - s.add_runtime_dependency('uuidtools', '>= 2.1.0') - s.add_runtime_dependency('autoparse', '>= 0.3.3') - s.add_runtime_dependency('faraday', '>= 0.9.0') - s.add_runtime_dependency('multi_json', '>= 1.0.0') - s.add_runtime_dependency('extlib', '>= 0.9.15') - s.add_runtime_dependency('jwt', '>= 0.1.5') - s.add_runtime_dependency('retriable', '~> 1.4') - # Dependencies used in the CLI - s.add_runtime_dependency('launchy', '>= 2.1.1') - - # Dependencies used in the examples - s.add_development_dependency('rake', '>= 0.9.0') - s.add_development_dependency('rspec', '~> 3.0') - - s.require_path = 'lib' - - s.homepage = PKG_HOMEPAGE + desc "Build the gem" + task :build do + system "gem build signet.gemspec" end - Gem::PackageTask.new(GEM_SPEC) do |p| - p.gem_spec = GEM_SPEC - p.need_tar = true - p.need_zip = true - end - - desc 'Show information about the gem' - task :debug do - puts GEM_SPEC.to_ruby - end - - desc "Generates .gemspec file" - task :gemspec do - spec_string = GEM_SPEC.to_ruby - - begin - Thread.new { eval("$SAFE = 3\n#{spec_string}", binding) }.join - rescue - abort "unsafe gemspec: #{$!}" - else - File.open("#{GEM_SPEC.name}.gemspec", 'w') do |file| - file.write spec_string - end - end - end - - desc 'Install the gem' - task :install => ['clobber', 'gem:package'] do + desc "Install the gem" + task :install => ["clobber", "gem:package"] do sh "#{SUDO} gem install --local pkg/#{GEM_SPEC.full_name}" end - desc 'Uninstall the gem' + desc "Uninstall the gem" task :uninstall do installed_list = Gem.source_index.find_name(PKG_NAME) if installed_list && @@ -87,11 +24,11 @@ namespace :gem do end end - desc 'Reinstall the gem' + desc "Reinstall the gem" task :reinstall => [:uninstall, :install] end -desc 'Alias to gem:package' -task 'gem' => 'gem:package' +desc "Alias to gem:package" +task "gem" => "gem:package" -task 'gem:release' => 'gem:gemspec' +task "clobber" => ["gem:clobber_package"] \ No newline at end of file diff --git a/tasks/git.rake b/tasks/git.rake index c3c64cc1f..ac3f1c268 100644 --- a/tasks/git.rake +++ b/tasks/git.rake @@ -42,4 +42,4 @@ namespace :git do end end -task 'gem:release' => 'git:tag:create' +task 'gem:release' => 'git:tag:create' \ No newline at end of file