cubicweb/devtools/devctl.py
changeset 11454 7770559e3945
parent 11129 97095348b3ee
child 11460 5be729810695
equal deleted inserted replaced
11453:3522d2a3389e 11454:7770559e3945
   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,