File indexing completed on 2025-03-09 05:11:41
0001 /* 0002 SPDX-FileCopyrightText: 2021 Hamed Masafi <hamed.masfi@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "libkommit_export.h" 0010 0011 #include <git2/types.h> 0012 0013 #include <QObject> 0014 #include <QString> 0015 0016 namespace Git 0017 { 0018 0019 class LIBKOMMIT_EXPORT Submodule 0020 { 0021 Q_GADGET 0022 0023 public: 0024 enum class Status { 0025 Unknown = 0, 0026 InHead = (1u << 0), // 1 0027 InIndex = (1u << 1), // 2 0028 InConfig = (1u << 2), // 4 0029 InWd = (1u << 3), // 8 0030 IndexAdded = (1u << 4), // 16 0031 IndexDeleted = (1u << 5), 0032 IndexModified = (1u << 6), 0033 WdUninitialized = (1u << 7), 0034 WdAdded = (1u << 8), 0035 WdDeleted = (1u << 9), 0036 WdModified = (1u << 10), 0037 WdIndexModified = (1u << 11), 0038 WdWdModified = (1u << 12), 0039 WdUntracked = (1u << 13), 0040 }; 0041 Q_DECLARE_FLAGS(StatusFlags, Status) 0042 Q_FLAG(StatusFlags) 0043 0044 Submodule(); 0045 Submodule(git_submodule *submodule); 0046 ~Submodule(); 0047 0048 Q_REQUIRED_RESULT const QString &path() const; 0049 Q_REQUIRED_RESULT const QString &commitHash() const; 0050 Q_REQUIRED_RESULT const QString &refName() const; 0051 Q_REQUIRED_RESULT QString url() const; 0052 Q_REQUIRED_RESULT QString name() const; 0053 Q_REQUIRED_RESULT QString branch(); 0054 Q_REQUIRED_RESULT StatusFlags status() const; 0055 0056 void setUrl(const QString &newUrl); 0057 bool sync() const; 0058 bool reload(bool force = false) const; 0059 0060 private: 0061 git_submodule *ptr; 0062 QString mName; 0063 QString mUrl; 0064 QString mPath; 0065 QString mCommitHash; 0066 QString mRefName; 0067 QString mBranch; 0068 }; 0069 0070 Q_DECLARE_OPERATORS_FOR_FLAGS(Submodule::StatusFlags) 0071 0072 } // namespace Git