617 cubename = args[0] |
617 cubename = args[0] |
618 if not re.match('[_A-Za-z][_A-Za-z0-9]*$', cubename): |
618 if not re.match('[_A-Za-z][_A-Za-z0-9]*$', cubename): |
619 raise BadCommandUsage( |
619 raise BadCommandUsage( |
620 'cube name must be a valid python module name') |
620 'cube name must be a valid python module name') |
621 verbose = self.get('verbose') |
621 verbose = self.get('verbose') |
622 cubesdir = self.get('directory') |
622 destdir = self.get('directory') |
623 if not cubesdir: |
623 if not destdir: |
624 cubespath = ServerConfiguration.cubes_search_path() |
624 cubespath = ServerConfiguration.cubes_search_path() |
625 if len(cubespath) > 1: |
625 if len(cubespath) > 1: |
626 raise BadCommandUsage( |
626 raise BadCommandUsage( |
627 "can't guess directory where to put the new cube." |
627 "can't guess directory where to put the new cube." |
628 " Please specify it using the --directory option") |
628 " Please specify it using the --directory option") |
629 cubesdir = cubespath[0] |
629 destdir = cubespath[0] |
630 if not osp.isdir(cubesdir): |
630 if not osp.isdir(destdir): |
631 print("-> creating cubes directory", cubesdir) |
631 print("-> creating cubes directory", destdir) |
632 try: |
632 try: |
633 mkdir(cubesdir) |
633 mkdir(destdir) |
634 except OSError as err: |
634 except OSError as err: |
635 self.fail("failed to create directory %r\n(%s)" |
635 self.fail("failed to create directory %r\n(%s)" |
636 % (cubesdir, err)) |
636 % (destdir, err)) |
637 cubedir = osp.join(cubesdir, cubename) |
|
638 if osp.exists(cubedir): |
|
639 self.fail("%s already exists!" % cubedir) |
|
640 skeldir = osp.join(BASEDIR, 'skeleton') |
|
641 default_name = 'cubicweb-%s' % cubename.lower().replace('_', '-') |
637 default_name = 'cubicweb-%s' % cubename.lower().replace('_', '-') |
642 if verbose: |
638 if verbose: |
643 distname = input('Debian name for your cube ? [%s]): ' |
639 distname = input('Debian name for your cube ? [%s]): ' |
644 % default_name).strip() |
640 % default_name).strip() |
645 if not distname: |
641 if not distname: |
646 distname = default_name |
642 distname = default_name |
647 elif not distname.startswith('cubicweb-'): |
643 elif not distname.startswith('cubicweb-'): |
648 if ASK.confirm('Do you mean cubicweb-%s ?' % distname): |
644 if ASK.confirm('Do you mean cubicweb-%s ?' % distname): |
649 distname = 'cubicweb-' + distname |
645 distname = 'cubicweb-' + distname |
650 else: |
646 else: |
651 distname = default_name |
647 distname = default_name |
652 if not re.match('[a-z][-a-z0-9]*$', distname): |
648 if not re.match('[a-z][-a-z0-9]*$', distname): |
653 raise BadCommandUsage( |
649 raise BadCommandUsage( |
654 'cube distname should be a valid debian package name') |
650 'cube distname should be a valid debian package name') |
|
651 cubedir = osp.join(destdir, distname) |
|
652 if osp.exists(cubedir): |
|
653 self.fail("%s already exists!" % cubedir) |
|
654 skeldir = osp.join(BASEDIR, 'skeleton') |
655 longdesc = shortdesc = input( |
655 longdesc = shortdesc = input( |
656 'Enter a short description for your cube: ') |
656 'Enter a short description for your cube: ') |
657 if verbose: |
657 if verbose: |
658 longdesc = input( |
658 longdesc = input( |
659 'Enter a long description (leave empty to reuse the short one): ') |
659 'Enter a long description (leave empty to reuse the short one): ') |
660 dependencies = {'cubicweb': '>= %s' % cubicwebversion, |
660 dependencies = { |
661 'six': '>= 1.4.0',} |
661 'six': '>= 1.4.0', |
|
662 'cubicweb': '>= %s' % cubicwebversion, |
|
663 } |
662 if verbose: |
664 if verbose: |
663 dependencies.update(self._ask_for_dependencies()) |
665 dependencies.update(self._ask_for_dependencies()) |
664 context = {'cubename' : cubename, |
666 context = {'cubename' : cubename, |
665 'distname' : distname, |
667 'distname' : distname, |
666 'shortdesc' : shortdesc, |
668 'shortdesc' : shortdesc, |