From 753096ea73e1964474b811725244344b61a40010 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Thu, 6 Feb 2025 18:00:47 +0100 Subject: Add enum for add-to-cas resolve special option --- src/buildtool/file_system/symlinks/TARGETS | 6 +++ .../file_system/symlinks/resolve_special.hpp | 45 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/buildtool/file_system/symlinks/resolve_special.hpp (limited to 'src') 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 +#include +#include +#include +#include + +/* 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 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 -- cgit v1.2.3