from flask import current_app


def list_routes():
    """List URLs of all application routes."""
    for rule in sorted(current_app.url_map.iter_rules(), key=lambda r: r.rule):
        print("{:10} {}".format(", ".join(rule.methods - set(['OPTIONS', 'HEAD'])), rule.rule))  # noqa


def setup_commands(application):
    application.cli.command('list-routes')(list_routes)

import click
from flask import current_app
from flask.cli import with_appcontext


@click.command('list-routes')
@with_appcontext
def list_routes():
    """List URLs of all application routes."""
    for rule in sorted(current_app.url_map.iter_rules(), key=lambda r: r.rule):
        print("{:10} {}".format(", ".join(rule.methods - set(['OPTIONS', 'HEAD'])), rule.rule))  # noqa


def setup_commands(application):
    application.cli.add_command(list_routes)

Switch existing command to standard approach
Switch existing command to standard approach

This is the suggested approach in the documentation [1] and using
it makes it clearer what's going on and to add other commands with
arguments, which we'll do in the next commit.

[1]: https://flask.palletsprojects.com/en/2.0.x/cli/#custom-commands

+ import click
  from flask import current_app
+ from flask.cli import with_appcontext
  
  
+ @click.command('list-routes')
+ @with_appcontext
  def list_routes():
      """List URLs of all application routes."""
      for rule in sorted(current_app.url_map.iter_rules(), key=lambda r: r.rule):
          print("{:10} {}".format(", ".join(rule.methods - set(['OPTIONS', 'HEAD'])), rule.rule))  # noqa
  
  
  def setup_commands(application):
-     application.cli.command('list-routes')(list_routes)
+     application.cli.add_command(list_routes)
  
Switch existing command to standard approach
## Code Before:
from flask import current_app


def list_routes():
    """List URLs of all application routes."""
    for rule in sorted(current_app.url_map.iter_rules(), key=lambda r: r.rule):
        print("{:10} {}".format(", ".join(rule.methods - set(['OPTIONS', 'HEAD'])), rule.rule))  # noqa


def setup_commands(application):
    application.cli.command('list-routes')(list_routes)

## Instruction:
Switch existing command to standard approach
## Code After:
import click
from flask import current_app
from flask.cli import with_appcontext


@click.command('list-routes')
@with_appcontext
def list_routes():
    """List URLs of all application routes."""
    for rule in sorted(current_app.url_map.iter_rules(), key=lambda r: r.rule):
        print("{:10} {}".format(", ".join(rule.methods - set(['OPTIONS', 'HEAD'])), rule.rule))  # noqa


def setup_commands(application):
    application.cli.add_command(list_routes)
