diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 646243812..6fae156b1 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -35,6 +35,12 @@ Here's a link to the music files that trigger the bug (if relevant): * beets version: * Turning off plugins made problem go away (yes/no): + + My configuration (output of `beet config`) is: ```yaml diff --git a/beets/ui/__init__.py b/beets/ui/__init__.py index d882e06fb..28879a731 100644 --- a/beets/ui/__init__.py +++ b/beets/ui/__init__.py @@ -1102,8 +1102,8 @@ optparse.Option.ALWAYS_TYPED_ACTIONS += ('callback',) # The main entry point and bootstrapping. -def _load_plugins(config): - """Load the plugins specified in the configuration. +def _load_plugins(options, config): + """Load the plugins specified on the command line or in the configuration. """ paths = config['pluginpath'].as_str_seq(split=False) paths = [util.normpath(p) for p in paths] @@ -1120,7 +1120,14 @@ def _load_plugins(config): # *contain* a `beetsplug` package. sys.path += paths - plugins.load_plugins(config['plugins'].as_str_seq()) + # If we were given any plugins on the command line, use those. + if options.plugins is not None: + plugin_list = (options.plugins.split(',') + if len(options.plugins) > 0 else []) + else: + plugin_list = config['plugins'].as_str_seq() + + plugins.load_plugins(plugin_list) plugins.send("pluginload") return plugins @@ -1135,7 +1142,7 @@ def _setup(options, lib=None): config = _configure(options) - plugins = _load_plugins(config) + plugins = _load_plugins(options, config) # Get the default subcommands. from beets.ui.commands import default_commands @@ -1233,6 +1240,8 @@ def _raw_main(args, lib=None): help=u'log more details (use twice for even more)') parser.add_option('-c', '--config', dest='config', help=u'path to configuration file') + parser.add_option('-p', '--plugins', dest='plugins', + help=u'a comma-separated list of plugins to load') parser.add_option('-h', '--help', dest='help', action='store_true', help=u'show this help message and exit') parser.add_option('--version', dest='version', action='store_true', diff --git a/beets/ui/commands.py b/beets/ui/commands.py index 49c4b4dc6..4d010f4b1 100755 --- a/beets/ui/commands.py +++ b/beets/ui/commands.py @@ -807,7 +807,7 @@ class TerminalImportSession(importer.ImportSession): )) sel = ui.input_options( - (u'Skip new', u'Keep both', u'Remove old', u'Merge all') + (u'Skip new', u'Keep all', u'Remove old', u'Merge all') ) if sel == u's': @@ -1691,7 +1691,10 @@ def config_func(lib, opts, args): # Dump configuration. else: config_out = config.dump(full=opts.defaults, redact=opts.redact) - print_(util.text_string(config_out)) + if config_out.strip() != '{}': + print_(util.text_string(config_out)) + else: + print("Empty configuration") def config_edit(): diff --git a/docs/changelog.rst b/docs/changelog.rst index e33299fab..e65e6b1e9 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -6,6 +6,10 @@ Changelog New features: +* When config is printed with no available configuration a new message is printed. + :bug:`3779` +* When importing a duplicate album it ask if it should "Keep all" instead of "Keep both". + :bug:`3569` * :doc:`/plugins/chroma`: Update file metadata after generating fingerprints through the `submit` command. * :doc:`/plugins/lastgenre`: Added more heavy metal genres: https://en.wikipedia.org/wiki/Heavy_metal_genres to genres.txt and genres-tree.yaml * :doc:`/plugins/subsonicplaylist`: import playlist from a subsonic server. @@ -20,10 +24,10 @@ New features: * :doc:`plugins/fetchart`: Added a new ``high_resolution`` config option to allow downloading of higher resolution iTunes artwork (at the expense of file size). - :bug: `3391` + :bug:`3391` * :doc:`plugins/discogs` now adds two extra fields: `discogs_labelid` and `discogs_artistid` - :bug: `3413` + :bug:`3413` * :doc:`/plugins/export`: Added new ``-f`` (``--format``) flag; which allows for the ability to export in json, jsonlines, csv and xml. Thanks to :user:`austinmm`. @@ -154,6 +158,7 @@ New features: similar to ``beet modify`` * :doc:`/plugins/web`: add DELETE and PATCH methods for modifying items * :doc:`/plugins/lyrics`: Removed LyricWiki source (shut down on 21/09/2020). +* Added a ``--plugins`` (or ``-p``) flag to specify a list of plugins at startup. Fixes: diff --git a/docs/conf.py b/docs/conf.py index 018ef5397..f77838e81 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -30,9 +30,10 @@ extlinks = { linkcheck_ignore = [ r'https://github.com/beetbox/beets/issues/', - r'https://github.com/\w+$', # ignore user pages + r'https://github.com/[^/]+$', # ignore user pages r'.*localhost.*', r'https://www.musixmatch.com/', # blocks requests + r'https://genius.com/', # blocks requests ] # Options for HTML output diff --git a/docs/faq.rst b/docs/faq.rst index eeab6c1ef..f47233430 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -135,13 +135,13 @@ it's helpful to run on the "bleeding edge". To run the latest source: 1. Uninstall beets. If you installed using ``pip``, you can just run ``pip uninstall beets``. -2. Install from source. There are a few easy ways to do this: +2. Install from source. Choose one of these methods: - - Use ``pip`` to install the latest snapshot tarball: just type - ``pip install https://github.com/beetbox/beets/tarball/master``. - - Grab the source using Git: - ``git clone https://github.com/beetbox/beets.git``. Then - ``cd beets`` and type ``python setup.py install``. + - Use ``pip`` to install the latest snapshot tarball. Type: + ``pip install https://github.com/beetbox/beets/tarball/master`` + - Grab the source using git. First, clone the repository: + ``git clone https://github.com/beetbox/beets.git``. + Then, ``cd beets`` and ``python setup.py install``. - Use ``pip`` to install an "editable" version of beets based on an automatic source checkout. For example, run ``pip install -e git+https://github.com/beetbox/beets#egg=beets`` diff --git a/docs/guides/tagger.rst b/docs/guides/tagger.rst index 467d605a4..d890f5c08 100644 --- a/docs/guides/tagger.rst +++ b/docs/guides/tagger.rst @@ -234,7 +234,7 @@ If beets finds an album or item in your library that seems to be the same as the one you're importing, you may see a prompt like this:: This album is already in the library! - [S]kip new, Keep both, Remove old, Merge all? + [S]kip new, Keep all, Remove old, Merge all? Beets wants to keep you safe from duplicates, which can be a real pain, so you have four choices in this situation. You can skip importing the new music, diff --git a/docs/reference/cli.rst b/docs/reference/cli.rst index 2062193ab..5d2b834b7 100644 --- a/docs/reference/cli.rst +++ b/docs/reference/cli.rst @@ -440,6 +440,10 @@ import ...``. configuration options entirely, the two are merged. Any individual options set in this config file will override the corresponding settings in your base configuration. +* ``-p plugins``: specify a comma-separated list of plugins to enable. If + specified, the plugin list in your configuration is ignored. The long form + of this argument also allows specifying no plugins, effectively disabling + all plugins: ``--plugins=``. Beets also uses the ``BEETSDIR`` environment variable to look for configuration and data.