コード例 #1
0
        protected Package(
            string name = null,
            IPackageInitializer initializer   = null,
            DirectoryInfo directory           = null,
            IScheduler buildThrottleScheduler = null) : base(name, initializer, directory)
        {
            Initializer = initializer ?? new PackageInitializer("console", Name);

            _log = new Logger($"{nameof(Package)}:{Name}");
            _buildThrottleScheduler = buildThrottleScheduler ?? TaskPoolScheduler.Default;

            _fullBuildRequestChannel        = new Subject <Budget>();
            _fullBuildThrottlerSubscription = new SerialDisposable();

            _designTimeBuildRequestChannel        = new Subject <Budget>();
            _designTimeBuildThrottlerSubscription = new SerialDisposable();

            SetupWorkspaceCreationFromBuildChannel();
            SetupWorkspaceCreationFromDesignTimeBuildChannel();
            TryLoadDesignTimeBuildFromBuildLog();

            _buildSemaphore   = _packageBuildSemaphores.GetOrAdd(Name, _ => new SemaphoreSlim(1, 1));
            _publishSemaphore = _packagePublishSemaphores.GetOrAdd(Name, _ => new SemaphoreSlim(1, 1));
            RoslynWorkspace   = null;
        }
コード例 #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);
            }
        }
コード例 #3
0
ファイル: RebuildablePackage.cs プロジェクト: xwf20050250/try
 public RebuildablePackage(string name = null, IPackageInitializer initializer = null, DirectoryInfo directory = null, IScheduler buildThrottleScheduler = null)
     : base(name, initializer, directory, buildThrottleScheduler)
 {
     if (BuildResultNeedsUpdate())
     {
         Reset();
     }
 }
コード例 #4
0
ファイル: PackageBuilder.cs プロジェクト: zeroyou/try
        public PackageBuilder(string packageName, IPackageInitializer packageInitializer = null)
        {
            if (string.IsNullOrWhiteSpace(packageName))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(packageName));
            }

            PackageName        = packageName;
            PackageInitializer = packageInitializer;
        }
コード例 #5
0
 public Initializer(
     IFCCEngine fccEngine,
     ILogger logger,
     ICoverageProjectFactory coverageProjectFactory,
     IPackageInitializer packageInitializer
     )
 {
     this.fccEngine = fccEngine;
     this.logger    = logger;
     this.coverageProjectFactory = coverageProjectFactory;
     this.packageInitializer     = packageInitializer;
 }
コード例 #6
0
ファイル: PackageBase.cs プロジェクト: xwf20050250/try
        protected PackageBase(
            string name = null,
            IPackageInitializer initializer = null,
            DirectoryInfo directory         = null)
        {
            Initializer = initializer;

            Name      = name ?? directory?.Name ?? throw new ArgumentException($"You must specify {nameof(name)}, {nameof(directory)}, or both.");
            Directory = directory ?? new DirectoryInfo(Path.Combine(Package.DefaultPackagesDirectory.FullName, Name));

            _lazyCreation         = new AsyncLazy <bool>(() => this.Create(Initializer));
            LastBuildErrorLogFile = new FileInfo(Path.Combine(Directory.FullName, ".trydotnet-builderror"));
        }
コード例 #7
0
ファイル: RebuildablePackage.cs プロジェクト: zeroyou/try
        public RebuildablePackage(string name = null, IPackageInitializer initializer = null, DirectoryInfo directory = null, IScheduler buildThrottleScheduler = null)
            : base(name, initializer, directory, buildThrottleScheduler)
        {
            _fileSystemWatcher = new FileSystemWatcher(Directory.FullName)
            {
                EnableRaisingEvents = true
            };

            _fileSystemWatcher.Changed += FileSystemWatcherOnChangedOrDeleted;
            _fileSystemWatcher.Deleted += FileSystemWatcherOnDeleted;
            _fileSystemWatcher.Renamed += FileSystemWatcherOnRenamed;
            _fileSystemWatcher.Created += FileSystemWatcherOnCreated;
        }
コード例 #8
0
        public BlazorPackage(
            string name,
            IPackageInitializer initializer = null,
            DirectoryInfo directory         = null) : base(name, initializer, directory)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException(nameof(name));
            }

            if (name.StartsWith(runnerPrefix))
            {
                CodeRunnerPath     = $"/LocalCodeRunner/{name.Remove(0, runnerPrefix.Length)}";
                CodeRunnerPathBase = CodeRunnerPath + "/";
            }
            else
            {
                throw new ArgumentException(nameof(name));
            }
        }
コード例 #9
0
ファイル: Create.cs プロジェクト: rlundy/try
        public static Package EmptyWorkspace([CallerMemberName] string testName = null, IPackageInitializer initializer = null, bool isRebuildablePackage = false)
        {
            if (!isRebuildablePackage)
            {
                return(new NonrebuildablePackage(directory: Package.CreateDirectory(testName), initializer: initializer));
            }

            return(new RebuildablePackage(directory: Package.CreateDirectory(testName), initializer: initializer));
        }
コード例 #10
0
 public NonrebuildablePackage(string name = null, IPackageInitializer initializer = null, DirectoryInfo directory = null, IScheduler buildThrottleScheduler = null)
     : base(name, initializer, directory, buildThrottleScheduler)
 {
 }