/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qbs.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
    \contentspage list-of-language-items.html
    \previouspage export-item.html
    \page filetagger-item.html
    \nextpage group-item.html
    \ingroup list-of-language-items
    \ingroup list-of-items
    \keyword QML.FileTagger

    \title FileTagger Item
    \brief Assigns file tags to files.

    This item assigns file tags to files.
    The FileTagger item can appear in \c{Product} items or \c{Module} items.

    For every source artifact that has no file tag, \QBS will search for a
    FileTagger with a pattern that matches the file name of the source
    artifact. If a matching file tagger is found, then the file tags specified
    in the FileTagger item are assigned to the source artifact.

    If there is more than one matching FileTagger, all file taggers with the
    same highest priority are taken into account and their file tags are
    accumulated.

    The FileTagger item can be attached to a product or a module.
    In the latter case, its effect is the same as if it had been attached to all products having
    a dependency on the respective module. For instance, the cpp module of \QBS has, among others,
    the following file tagger:
    \code
    FileTagger {
        patterns: "*.cpp"
        fileTags: ["cpp"]
    }
    \endcode

    As a result, the "cpp" tag is automatically attached to all files ending with ".cpp" in
    products depending on the cpp module. This causes them to be compiled, because a C++
    compiler rule has "cpp" in its list of matching input tags.

    File taggers are disabled if file tags are set explicitly in a product or group.
    For example, the "cpp" tag is not attached to the cpp files in the following product:

    \code
    Product {
        Depends { name: "cpp" }
        Group {
            files: "*.cpp"
            fileTags: "other"
        }
    }
    \endcode

    \section1 FileTagger Properties

    \table
    \header
        \li Property
        \li Type
        \li Default
        \li Since
        \li Description
    \row
        \li patterns
        \li stringList
        \li none
        \li 1.0
        \li The patterns to match against. Supports the usual wildcards '*', '?' and '[]'.
            Neither the list itself nor any of its elements may be empty.
    \row
        \li fileTags
        \li list
        \li empty list
        \li 1.0
        \li Tags to attach to a product's files. These can then be matched by a rule.
    \row
        \li priority
        \li int
        \li 0
        \li 1.10
        \li The priority of the FileTagger. A higher numerical value means
            higher priority.
    \endtable
*/
