Revision 7147e1ca

b/kamaki/cli/commands/pithos_cli.py
34 34
from kamaki.cli import command
35 35
from kamaki.cli.command_tree import CommandTree
36 36
from kamaki.cli.errors import raiseCLIError, CLISyntaxError
37
from kamaki.cli.utils import format_size, print_dict, pretty_keys, page_hold
37
from kamaki.cli.utils import (
38
    format_size,
39
    print_dict,
40
    pretty_keys,
41
    page_hold,
42
    ask_user)
38 43
from kamaki.cli.argument import FlagArgument, ValueArgument, IntArgument
39 44
from kamaki.cli.argument import KeyValueArgument, DateArgument
40 45
from kamaki.cli.argument import ProgressBarArgument
......
1302 1307

  
1303 1308
    arguments = dict(
1304 1309
        until=DateArgument('remove history until that date', '--until'),
1310
        yes=FlagArgument('Do not prompt for permission', '--yes'),
1305 1311
        recursive=FlagArgument(
1306 1312
            'empty dir or container and delete (if dir)',
1307 1313
            ('-r', '--recursive'))
......
1317 1323
    def main(self, container____path__):
1318 1324
        super(self.__class__, self).main(container____path__)
1319 1325
        try:
1320
            if self.path is None:
1321
                self.client.del_container(
1322
                    until=self['until'],
1323
                    delimiter=self['delimiter'])
1326
            if (not self.path):
1327
                if self['yes'] or ask_user(
1328
                    'Delete container %s ?' % self.container):
1329
                    self.client.del_container(
1330
                        until=self['until'],
1331
                        delimiter=self['delimiter'])
1324 1332
            else:
1325
                # self.client.delete_object(self.path)
1326
                self.client.del_object(
1327
                    self.path,
1328
                    until=self['until'],
1329
                    delimiter=self['delimiter'])
1333
                if self['yes'] or ask_user(
1334
                    'Delete %s:%s ?' % (self.container, self.path)):
1335
                    self.client.del_object(
1336
                        self.path,
1337
                        until=self['until'],
1338
                        delimiter=self['delimiter'])
1330 1339
        except ClientError as err:
1331 1340
            if err.status == 404:
1332 1341
                if 'container' in ('%s' % err).lower():
......
1358 1367
    .      container and data blocks are released and deleted
1359 1368
    """
1360 1369

  
1370
    arguments = dict(
1371
        yes=FlagArgument('Do not prompt for permission', '--yes'),
1372
    )
1373

  
1361 1374
    def main(self, container):
1362 1375
        super(self.__class__, self).main(container)
1363 1376
        try:
1364
            self.client.purge_container()
1377
            if self['yes'] or ask_user(
1378
                'Purge container %s?' % self.container):
1379
                self.client.purge_container()
1365 1380
        except ClientError as err:
1366 1381
            if err.status == 404:
1367 1382
                if 'container' in ('%s' % err).lower():
b/kamaki/cli/utils.py
323 323
        terms.append(ipart[2:-2])
324 324
    terms += _sub_split(trivial_parts[-1])
325 325
    return terms
326

  
327

  
328
def ask_user(msg, true_responses=('Y', 'y')):
329
    """Print msg and read user response
330

  
331
    :param true_responses: (tuple of chars)
332

  
333
    :returns: (bool) True if reponse in true responses, False otherwise
334
    """
335
    stdout.write('%s (%s for yes):' % (msg, true_responses))
336
    stdout.flush()
337
    user_response = stdin.read(1)
338
    return user_response[0] in true_responses

Also available in: Unified diff