diff options
-rw-r--r-- | lib/leap_cli/commands/new.rb (renamed from lib/leap_cli/commands/project.rb) | 66 | ||||
-rw-r--r-- | lib/leap_cli/path.rb | 8 |
2 files changed, 51 insertions, 23 deletions
diff --git a/lib/leap_cli/commands/project.rb b/lib/leap_cli/commands/new.rb index fc3972f..c4a067e 100644 --- a/lib/leap_cli/commands/project.rb +++ b/lib/leap_cli/commands/new.rb @@ -2,22 +2,23 @@ require 'fileutils' module LeapCli; module Commands - desc 'Initializes a new LEAP provider in the specified directory.' - arg_name 'directory-path' + desc 'Creates a new provider instance in the specified directory, creating it if necessary.' + arg_name 'DIRECTORY' skips_pre - command :init do |c| - c.flag 'name', :desc => "The name of the provider", :default_value => 'Example' - c.flag 'domain', :desc => "The primary domain of the provider", :default_value => 'example.org' - c.flag 'platform', :desc => "File path of the leap_platform directory", :default_value => '../leap_platform' + command :new do |c| + c.flag 'name', :desc => "The name of the provider" #, :default_value => 'Example' + c.flag 'domain', :desc => "The primary domain of the provider" #, :default_value => 'example.org' + c.flag 'platform', :desc => "File path of the leap_platform directory" #, :default_value => '../leap_platform' + c.flag 'contacts', :desc => "Default email address contacts" #, :default_value => 'root' + c.action do |global, options, args| - directory = args.first - unless directory && directory.any? - help! "Directory name is required." - end - directory = File.expand_path(directory) - unless File.exists?(directory) - bail! { log :missing, "directory #{directory}" } - end + directory = File.expand_path(args.first) + create_provider_directory(global, directory) + options[:domain] ||= ask("The primary domain of the provider: ") {|q| q.default = 'example.org'} + options[:name] ||= ask("The name of the provider: ") {|q| q.default = 'Example'} + options[:platform] ||= ask("File path of the leap_platform directory: ") {|q| q.default = File.expand_path('../leap_platform', directory)} + options[:contacts] ||= ask("Default email address contacts: ") {|q| q.default = 'root@' + options[:domain]} + options[:platform] = relative_path(options[:platform]) create_initial_provider_files(directory, global, options) end end @@ -27,22 +28,37 @@ module LeapCli; module Commands DEFAULT_REPO = 'git://leap.se/leap_platform' # TODO: use https # - # creates new provider directory + # creates a new provider directory # - def create_initial_provider_files(directory, global, options) + def create_provider_directory(global, directory) + unless directory && directory.any? + help! "Directory name is required." + end + unless File.exists?(directory) + if global[:yes] || agree("Create directory #{directory}? ") + ensure_dir directory + else + bail! { log :missing, "directory #{directory}" } + end + end Path.set_provider_path(directory) + end + + # + # see provider with initial files + # + def create_initial_provider_files(directory, global, options) Dir.chdir(directory) do assert_files_missing! 'provider.json', 'common.json', 'Leapfile', :base => directory - platform_dir = File.expand_path(options[:platform]) - + platform_dir = File.expand_path(options[:platform], "./") unless File.symlink?(platform_dir) || File.directory?(platform_dir) - if global[:yes] || agree("The platform directory \"#{options[:platform]}\" does not exist.\nDo you want me to create it by cloning from the\ngit repository #{DEFAULT_REPO}? ") + if global[:yes] || agree("The platform directory \"#{platform_dir}\" does not exist.\nDo you want me to create it by cloning from the\ngit repository #{DEFAULT_REPO}? ") assert_bin! 'git' ensure_dir platform_dir Dir.chdir(platform_dir) do log :cloning, "leap_platform into #{platform_dir}" - pty_run "git clone --branch develop #{DEFAULT_REPO} ." + pty_run "git clone --branch master #{DEFAULT_REPO} ." pty_run 'git submodule update --init' end else @@ -60,13 +76,18 @@ module LeapCli; module Commands end end + def relative_path(path) + Pathname.new(path).relative_path_from(Pathname.new(Path.provider)).to_s + end + def leapfile_content(options) + # @leap_version = "#{LeapCli::VERSION}" %[## Required: @platform_directory_path = "#{options[:platform]}" -@leap_version = "#{LeapCli::VERSION}" ## Optional: # @custom_vagrant_vm_line = "config.vm.boot_mode = :gui" +# @log = "/tmp/leap.log" ] end @@ -89,6 +110,9 @@ EOS "description": { "en": "You really should change this text" }, + "contacts": { + "default": "#{options[:contacts]}" + }, "languages": ["en"], "default_language": "en", "enrollment_policy": "open" diff --git a/lib/leap_cli/path.rb b/lib/leap_cli/path.rb index 7628628..634284d 100644 --- a/lib/leap_cli/path.rb +++ b/lib/leap_cli/path.rb @@ -135,8 +135,12 @@ module LeapCli; module Path end def self.relative_path(path, provider_dir=Path.provider) - path = named_path(path, provider_dir) - path.sub(/^#{Regexp.escape(provider_dir)}\//,'') + if provider_dir + path = named_path(path, provider_dir) + path.sub(/^#{Regexp.escape(provider_dir)}\//,'') + else + path + end end end; end |