summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2025-02-06 18:00:47 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2025-02-14 18:17:07 +0100
commit753096ea73e1964474b811725244344b61a40010 (patch)
treee9a185c2affe32691a119921d933b4699daac2a1 /src
parent7bbb182de03960e78964b575c87f8d9c85887923 (diff)
downloadjustbuild-753096ea73e1964474b811725244344b61a40010.tar.gz
Add enum for add-to-cas resolve special option
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/file_system/symlinks/TARGETS6
-rw-r--r--src/buildtool/file_system/symlinks/resolve_special.hpp45
2 files changed, 51 insertions, 0 deletions
diff --git a/src/buildtool/file_system/symlinks/TARGETS b/src/buildtool/file_system/symlinks/TARGETS
index ea5c6bde..9dd52d93 100644
--- a/src/buildtool/file_system/symlinks/TARGETS
+++ b/src/buildtool/file_system/symlinks/TARGETS
@@ -26,4 +26,10 @@
, "hdrs": ["pragma_special.hpp"]
, "stage": ["src", "buildtool", "file_system", "symlinks"]
}
+, "resolve_special":
+ { "type": ["@", "rules", "CC", "library"]
+ , "name": ["resolve_special"]
+ , "hdrs": ["resolve_special.hpp"]
+ , "stage": ["src", "buildtool", "file_system", "symlinks"]
+ }
}
diff --git a/src/buildtool/file_system/symlinks/resolve_special.hpp b/src/buildtool/file_system/symlinks/resolve_special.hpp
new file mode 100644
index 00000000..6cda4f28
--- /dev/null
+++ b/src/buildtool/file_system/symlinks/resolve_special.hpp
@@ -0,0 +1,45 @@
+// Copyright 2025 Huawei Cloud Computing Technology Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef INCLUDED_SRC_BUILDTOOL_FILE_SYSTEM_SYMLINKS_FS_RESOLVE_SPECIAL_HPP
+#define INCLUDED_SRC_BUILDTOOL_FILE_SYSTEM_SYMLINKS_FS_RESOLVE_SPECIAL_HPP
+
+#include <cstdint>
+#include <functional>
+#include <string>
+#include <unordered_map>
+#include <utility>
+
+/* Enum used by add-to-cas subcommand */
+
+/// \brief Resolve special option value enum
+enum class ResolveSpecial : std::uint8_t {
+ // Ignore special entries
+ Ignore,
+ // Allow symlinks confined to tree and resolve the ones that are upwards
+ TreeUpwards,
+ // Allow symlinks confined to tree and resolve them
+ TreeAll,
+ // Unconditionally allow symlinks and resolve them
+ All
+};
+
+/// \brief ResolveSpecial value map, from string to enum
+inline std::unordered_map<std::string, ResolveSpecial> const
+ kResolveSpecialMap = {{"ignore", ResolveSpecial::Ignore},
+ {"tree-upwards", ResolveSpecial::TreeUpwards},
+ {"tree-all", ResolveSpecial::TreeAll},
+ {"all", ResolveSpecial::All}};
+
+#endif // INCLUDED_SRC_BUILDTOOL_FILE_SYSTEM_SYMLINKS_FS_RESOLVE_SPECIAL_HPP