Mailing List Archive

[PATCH 7/7] eclass/dotnet-pkg.eclass: prepare for safely using Nuget
Signed-off-by: Maciej Bar? <xgqt@gentoo.org>
---
eclass/dotnet-pkg.eclass | 8 +++++--
eclass/nuget.eclass | 47 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 52 insertions(+), 3 deletions(-)

diff --git a/eclass/dotnet-pkg.eclass b/eclass/dotnet-pkg.eclass
index 3647eb399..337864f1f 100644
--- a/eclass/dotnet-pkg.eclass
+++ b/eclass/dotnet-pkg.eclass
@@ -225,12 +225,16 @@ dotnet-pkg_remove-bad() {
# Default "src_prepare" for the "dotnet-pkg" eclass.
# Prepare the package sources.
#
-# Run "dotnet-pkg-base_remove-global-json"
-# and "dotnet-pkg-base_remove-bad" for each found solution file.
+# Run "dotnet-pkg-base_remove-global-json", "dotnet-pkg-base_remove-bad"
+# for each found solution file and prepare for using Nuget.
dotnet-pkg_src_prepare() {
dotnet-pkg-base_remove-global-json
dotnet-pkg-base_foreach-solution "$(pwd)" dotnet-pkg_remove-bad

+ find "$(pwd)" -maxdepth 1 -iname "nuget.config" -delete ||
+ die "${FUNCNAME[0]}: failed to remove unwanted \"NuGet.config\" config files"
+ nuget_writeconfig "$(pwd)/"
+
default
}

diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
index 669e21300..ac8629848 100644
--- a/eclass/nuget.eclass
+++ b/eclass/nuget.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# @ECLASS: nuget.eclass
@@ -226,6 +226,51 @@ nuget_unpack-non-nuget-archives() {
done
}

+# @FUNCTION: nuget_writeconfig
+# @USAGE: <path>
+# @DESCRIPTION:
+# Create a "NuGet.config" config file that can be used to overwrite any other
+# Nuget configuration file in order to prevent Nuget executable from accessing
+# the network or undesired NuPkg package sources.
+#
+# If given path ends with a slash, a file name "NuGet.config" is assumed,
+# otherwise contents are written to specified file path exactly.
+#
+# Created configuration file clears all other NuPkg sources and inserts
+# "NUGET_PACKAGES" as the only one source.
+#
+# This function is used inside "dotnet-pkg_src_prepare"
+# from the "dotnet-pkg" eclass.
+#
+# This function is used inside "dotnet-pkg_src_prepare"
+# from the "dotnet-pkg" eclass.
+nuget_writeconfig() {
+ debug-print-function "${FUNCNAME[0]}" "${@}"
+
+ case "${1}" in
+ "" ) die "${FUNCNAME[0]}: no directory/file path specified" ;;
+ */ ) mkdir -p "${1}" || die ;;
+ esac
+
+ local nuget_config_path
+
+ if [[ -d "${1}" ]] ; then
+ nuget_config_path="${1}/NuGet.config"
+ else
+ nuget_config_path="${1}"
+ fi
+
+ cat <<-EOF > "${nuget_config_path}" || die
+ <?xml version="1.0" encoding="utf-8"?>
+ <configuration>
+ <packageSources>
+ <clear />
+ <add key="nuget" value="${NUGET_PACKAGES}" />
+ </packageSources>
+ </configuration>
+ EOF
+}
+
# @FUNCTION: nuget_donuget
# @USAGE: <nuget-path> ...
# @DESCRIPTION:
--
2.43.0
Re: [PATCH 7/7] eclass/dotnet-pkg.eclass: prepare for safely using Nuget [ In reply to ]
>>>>> On Sat, 03 Feb 2024, Maciej Bar? wrote:

> + find "$(pwd)" -maxdepth 1 -iname "nuget.config" -delete ||

Is there any special reason for using "$(pwd)" instead of . here?

> + case "${1}" in

Quotes not needed.

> + if [[ -d "${1}" ]] ; then

Quotes not needed.
Re: [PATCH 7/7] eclass/dotnet-pkg.eclass: prepare for safely using Nuget [ In reply to ]
> Is there any special reason for using "$(pwd)" instead of . here?


In case of error you will get absolute paths:
find $(pwd)/idontexist -delete
vs
find ./idontexist -delete


W dniu 3.02.2024 o 17:57, Ulrich Mueller pisze:
>>>>>> On Sat, 03 Feb 2024, Maciej Bar? wrote:
>
>> + find "$(pwd)" -maxdepth 1 -iname "nuget.config" -delete ||
>
> Is there any special reason for using "$(pwd)" instead of . here?
>
>> + case "${1}" in
>
> Quotes not needed.
>
>> + if [[ -d "${1}" ]] ; then
>
> Quotes not needed.

--
Have a great day!

~ Maciej XGQT Bar?

xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C