| File: FilePermissionSetter.cs | Web Access |
| Project: src\sdk\src\Cli\dotnet\dotnet.csproj (dotnet) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable disable using Microsoft.DotNet.Cli.Utils; namespace Microsoft.DotNet.Cli; internal class FilePermissionSetter : IFilePermissionSetter { public void SetUserExecutionPermission(string path) { RunCommand(path, "u+x"); } /// <summary> /// Chmod 755 (chmod a+rwx,g-w,o-w) sets permissions so that, (U)ser / owner can read, can write and can execute. /// (G)roup can read, can't write and can execute. /// (O)thers can read, can't write and can execute. /// </summary> public void SetPermission(string path, string chmodArgument) { RunCommand(path, chmodArgument.ToString()); } private static void RunCommand(string path, string chmodArgument) { if (OperatingSystem.IsWindows()) { return; } CommandResult result = new CommandFactory.CommandFactory() .Create("chmod", [chmodArgument, path]) .CaptureStdOut() .CaptureStdErr() .Execute(); if (result.ExitCode != 0) { throw new FilePermissionSettingException(result.StdErr); } } }