diff options
author | Dickson S. Guedes | 2011-09-28 03:50:49 +0000 |
---|---|---|
committer | Dickson S. Guedes | 2011-09-28 03:50:49 +0000 |
commit | fcea520370dd07d84e07660a09e2baf5ed8e4b31 (patch) | |
tree | 818ec641d2db7d85e870d2c18dde4e17b491e5e8 | |
parent | 9602960da44eb35f608d1fadac6a4c6e60f22e1e (diff) |
added initial git support. ref #16
-rw-r--r-- | lib/pgxn_utils.rb | 1 | ||||
-rw-r--r-- | lib/pgxn_utils/cli.rb | 5 | ||||
-rw-r--r-- | pgxn_utils.gemspec | 4 | ||||
-rw-r--r-- | spec/cli_spec.rb | 24 | ||||
-rw-r--r-- | spec/no_tasks_spec.rb | 2 | ||||
-rw-r--r-- | spec/spec_helper.rb | 25 |
6 files changed, 51 insertions, 10 deletions
diff --git a/lib/pgxn_utils.rb b/lib/pgxn_utils.rb index 0fea754..337f2f2 100644 --- a/lib/pgxn_utils.rb +++ b/lib/pgxn_utils.rb @@ -5,6 +5,7 @@ require 'zippy' require 'net/http/post/multipart' require 'net/https' require 'highline/import' +require 'grit' module PgxnUtils autoload :CLI, 'pgxn_utils/cli' diff --git a/lib/pgxn_utils/cli.rb b/lib/pgxn_utils/cli.rb index fc22c1d..412fc24 100644 --- a/lib/pgxn_utils/cli.rb +++ b/lib/pgxn_utils/cli.rb @@ -7,6 +7,7 @@ module PgxnUtils include Thor::Actions include PgxnUtils::NoTasks + include Grit desc "skeleton extension_name", "Creates an extension skeleton in current directory" @@ -23,6 +24,7 @@ module PgxnUtils method_option :generated_by, :aliases => "-b", :type => :string, :desc => "Name of extension's generator" method_option :tags, :aliases => "-t", :type => :array, :desc => "Defines extension's tags" method_option :release_status, :aliases => "-r", :type => :string, :desc => "Initial extension's release status" + method_option :git, :type => :boolean, :default => false, :desc => "Initialize a git repository after create the extension" def skeleton(extension_name,target=nil) self.target = options[:target] || target || "." @@ -35,8 +37,9 @@ module PgxnUtils say "Can't create an extension overwriting an existing directory.", :red else self.set_accessors extension_name - directory "root", extension_name + + Repo.init("#{self.target}/#{extension_name}") if options[:git] end end diff --git a/pgxn_utils.gemspec b/pgxn_utils.gemspec index 17c04b1..a91a608 100644 --- a/pgxn_utils.gemspec +++ b/pgxn_utils.gemspec @@ -57,7 +57,9 @@ Gem::Specification.new do |s| s.add_runtime_dependency "zippy", "~> 0.1.0" s.add_runtime_dependency "multipart-post", "~> 1.1.2" s.add_runtime_dependency "highline", "~> 1.6.2" + s.add_runtime_dependency "grit", "~> 2.4.1" s.add_development_dependency "rspec" + s.add_development_dependency "mocha" s.add_development_dependency "simplecov", "~> 0.4.0" else s.add_dependency "json", "~> 1.5.2" @@ -66,6 +68,7 @@ Gem::Specification.new do |s| s.add_dependency "zippy", "~> 0.1.0" s.add_dependency "multipart-post", "~> 1.1.2" s.add_dependency "highline", "~> 1.6.2" + s.add_dependency "grit", "~> 2.4.1" end else s.add_dependency "json", "~> 1.5.2" @@ -74,5 +77,6 @@ Gem::Specification.new do |s| s.add_dependency "zippy", "~> 0.1.0" s.add_dependency "multipart-post", "~> 1.1.2" s.add_dependency "highline", "~> 1.6.2" + s.add_dependency "grit", "~> 2.4.1" end end diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index 590d291..8be3073 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -14,14 +14,15 @@ describe PgxnUtils::CLI do context "#skeleton" do before(:each) do - @cli = PgxnUtils::CLI.new + system "rm -rf /tmp/extension.*" + system "rm -rf extension.*" end it "should accepts or not a target" do expected_extension = next_extension File.should_not exist(expected_extension) - skeleton "#{expected_extension}", "-p /tmp" + skeleton "#{expected_extension}", %w|-p /tmp| File.should exist("/tmp/#{expected_extension}") File.should_not exist(expected_extension) @@ -35,10 +36,9 @@ describe PgxnUtils::CLI do expected_mail = "[email protected]" expected_abstract = "Short description" expected_description = "Very Long description for my cool extension" - expected_tags = "one two tree" expected_version = "1.0.0" - skeleton expected_extension, "-p /tmp -m #{expected_name} -e #{expected_mail} -t #{expected_tags} -a '#{expected_abstract}' -d '#{expected_description}' -v #{expected_version}" + skeleton expected_extension, %W|-p /tmp -m #{expected_name} -e #{expected_mail} -t one two tree -a #{expected_abstract} -d #{expected_description} -v #{expected_version}| meta = File.read("/tmp/#{expected_extension}/META.json") meta.should match(/"name": "#{expected_extension}"/) @@ -86,7 +86,21 @@ describe PgxnUtils::CLI do ].sort end - it "should generates a git repo" + it "should generates a git repo with --git" do + expected_extension = next_extension + skeleton "#{expected_extension}", %w|--git| + + File.should exist("#{expected_extension}/.git") + lambda{ Grit::Repo.new(expected_extension) }.should_not raise_error + end + + it "should not generates a git repo with --no-git" do + expected_extension = next_extension + skeleton "#{expected_extension}", %w|--no-git| + + File.should_not exist("#{expected_extension}/.git") + lambda{ Grit::Repo.new(expected_extension) }.should raise_error + end end context "#change" do diff --git a/spec/no_tasks_spec.rb b/spec/no_tasks_spec.rb index 0117b72..9637882 100644 --- a/spec/no_tasks_spec.rb +++ b/spec/no_tasks_spec.rb @@ -7,6 +7,8 @@ describe PgxnUtils::NoTasks do after(:all) do rm_r("/tmp/teste") rm_r("/tmp/teste2") + + PgxnUtils::NoTasks.send(:remove_method, :options) end context "#resolve_extension_path_and_name" do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3ad1c37..d698aba 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -14,19 +14,36 @@ BIN_PATH = File.expand_path('../../bin/pgxn-utils', __FILE__) DESTINATION_ROOT = File.expand_path('../pgxn_utils', __FILE__) FileUtils.rm_rf(DESTINATION_ROOT) +RSpec.configure do |config| + # capture method from https://github.com/wycats/thor/blob/master/spec/spec_helper.rb#L36-47 + def capture(stream) + begin + stream = stream.to_s + eval "$#{stream} = StringIO.new" + yield + result = eval("$#{stream}").string + ensure + eval("$#{stream} = #{stream.upcase}") + end + + result + end +end + + def next_extension $counter += 1 "extension.#{$counter}" end -def skeleton(extension_name, args=nil) - run_pgxn_utils(:skeleton, "#{extension_name} #{args}") +def skeleton(extension_name, args=[]) + capture(:stdout) { PgxnUtils::CLI.start([ "skeleton", extension_name ] + args) } end def change(extension_name, args=nil) - run_pgxn_utils(:skeleton, "#{extension_name} #{args}") + #run_pgxn_utils(:skeleton, "#{extension_name} #{args}") end def run_pgxn_utils(task, args) - system "#{BIN_PATH} #{task.to_s} #{args} >/dev/null" + #system "#{BIN_PATH} #{task.to_s} #{args}" end |