summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDickson S. Guedes2011-05-07 01:40:30 +0000
committerDickson S. Guedes2011-05-07 01:40:30 +0000
commit82458e2d0c9e139cc8eec2a8aa04318239e9a548 (patch)
tree04cc47160ce86b7e588fbe0ec8cf9c34b12cc6cc
parent540949109a2239b88ab32a76a57588f1c4f5c5fe (diff)
added initial specs and firt tests working
-rw-r--r--lib/pgxn_utils.rb2
-rw-r--r--lib/pgxn_utils/cli.rb12
-rw-r--r--spec/cli_spec.rb26
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"