diff options
author | Dickson S. Guedes | 2011-05-25 11:25:01 +0000 |
---|---|---|
committer | Dickson S. Guedes | 2011-05-25 11:25:01 +0000 |
commit | f16d246f294d54da83a685d063930218b9495292 (patch) | |
tree | 9e8d1bf75c8f5d8874a9fdc9a4ab1955fcf76336 | |
parent | b187432f4f8de8a0fd8302b543aaad0185ec6b74 (diff) |
WIP: change internal behaviour for extension name
-rw-r--r-- | lib/pgxn_utils/cli.rb | 56 |
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)) |