Beispiel #1
0
        internal static FileInfo GetEntryPointAssemblyPath(
            this IHaveADirectory hasDirectory,
            bool usePublishDir)
        {
            var directory = hasDirectory.Directory;

            var depsFile = directory.GetFiles("*.deps.json", SearchOption.AllDirectories)
                           .FirstOrDefault();

            if (depsFile == null)
            {
                return(null);
            }

            var entryPointAssemblyName = DepsFileParser.GetEntryPointAssemblyName(depsFile);

            var path =
                Path.Combine(
                    directory.FullName,
                    "bin",
                    "Debug",
                    GetTargetFramework(hasDirectory));

            if (usePublishDir)
            {
                path = Path.Combine(path, "publish");
            }

            return(new FileInfo(Path.Combine(path, entryPointAssemblyName)));
        }
Beispiel #2
0
        public static async Task <bool> Create(
            this IHaveADirectory packageBase,
            IPackageInitializer initializer)
        {
            using (var operation = Logger <PackageBase> .Log.OnEnterAndConfirmOnExit())
            {
                if (!packageBase.Directory.Exists)
                {
                    operation.Info("Creating directory {directory}", packageBase.Directory);
                    packageBase.Directory.Create();
                    packageBase.Directory.Refresh();
                }

                using (await FileLock.TryCreateAsync(packageBase.Directory))
                {
                    if (!packageBase.Directory.GetFiles("*", SearchOption.AllDirectories).Where(f => !FileLock.IsLockFile(f)).Any())
                    {
                        operation.Info("Initializing package using {_initializer} in {directory}", initializer,
                                       packageBase.Directory);
                        await initializer.Initialize(packageBase.Directory);
                    }
                }

                operation.Succeed();
                return(true);
            }
        }
Beispiel #3
0
        internal static string GetTargetFramework(this IHaveADirectory ihad)
        {
            var runtimeConfig = ihad.Directory
                                .GetFiles("*.runtimeconfig.json", SearchOption.AllDirectories)
                                .FirstOrDefault();

            return(runtimeConfig != null?RuntimeConfig.GetTargetFramework(runtimeConfig) : "netstandard2.0");
        }
Beispiel #4
0
        public static void CleanObjFolder(this IHaveADirectory packageBase)
        {
            var targets = packageBase.Directory.GetDirectories("obj");

            foreach (var target in targets)
            {
                target.Delete(true);
            }
        }
Beispiel #5
0
 public static IEnumerable <FileInfo> FindBinLogs(this IHaveADirectory package) =>
 package.Directory
 .GetFiles("*.binlog")
 .Where(f => f.FullName.EndsWith(PackageBase.FullBuildBinlogFileName) ||
        f.FullName.EndsWith(Package.DesignTimeBuildBinlogFileName));
Beispiel #6
0
 public static FileInfo FindLatestBinLog(this IHaveADirectory package) =>
 package.FindBinLogs().OrderByDescending(f => f.LastWriteTimeUtc).FirstOrDefault();
Beispiel #7
0
 public static FileInfo GetProjectFile(this IHaveADirectory packageBase) =>
 packageBase.Directory.GetFiles("*.csproj").FirstOrDefault();