docs: def execute(prog, argv):
      """Execute whole program
  
      :param prog: program name
      :param argv: list: script arguments
      :return:
      """
      if pathlib.Path(prog).parts[-1] in ('versionner', 'versionner.py'):
          print("versionner name is deprecated, use \"ver\" now!", file=sys.stderr)
  
      cfg_files = [
          pathlib.Path(os.path.expanduser('~')) / defaults.RC_FILENAME,
      ]
      proj_cfg_file = _find_project_config_file(cfg_files[0])
      if proj_cfg_file:
          cfg_files.append(proj_cfg_file)
  
      cfg = config.Config(cfg_files)
      parse_args(argv, cfg)
  
      cmd = commands.get(cfg.command, cfg)
  
      try:
          result = cmd.execute()
      except VersionnerError as exc:
          print('%s: %s' % (exc.__class__.__name__, exc), file=sys.stderr)
          return exc.ret_code
  
      print("Current version: %s" % (result.current_version, ))
  
      if result.modified_files:
          print('Changed' + (' and committed' if cfg.commit else '') + ' %(files)s files (%(changes)s changes)' % {
              'files': result.modified_files,
              'changes': result.modifications,
          })
  
      return 0