diff options
author | Dickson S. Guedes | 2011-05-07 01:40:30 +0000 |
---|---|---|
committer | Dickson S. Guedes | 2011-05-07 01:40:30 +0000 |
commit | 82458e2d0c9e139cc8eec2a8aa04318239e9a548 (patch) | |
tree | 04cc47160ce86b7e588fbe0ec8cf9c34b12cc6cc | |
parent | 540949109a2239b88ab32a76a57588f1c4f5c5fe (diff) |
added initial specs and firt tests working
-rw-r--r-- | lib/pgxn_utils.rb | 2 | ||||
-rw-r--r-- | lib/pgxn_utils/cli.rb | 12 | ||||
-rw-r--r-- | spec/cli_spec.rb | 26 |
3 files changed, 37 insertions, 3 deletions
diff --git a/lib/pgxn_utils.rb b/lib/pgxn_utils.rb index 57b3977..e16c13a 100644 --- a/lib/pgxn_utils.rb +++ b/lib/pgxn_utils.rb @@ -1,3 +1,5 @@ +require 'thor' + module PgxnUtils autoload :CLI, 'pgxn_utils/cli' end diff --git a/lib/pgxn_utils/cli.rb b/lib/pgxn_utils/cli.rb index 064b651..f80a77c 100644 --- a/lib/pgxn_utils/cli.rb +++ b/lib/pgxn_utils/cli.rb @@ -1,5 +1,13 @@ module PgxnUtils - class CLI - + class CLI < Thor + desc "create_extension EXTENSION_NAME", "creates an extension skeleton in current directory" + def create_extension(extension_name) + %x[bash -c "mkdir -p #{extension_name}/{sql,doc,test/{sql,expected}}"] + %x[bash -c "touch #{extension_name}/{sql/{#{extension_name},uninstall_#{extension_name}}.sql,doc/#{extension_name}.md,test/{sql/base.sql,expected/base.out}}"] + %x[echo "results/" > #{extension_name}/.gitignore] + %x[touch #{extension_name}/META.json] + %x[touch #{extension_name}/Makefile] + %x[touch #{extension_name}/#{extension_name}.control] + end end end diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb index 7e010b9..7122e26 100644 --- a/spec/cli_spec.rb +++ b/spec/cli_spec.rb @@ -1,8 +1,32 @@ require File.expand_path('spec/spec_helper') describe PgxnUtils::CLI do + before(:each) do + @cli = PgxnUtils::CLI.new + @extension_name = "extension_test.#{$$}" + end context "create extension" do - it "should generates an skeleton" + it "should accepts a path and extracts destination and extension name" + + it "should generates an skeleton" do + @cli.create_extension(@extension_name) + Dir["#{@extension_name}/**/*"].sort.should be_eql([ + "#{@extension_name}/META.json", + "#{@extension_name}/Makefile", + "#{@extension_name}/doc", + "#{@extension_name}/doc/#{@extension_name}.md", + "#{@extension_name}/sql", + "#{@extension_name}/sql/#{@extension_name}.sql", + "#{@extension_name}/sql/uninstall_#{@extension_name}.sql", + "#{@extension_name}/test", + "#{@extension_name}/test/expected", + "#{@extension_name}/test/expected/base.out", + "#{@extension_name}/test/sql", + "#{@extension_name}/test/sql/base.sql", + "#{@extension_name}/#{@extension_name}.control" + ].sort) + end + it "should generates a test skeleton" it "should accepts name and email as comand line" it "should accepts short and long description as command line" |