    # File lib/chef/knife/client_create.rb, line 43
          def run
            @client_name = @name_args[0]

            if @client_name.nil?
              show_usage
              ui.fatal("You must specify a client name")
              exit 1
            end

            client = Chef::ApiClient.new
            client.name(@client_name)
            client.admin(config[:admin])

            output = edit_data(client)

            # Chef::ApiClient.save will try to create a client and if it exists will update it instead silently
            client = output.save

            # We only get a private_key on client creation, not on client update.
            if client['private_key']
              ui.info("Created #{output}")

              if config[:file]
                File.open(config[:file], "w") do |f|
                  f.print(client['private_key'])
                end
              else
                puts client['private_key']
              end
            else
              ui.error "Client '#{client['name']}' already exists"
            end
          end