We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
usability / doc issues (minor / feature request)
On ignoring Mackup since I installed it for multiple accounts, I'm now returning to working with it  to bring some more machines into the group and reorganise.  Here are some minor issues I ran into getting back up to speed:

* `mackup uninstall` says: 
    Every configuration file, setting and dotfile managed by Mackup will be unlinked and moved back to their original place, in your home folder.
    Are you sure ? <Yes|No>yes

This is scary and actually incorrect.  Please change 'moved' to 'copied' (obviously Mackup does the correct cp as mv would be an issue for all the other accounts).

* Would be nice to have a few lines in Bull*/backup on "What if I run `mackup backup` twice?" and/or maybe "How do I add another application later after the initial setup?"  Again, obviously Mackup does the right thing, but my (pedantic?)  reading of the documentation suggests it might not.  The --dry-run option already helps with this.

* it would be **way cool** if `mackup list` also reported things like: 'configuration files detected' and 'configuration already in Mackup', and for these cases also 'mackup.cfg includes' (implicit or explicit with applications_to_sync) or 'mackup.cfg excludes' 

Thanks!

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `mackup/main.py`
Content:
```
1 """Mackup.
2 
3 Keep your application settings in sync.
4 Copyright (C) 2013-2021 Laurent Raufaste <http://glop.org/>
5 
6 Usage:
7   mackup list
8   mackup [options] backup
9   mackup [options] restore
10   mackup show <application>
11   mackup [options] uninstall
12   mackup (-h | --help)
13   mackup --version
14 
15 Options:
16   -h --help     Show this screen.
17   -f --force    Force every question asked to be answered with "Yes".
18   -r --root     Allow mackup to be run as superuser.
19   -n --dry-run  Show steps without executing.
20   -v --verbose  Show additional details.
21   --version     Show version.
22 
23 Modes of action:
24  1. list: display a list of all supported applications.
25  2. backup: sync your conf files to your synced storage, use this the 1st time
26     you use Mackup.
27  3. restore: link the conf files already in your synced storage on your system,
28     use it on any new system you use.
29  4. uninstall: reset everything as it was before using Mackup.
30 
31 By default, Mackup syncs all application data via
32 Dropbox, but may be configured to exclude applications or use a different
33 backend with a .mackup.cfg file.
34 
35 See https://github.com/lra/mackup/tree/master/doc for more information.
36 
37 """
38 from docopt import docopt
39 from .appsdb import ApplicationsDatabase
40 from .application import ApplicationProfile
41 from .constants import MACKUP_APP_NAME, VERSION
42 from .mackup import Mackup
43 from . import utils
44 import sys
45 
46 
47 class ColorFormatCodes:
48     BLUE = "\033[34m"
49     BOLD = "\033[1m"
50     NORMAL = "\033[0m"
51 
52 
53 def header(str):
54     return ColorFormatCodes.BLUE + str + ColorFormatCodes.NORMAL
55 
56 
57 def bold(str):
58     return ColorFormatCodes.BOLD + str + ColorFormatCodes.NORMAL
59 
60 
61 def main():
62     """Main function."""
63     # Get the command line arg
64     args = docopt(__doc__, version="Mackup {}".format(VERSION))
65 
66     mckp = Mackup()
67     app_db = ApplicationsDatabase()
68 
69     def printAppHeader(app_name):
70         if verbose:
71             print(("\n{0} {1} {0}").format(header("---"), bold(app_name)))
72 
73     # If we want to answer mackup with "yes" for each question
74     if args["--force"]:
75         utils.FORCE_YES = True
76 
77     # Allow mackup to be run as root
78     if args["--root"]:
79         utils.CAN_RUN_AS_ROOT = True
80 
81     dry_run = args["--dry-run"]
82 
83     verbose = args["--verbose"]
84 
85     if args["backup"]:
86         # Check the env where the command is being run
87         mckp.check_for_usable_backup_env()
88 
89         # Backup each application
90         for app_name in sorted(mckp.get_apps_to_backup()):
91             app = ApplicationProfile(mckp, app_db.get_files(app_name), dry_run, verbose)
92             printAppHeader(app_name)
93             app.backup()
94 
95     elif args["restore"]:
96         # Check the env where the command is being run
97         mckp.check_for_usable_restore_env()
98 
99         # Restore the Mackup config before any other config, as we might need
100         # it to know about custom settings
101         mackup_app = ApplicationProfile(
102             mckp, app_db.get_files(MACKUP_APP_NAME), dry_run, verbose
103         )
104         printAppHeader(MACKUP_APP_NAME)
105         mackup_app.restore()
106 
107         # Initialize again the apps db, as the Mackup config might have changed
108         # it
109         mckp = Mackup()
110         app_db = ApplicationsDatabase()
111 
112         # Restore the rest of the app configs, using the restored Mackup config
113         app_names = mckp.get_apps_to_backup()
114         # Mackup has already been done
115         app_names.discard(MACKUP_APP_NAME)
116 
117         for app_name in sorted(app_names):
118             app = ApplicationProfile(mckp, app_db.get_files(app_name), dry_run, verbose)
119             printAppHeader(app_name)
120             app.restore()
121 
122     elif args["uninstall"]:
123         # Check the env where the command is being run
124         mckp.check_for_usable_restore_env()
125 
126         if dry_run or (
127             utils.confirm(
128                 "You are going to uninstall Mackup.\n"
129                 "Every configuration file, setting and dotfile"
130                 " managed by Mackup will be unlinked and moved back"
131                 " to their original place, in your home folder.\n"
132                 "Are you sure?"
133             )
134         ):
135 
136             # Uninstall the apps except Mackup, which we'll uninstall last, to
137             # keep the settings as long as possible
138             app_names = mckp.get_apps_to_backup()
139             app_names.discard(MACKUP_APP_NAME)
140 
141             for app_name in sorted(app_names):
142                 app = ApplicationProfile(
143                     mckp, app_db.get_files(app_name), dry_run, verbose
144                 )
145                 printAppHeader(app_name)
146                 app.uninstall()
147 
148             # Restore the Mackup config before any other config, as we might
149             # need it to know about custom settings
150             mackup_app = ApplicationProfile(
151                 mckp, app_db.get_files(MACKUP_APP_NAME), dry_run, verbose
152             )
153             mackup_app.uninstall()
154 
155             # Delete the Mackup folder in Dropbox
156             # Don't delete this as there might be other Macs that aren't
157             # uninstalled yet
158             # delete(mckp.mackup_folder)
159 
160             print(
161                 "\n"
162                 "All your files have been put back into place. You can now"
163                 " safely uninstall Mackup.\n"
164                 "\n"
165                 "Thanks for using Mackup!"
166             )
167 
168     elif args["list"]:
169         # Display the list of supported applications
170         mckp.check_for_usable_environment()
171         output = "Supported applications:\n"
172         for app_name in sorted(app_db.get_app_names()):
173             output += " - {}\n".format(app_name)
174         output += "\n"
175         output += "{} applications supported in Mackup v{}".format(
176             len(app_db.get_app_names()), VERSION
177         )
178         print(output)
179 
180     elif args["show"]:
181         mckp.check_for_usable_environment()
182         app_name = args["<application>"]
183 
184         # Make sure the app exists
185         if app_name not in app_db.get_app_names():
186             sys.exit("Unsupported application: {}".format(app_name))
187         print("Name: {}".format(app_db.get_name(app_name)))
188         print("Configuration files:")
189         for file in app_db.get_files(app_name):
190             print(" - {}".format(file))
191 
192     # Delete the tmp folder
193     mckp.clean_temp_folder()
194
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/mackup/main.py b/mackup/main.py
--- a/mackup/main.py
+++ b/mackup/main.py
@@ -127,7 +127,7 @@
             utils.confirm(
                 "You are going to uninstall Mackup.\n"
                 "Every configuration file, setting and dotfile"
-                " managed by Mackup will be unlinked and moved back"
+                " managed by Mackup will be unlinked and copied back"
                 " to their original place, in your home folder.\n"
                 "Are you sure?"
             )

{"golden_diff": "diff --git a/mackup/main.py b/mackup/main.py\n--- a/mackup/main.py\n+++ b/mackup/main.py\n@@ -127,7 +127,7 @@\n             utils.confirm(\n                 \"You are going to uninstall Mackup.\\n\"\n                 \"Every configuration file, setting and dotfile\"\n-                \" managed by Mackup will be unlinked and moved back\"\n+                \" managed by Mackup will be unlinked and copied back\"\n                 \" to their original place, in your home folder.\\n\"\n                 \"Are you sure?\"\n             )\n", "issue": "usability / doc issues (minor / feature request)\nOn ignoring Mackup since I installed it for multiple accounts, I'm now returning to working with it  to bring some more machines into the group and reorganise.  Here are some minor issues I ran into getting back up to speed:\r\n\r\n* `mackup uninstall` says: \r\n    Every configuration file, setting and dotfile managed by Mackup will be unlinked and moved back to their original place, in your home folder.\r\n    Are you sure ? <Yes|No>yes\r\n\r\nThis is scary and actually incorrect.  Please change 'moved' to 'copied' (obviously Mackup does the correct cp as mv would be an issue for all the other accounts).\r\n\r\n* Would be nice to have a few lines in Bull*/backup on \"What if I run `mackup backup` twice?\" and/or maybe \"How do I add another application later after the initial setup?\"  Again, obviously Mackup does the right thing, but my (pedantic?)  reading of the documentation suggests it might not.  The --dry-run option already helps with this.\r\n\r\n* it would be **way cool** if `mackup list` also reported things like: 'configuration files detected' and 'configuration already in Mackup', and for these cases also 'mackup.cfg includes' (implicit or explicit with applications_to_sync) or 'mackup.cfg excludes' \r\n\r\nThanks!\n", "before_files": [{"content": "\"\"\"Mackup.\n\nKeep your application settings in sync.\nCopyright (C) 2013-2021 Laurent Raufaste <http://glop.org/>\n\nUsage:\n  mackup list\n  mackup [options] backup\n  mackup [options] restore\n  mackup show <application>\n  mackup [options] uninstall\n  mackup (-h | --help)\n  mackup --version\n\nOptions:\n  -h --help     Show this screen.\n  -f --force    Force every question asked to be answered with \"Yes\".\n  -r --root     Allow mackup to be run as superuser.\n  -n --dry-run  Show steps without executing.\n  -v --verbose  Show additional details.\n  --version     Show version.\n\nModes of action:\n 1. list: display a list of all supported applications.\n 2. backup: sync your conf files to your synced storage, use this the 1st time\n    you use Mackup.\n 3. restore: link the conf files already in your synced storage on your system,\n    use it on any new system you use.\n 4. uninstall: reset everything as it was before using Mackup.\n\nBy default, Mackup syncs all application data via\nDropbox, but may be configured to exclude applications or use a different\nbackend with a .mackup.cfg file.\n\nSee https://github.com/lra/mackup/tree/master/doc for more information.\n\n\"\"\"\nfrom docopt import docopt\nfrom .appsdb import ApplicationsDatabase\nfrom .application import ApplicationProfile\nfrom .constants import MACKUP_APP_NAME, VERSION\nfrom .mackup import Mackup\nfrom . import utils\nimport sys\n\n\nclass ColorFormatCodes:\n    BLUE = \"\\033[34m\"\n    BOLD = \"\\033[1m\"\n    NORMAL = \"\\033[0m\"\n\n\ndef header(str):\n    return ColorFormatCodes.BLUE + str + ColorFormatCodes.NORMAL\n\n\ndef bold(str):\n    return ColorFormatCodes.BOLD + str + ColorFormatCodes.NORMAL\n\n\ndef main():\n    \"\"\"Main function.\"\"\"\n    # Get the command line arg\n    args = docopt(__doc__, version=\"Mackup {}\".format(VERSION))\n\n    mckp = Mackup()\n    app_db = ApplicationsDatabase()\n\n    def printAppHeader(app_name):\n        if verbose:\n            print((\"\\n{0} {1} {0}\").format(header(\"---\"), bold(app_name)))\n\n    # If we want to answer mackup with \"yes\" for each question\n    if args[\"--force\"]:\n        utils.FORCE_YES = True\n\n    # Allow mackup to be run as root\n    if args[\"--root\"]:\n        utils.CAN_RUN_AS_ROOT = True\n\n    dry_run = args[\"--dry-run\"]\n\n    verbose = args[\"--verbose\"]\n\n    if args[\"backup\"]:\n        # Check the env where the command is being run\n        mckp.check_for_usable_backup_env()\n\n        # Backup each application\n        for app_name in sorted(mckp.get_apps_to_backup()):\n            app = ApplicationProfile(mckp, app_db.get_files(app_name), dry_run, verbose)\n            printAppHeader(app_name)\n            app.backup()\n\n    elif args[\"restore\"]:\n        # Check the env where the command is being run\n        mckp.check_for_usable_restore_env()\n\n        # Restore the Mackup config before any other config, as we might need\n        # it to know about custom settings\n        mackup_app = ApplicationProfile(\n            mckp, app_db.get_files(MACKUP_APP_NAME), dry_run, verbose\n        )\n        printAppHeader(MACKUP_APP_NAME)\n        mackup_app.restore()\n\n        # Initialize again the apps db, as the Mackup config might have changed\n        # it\n        mckp = Mackup()\n        app_db = ApplicationsDatabase()\n\n        # Restore the rest of the app configs, using the restored Mackup config\n        app_names = mckp.get_apps_to_backup()\n        # Mackup has already been done\n        app_names.discard(MACKUP_APP_NAME)\n\n        for app_name in sorted(app_names):\n            app = ApplicationProfile(mckp, app_db.get_files(app_name), dry_run, verbose)\n            printAppHeader(app_name)\n            app.restore()\n\n    elif args[\"uninstall\"]:\n        # Check the env where the command is being run\n        mckp.check_for_usable_restore_env()\n\n        if dry_run or (\n            utils.confirm(\n                \"You are going to uninstall Mackup.\\n\"\n                \"Every configuration file, setting and dotfile\"\n                \" managed by Mackup will be unlinked and moved back\"\n                \" to their original place, in your home folder.\\n\"\n                \"Are you sure?\"\n            )\n        ):\n\n            # Uninstall the apps except Mackup, which we'll uninstall last, to\n            # keep the settings as long as possible\n            app_names = mckp.get_apps_to_backup()\n            app_names.discard(MACKUP_APP_NAME)\n\n            for app_name in sorted(app_names):\n                app = ApplicationProfile(\n                    mckp, app_db.get_files(app_name), dry_run, verbose\n                )\n                printAppHeader(app_name)\n                app.uninstall()\n\n            # Restore the Mackup config before any other config, as we might\n            # need it to know about custom settings\n            mackup_app = ApplicationProfile(\n                mckp, app_db.get_files(MACKUP_APP_NAME), dry_run, verbose\n            )\n            mackup_app.uninstall()\n\n            # Delete the Mackup folder in Dropbox\n            # Don't delete this as there might be other Macs that aren't\n            # uninstalled yet\n            # delete(mckp.mackup_folder)\n\n            print(\n                \"\\n\"\n                \"All your files have been put back into place. You can now\"\n                \" safely uninstall Mackup.\\n\"\n                \"\\n\"\n                \"Thanks for using Mackup!\"\n            )\n\n    elif args[\"list\"]:\n        # Display the list of supported applications\n        mckp.check_for_usable_environment()\n        output = \"Supported applications:\\n\"\n        for app_name in sorted(app_db.get_app_names()):\n            output += \" - {}\\n\".format(app_name)\n        output += \"\\n\"\n        output += \"{} applications supported in Mackup v{}\".format(\n            len(app_db.get_app_names()), VERSION\n        )\n        print(output)\n\n    elif args[\"show\"]:\n        mckp.check_for_usable_environment()\n        app_name = args[\"<application>\"]\n\n        # Make sure the app exists\n        if app_name not in app_db.get_app_names():\n            sys.exit(\"Unsupported application: {}\".format(app_name))\n        print(\"Name: {}\".format(app_db.get_name(app_name)))\n        print(\"Configuration files:\")\n        for file in app_db.get_files(app_name):\n            print(\" - {}\".format(file))\n\n    # Delete the tmp folder\n    mckp.clean_temp_folder()\n", "path": "mackup/main.py"}], "after_files": [{"content": "\"\"\"Mackup.\n\nKeep your application settings in sync.\nCopyright (C) 2013-2021 Laurent Raufaste <http://glop.org/>\n\nUsage:\n  mackup list\n  mackup [options] backup\n  mackup [options] restore\n  mackup show <application>\n  mackup [options] uninstall\n  mackup (-h | --help)\n  mackup --version\n\nOptions:\n  -h --help     Show this screen.\n  -f --force    Force every question asked to be answered with \"Yes\".\n  -r --root     Allow mackup to be run as superuser.\n  -n --dry-run  Show steps without executing.\n  -v --verbose  Show additional details.\n  --version     Show version.\n\nModes of action:\n 1. list: display a list of all supported applications.\n 2. backup: sync your conf files to your synced storage, use this the 1st time\n    you use Mackup.\n 3. restore: link the conf files already in your synced storage on your system,\n    use it on any new system you use.\n 4. uninstall: reset everything as it was before using Mackup.\n\nBy default, Mackup syncs all application data via\nDropbox, but may be configured to exclude applications or use a different\nbackend with a .mackup.cfg file.\n\nSee https://github.com/lra/mackup/tree/master/doc for more information.\n\n\"\"\"\nfrom docopt import docopt\nfrom .appsdb import ApplicationsDatabase\nfrom .application import ApplicationProfile\nfrom .constants import MACKUP_APP_NAME, VERSION\nfrom .mackup import Mackup\nfrom . import utils\nimport sys\n\n\nclass ColorFormatCodes:\n    BLUE = \"\\033[34m\"\n    BOLD = \"\\033[1m\"\n    NORMAL = \"\\033[0m\"\n\n\ndef header(str):\n    return ColorFormatCodes.BLUE + str + ColorFormatCodes.NORMAL\n\n\ndef bold(str):\n    return ColorFormatCodes.BOLD + str + ColorFormatCodes.NORMAL\n\n\ndef main():\n    \"\"\"Main function.\"\"\"\n    # Get the command line arg\n    args = docopt(__doc__, version=\"Mackup {}\".format(VERSION))\n\n    mckp = Mackup()\n    app_db = ApplicationsDatabase()\n\n    def printAppHeader(app_name):\n        if verbose:\n            print((\"\\n{0} {1} {0}\").format(header(\"---\"), bold(app_name)))\n\n    # If we want to answer mackup with \"yes\" for each question\n    if args[\"--force\"]:\n        utils.FORCE_YES = True\n\n    # Allow mackup to be run as root\n    if args[\"--root\"]:\n        utils.CAN_RUN_AS_ROOT = True\n\n    dry_run = args[\"--dry-run\"]\n\n    verbose = args[\"--verbose\"]\n\n    if args[\"backup\"]:\n        # Check the env where the command is being run\n        mckp.check_for_usable_backup_env()\n\n        # Backup each application\n        for app_name in sorted(mckp.get_apps_to_backup()):\n            app = ApplicationProfile(mckp, app_db.get_files(app_name), dry_run, verbose)\n            printAppHeader(app_name)\n            app.backup()\n\n    elif args[\"restore\"]:\n        # Check the env where the command is being run\n        mckp.check_for_usable_restore_env()\n\n        # Restore the Mackup config before any other config, as we might need\n        # it to know about custom settings\n        mackup_app = ApplicationProfile(\n            mckp, app_db.get_files(MACKUP_APP_NAME), dry_run, verbose\n        )\n        printAppHeader(MACKUP_APP_NAME)\n        mackup_app.restore()\n\n        # Initialize again the apps db, as the Mackup config might have changed\n        # it\n        mckp = Mackup()\n        app_db = ApplicationsDatabase()\n\n        # Restore the rest of the app configs, using the restored Mackup config\n        app_names = mckp.get_apps_to_backup()\n        # Mackup has already been done\n        app_names.discard(MACKUP_APP_NAME)\n\n        for app_name in sorted(app_names):\n            app = ApplicationProfile(mckp, app_db.get_files(app_name), dry_run, verbose)\n            printAppHeader(app_name)\n            app.restore()\n\n    elif args[\"uninstall\"]:\n        # Check the env where the command is being run\n        mckp.check_for_usable_restore_env()\n\n        if dry_run or (\n            utils.confirm(\n                \"You are going to uninstall Mackup.\\n\"\n                \"Every configuration file, setting and dotfile\"\n                \" managed by Mackup will be unlinked and copied back\"\n                \" to their original place, in your home folder.\\n\"\n                \"Are you sure?\"\n            )\n        ):\n\n            # Uninstall the apps except Mackup, which we'll uninstall last, to\n            # keep the settings as long as possible\n            app_names = mckp.get_apps_to_backup()\n            app_names.discard(MACKUP_APP_NAME)\n\n            for app_name in sorted(app_names):\n                app = ApplicationProfile(\n                    mckp, app_db.get_files(app_name), dry_run, verbose\n                )\n                printAppHeader(app_name)\n                app.uninstall()\n\n            # Restore the Mackup config before any other config, as we might\n            # need it to know about custom settings\n            mackup_app = ApplicationProfile(\n                mckp, app_db.get_files(MACKUP_APP_NAME), dry_run, verbose\n            )\n            mackup_app.uninstall()\n\n            # Delete the Mackup folder in Dropbox\n            # Don't delete this as there might be other Macs that aren't\n            # uninstalled yet\n            # delete(mckp.mackup_folder)\n\n            print(\n                \"\\n\"\n                \"All your files have been put back into place. You can now\"\n                \" safely uninstall Mackup.\\n\"\n                \"\\n\"\n                \"Thanks for using Mackup!\"\n            )\n\n    elif args[\"list\"]:\n        # Display the list of supported applications\n        mckp.check_for_usable_environment()\n        output = \"Supported applications:\\n\"\n        for app_name in sorted(app_db.get_app_names()):\n            output += \" - {}\\n\".format(app_name)\n        output += \"\\n\"\n        output += \"{} applications supported in Mackup v{}\".format(\n            len(app_db.get_app_names()), VERSION\n        )\n        print(output)\n\n    elif args[\"show\"]:\n        mckp.check_for_usable_environment()\n        app_name = args[\"<application>\"]\n\n        # Make sure the app exists\n        if app_name not in app_db.get_app_names():\n            sys.exit(\"Unsupported application: {}\".format(app_name))\n        print(\"Name: {}\".format(app_db.get_name(app_name)))\n        print(\"Configuration files:\")\n        for file in app_db.get_files(app_name):\n            print(\" - {}\".format(file))\n\n    # Delete the tmp folder\n    mckp.clean_temp_folder()\n", "path": "mackup/main.py"}]}