Skip to content

Commit

Permalink
Hotfix 4.0.5907 Tag and adding (#3773) (#3797) commit to branch (#3808)
Browse files Browse the repository at this point in the history
* Setting executable permissions for `in-proc8/func` executable in install code path. (#3797)

* Fix Issue 3594: Look for csproj and fsproj non-recursively (#3773)

* add searchOption parameter to GetFiles to allow for non-recursive searching
use non-recursive searching when looking for .csproj and .fsproj files during validation.

---------

Co-authored-by: Shyju Krishnankutty <connectshyju@gmail.com>
Co-authored-by: Ryan Adams <ryan@rbadams.com>
  • Loading branch information
3 people committed Sep 3, 2024
1 parent 807e897 commit 99ac0fb
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
9 changes: 7 additions & 2 deletions src/Azure.Functions.Cli/Common/FileSystemHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ bool preCondition(string file)
}
}

internal static IEnumerable<string> GetFiles(string directoryPath, IEnumerable<string> excludedDirectories = null, IEnumerable<string> excludedFiles = null, string searchPattern = "*")
internal static IEnumerable<string> GetFiles(string directoryPath, IEnumerable<string> excludedDirectories = null, IEnumerable<string> excludedFiles = null, string searchPattern = "*", SearchOption searchOption = SearchOption.AllDirectories)
{
foreach (var file in Instance.Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly))
{
Expand All @@ -170,13 +170,18 @@ internal static IEnumerable<string> GetFiles(string directoryPath, IEnumerable<s
}
}

if (searchOption == SearchOption.TopDirectoryOnly)
{
yield break;
}

foreach (var directory in Instance.Directory.GetDirectories(directoryPath, "*", SearchOption.TopDirectoryOnly))
{
var directoryName = Path.GetFileName(directory);
if (excludedDirectories == null ||
!excludedDirectories.Any(d => d.Equals(directoryName, StringComparison.OrdinalIgnoreCase)))
{
foreach (var file in GetFiles(directory, excludedDirectories, excludedFiles, searchPattern))
foreach (var file in GetFiles(directory, excludedDirectories, excludedFiles, searchPattern, searchOption))
{
yield return file;
}
Expand Down
5 changes: 3 additions & 2 deletions src/Azure.Functions.Cli/Helpers/DotnetHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,9 @@ internal static IEnumerable<string> GetTemplates(WorkerRuntime workerRuntime)
public static bool CanDotnetBuild()
{
EnsureDotnet();
var csProjFiles = FileSystemHelpers.GetFiles(Environment.CurrentDirectory, searchPattern: "*.csproj").ToList();
var fsProjFiles = FileSystemHelpers.GetFiles(Environment.CurrentDirectory, searchPattern: "*.fsproj").ToList();
// dotnet build will only search for .csproj files within the current directory (when no .csproj file is passed), so we limit our search to that directory only
var csProjFiles = FileSystemHelpers.GetFiles(Environment.CurrentDirectory, searchPattern: "*.csproj", searchOption: SearchOption.TopDirectoryOnly).ToList();
var fsProjFiles = FileSystemHelpers.GetFiles(Environment.CurrentDirectory, searchPattern: "*.fsproj", searchOption: SearchOption.TopDirectoryOnly).ToList();
// If the project name is extensions only then is extensions.csproj a valid csproj file
if (!Path.GetFileName(Environment.CurrentDirectory).Equals("extensions"))
{
Expand Down
1 change: 1 addition & 0 deletions src/Azure.Functions.Cli/npm/lib/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ https.get(options, response => {
if (os.platform() === 'linux' || os.platform() === 'darwin') {
fs.chmodSync(`${installPath}/func`, 0o755);
fs.chmodSync(`${installPath}/gozip`, 0o755);
fs.chmodSync(`${installPath}/in-proc8/func`, 0o755);
}
});
});
Expand Down

0 comments on commit 99ac0fb

Please sign in to comment.