summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDickson S. Guedes2011-05-25 11:25:01 +0000
committerDickson S. Guedes2011-05-25 11:25:01 +0000
commitf16d246f294d54da83a685d063930218b9495292 (patch)
tree9e8d1bf75c8f5d8874a9fdc9a4ab1955fcf76336
parentb187432f4f8de8a0fd8302b543aaad0185ec6b74 (diff)
WIP: change internal behaviour for extension name
-rw-r--r--lib/pgxn_utils/cli.rb56
1 files changed, 44 insertions, 12 deletions
diff --git a/lib/pgxn_utils/cli.rb b/lib/pgxn_utils/cli.rb
index a5b6c42..7dea5a9 100644
--- a/lib/pgxn_utils/cli.rb
+++ b/lib/pgxn_utils/cli.rb
@@ -25,13 +25,20 @@ module PgxnUtils
def skeleton(extension_name,target=nil)
self.target = options[:target] || target || "."
- self.set_accessors extension_name
- directory "root", extension_name
+ if is_extension?("#{self.target}/#{extension_name}")
+ say "'#{extension_name}' already exists. Please, use 'change' instead 'skeleton'."
+ else
+ self.set_accessors extension_name
+
+ directory "root", extension_name
+ end
end
desc "change [extension_name]", "Change META's attributes in current extension."
+ method_option :target, :aliases => "-p", :type => :string, :default => ".", :desc => "Define the target directory"
+
# META required fields
method_option :maintainer, :aliases => "-m", :type => :string, :desc => "Maintainer's name <maintainer@email>"
#method_option :maintainer_mail, :aliases => "-e", :type => :string, :desc => "Maintainer's mail"
@@ -46,12 +53,21 @@ module PgxnUtils
method_option :release_status, :aliases => "-r", :type => :string, :desc => "Initial extension's release status"
def change(extension_name=".")
- path = File.expand_path(extension_name)
-
- target = File.expand_path('..', path)
- extension_name = File.basename(path)
-
- skeleton(extension_name, target)
+ puts "chamando resolve"
+ extension_path, discard = resolve_extension_path_and_name(extension_name)
+ puts extension_path
+ self.target = options[:target]
+ self.extension_name = extension_name
+
+ set_accessors(extension_name)
+ puts "iniciando"
+
+ if is_extension?(extension_path)
+ template "root/META.json.tt", "#{extension_path}/META.json"
+ template "root/%extension_name%.control.tt", "#{extension_path}/%extension_name%.control"
+ else
+ say "'#{extension_name}' isn't a extension"
+ end
end
desc "bundle [extension_name]", "Bundles an extension."
@@ -80,6 +96,24 @@ module PgxnUtils
end
no_tasks do
+ def resolve_extension_path_and_name(extension_name)
+ raise ArgumentError, "#{extension_name} isn't"
+ target = options[:target]
+ extension_path = "."
+
+ if target != "." && extension_name == "."
+ raise ArgumentError, "Please, supply a extension name"
+ elsif target == "."
+ extension_path = File.expand_path(extension_name)
+ extension_name = File.basename(extension_path)
+ else
+ extension_path = "#{target}/#{extension_name}"
+ end
+ puts ">>>> #{extension_path}"
+ #puts extension_name
+ [ extension_path, extension_name ]
+ end
+
def can_zip?(archive)
can_zip = false
@@ -99,10 +133,8 @@ module PgxnUtils
end
def config_options
- file = ""
- file = File.join(file, self.target) if self.target != "."
- file = File.join(file, self.extension_name) if self.extension_name
- file = File.join(file, "META.json")
+ extension_path, extension_name = resolve_extension_path_and_name(self.extension_name)
+ file = File.join(extension_path, "META.json")
if File.exist?(file)
@@config_options ||= JSON.load(File.read(file))