withSIX.Sync.Core.Packages.PackageManager.CheckoutAsync C# (CSharp) Method

CheckoutAsync() private method

private CheckoutAsync ( string packageName, bool useFullNameOverride = null ) : Task
packageName string
useFullNameOverride bool
return Task
        async Task<Package> CheckoutAsync(string packageName, bool? useFullNameOverride = null) {
            var useFullName = Repo.Config.UseVersionedPackageFolders;

            if (useFullNameOverride.HasValue)
                useFullName = useFullNameOverride.Value;

            var depInfo = Repo.ResolvePackageName(packageName);
            if (depInfo == null)
                throw new Exception("Could not resolve package " + packageName);

            var resolvedPackageName = depInfo.GetFullName();

            IAbsoluteDirectoryPath dir;
            if (Repo.Config.OperationMode == RepositoryOperationMode.SinglePackage)
                dir = WorkDir;
            else {
                var name = useFullName ? depInfo.GetFullName() : depInfo.Name;
                var repoRoot = Repo.RootPath.ParentDirectoryPath;
                //dir = Path.Combine(repoRoot, name);
                var d = Tools.FileUtil.IsPathRootedIn(WorkDir, repoRoot, true) ? repoRoot : WorkDir;
                dir = d.GetChildDirectoryWithName(name);
            }

            Repository.Log("\nChecking out {0} into {1}, please be patient...", resolvedPackageName, dir);
            var package = Package.Factory.Open(Repo, dir, resolvedPackageName);
            package.StatusRepo = StatusRepo;
            await package.CheckoutAsync(null).ConfigureAwait(false);

            Repository.Log("\nSuccesfully checked out {0}", package.MetaData.GetFullName());

            return package;
        }