File: WebJobsCommandGenerator.cs
Web Access
Project: ..\..\..\src\WebSdk\Publish\Tasks\Microsoft.NET.Sdk.Publish.Tasks.csproj (Microsoft.NET.Sdk.Publish.Tasks)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.NET.Sdk.Publish.Tasks
{
    public static class WebJobsCommandGenerator
    {
        public static string RunCommand(string? targetPath, bool useAppHost, string? executableExtension, bool isLinux)
        {
            string? appName = Path.GetFileName(targetPath);
 
            string? command = $"dotnet {appName}";
            if (useAppHost)
            {
                command = Path.ChangeExtension(appName, !string.IsNullOrWhiteSpace(executableExtension) ? executableExtension : null);
 
                // dot-space syntax to execute the command
                if (isLinux)
                {
                    command = $". {command}";
                }
            }
 
            // For Apps targeting .NET Framework, the extension is always exe. RID is not set for .NETFramework apps with PlatformType set to AnyCPU.
            if (string.Equals(Path.GetExtension(targetPath), ".exe", StringComparison.OrdinalIgnoreCase))
            {
                command = Path.ChangeExtension(appName, ".exe");
            }
 
            //  pass-all-parameters argument
            var passParamsArg = isLinux ? "\"$@\"" : "%*";
            command = $"{command} {passParamsArg}";
 
            // for Linux add header for bash script
            if (isLinux)
            {
                command = $"#!/bin/bash\n{command}";
            }
 
            return $"{command}";
        }
    }
}