// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

#ifndef PACKAGE_H
#define PACKAGE_H

#include <QtCore/qstring.h>
#include <QtCore/qstringlist.h>

struct Package {
    QString id; // Usually a lowercase, no-spaces version of the name. Mandatory.

    enum class Origin { InSource, Provisioned } origin = Origin::InSource;

    QString path; // Source directory. Optional.
                  // Default is the directory of the qt_attribution.json file.
                  // Used only if origin is InSource.
    QStringList files; // Files in path. Optional.
                       // Used only if origin is InSource.

    QString name; // Descriptive name of the package. Will be used as the title. Mandatory.
    QString qdocModule; // QDoc module where the documentation should be included. Mandatory.
    QString qtUsage; // How the package is used in Qt. Any way to disable? Mandatory.
    bool securityCritical = false; // Whether code is security critical in the Qt module. Optional.
    QStringList qtParts; // Possible values are "examples", "tests", "tools", or "libs".
                         // "libs" is the default.

    QString description; // A short description of what the package is and is used for. Optional.
    QString homepage; // Homepage of the upstream project. Optional.
    QString version; // Version used from the upstream project. Optional.
    QString downloadLocation; // Link to exact upstream version. Optional.

    QString license; // The license under which the package is distributed. Mandatory.
    QString licenseId; // see https://spdx.org/licenses/. Optional.
    QStringList licenseFiles; // path to files containing the license text. Optional.
    QStringList licenseFilesContents;

    QString copyright; // Text with copyright owner. Optional.
    QString copyrightFile; // Path to file containing copyright owners. Optional.
    QString copyrightFileContents;

    QStringList cpeList; // List of CPE values. Optional.
    QStringList purlList; // List of PURL values. Optional.

    QString packageComment; // Further comments about the package. Optional.
    QString filePath; // Path of the file this information was extracted from.
};

#endif // PACKAGE_H
