/// <summary> /// Creates files for release using Squirrel.Windows and upload them to GitHub release page. /// All information (Repository, Versions, Title, Description) should be specified in csproj file. /// Example: /// UpdateManager test.csproj /// will seek first csproj file in the current directory /// after that will generate release files from the package in bin\Release /// The name of package is 'PackageId.Version.nupkg' /// </summary> /// <param name="fileProject">Path of csproj file. By default first csproj file in the current directory.</param> // static void Main(string fileProject) static void Main(string[] args) { var upd = new ReleaseFactory(args[0]); upd.CreateRelease(); upd.UploadReleaseToGithub().Wait(); }
public async Task <OperationResult <bool> > ScanRelease(ApplicationUser user, Guid releaseId, bool isReadOnly = false, bool wasDoneForInvalidTrackPlay = false) { var sw = new Stopwatch(); sw.Start(); var errors = new List <Exception>(); var release = DbContext.Releases .Include(x => x.Artist) .Include(x => x.Labels) .FirstOrDefault(x => x.RoadieId == releaseId); if (release == null) { await LogAndPublish($"ScanRelease Unknown Release [{releaseId}]", LogLevel.Warning); return(new OperationResult <bool>(true, $"Release Not Found [{releaseId}]")); } try { var result = await ReleaseFactory.ScanReleaseFolder(release.RoadieId, Configuration.LibraryFolder, isReadOnly, release); await UpdateReleaseRank(release.Id); CacheManager.ClearRegion(release.CacheRegion); } catch (Exception ex) { await LogAndPublish(ex.ToString(), LogLevel.Error); errors.Add(ex); } sw.Stop(); DbContext.ScanHistories.Add(new data.ScanHistory { UserId = user.Id, ForReleaseId = release.Id, NewTracks = ReleaseFactory.AddedTrackIds.Count(), TimeSpanInSeconds = (int)sw.Elapsed.TotalSeconds }); await DbContext.SaveChangesAsync(); await LogAndPublish( $"ScanRelease `{release}`, By User `{user}`, WasDoneForInvalidTrackPlay [{wasDoneForInvalidTrackPlay}]", LogLevel.Information); return(new OperationResult <bool> { IsSuccess = !errors.Any(), Data = true, OperationTime = sw.ElapsedMilliseconds, Errors = errors }); }
public ReleaseSystemFixture() { rf = new ReleaseFactory(@"D:\GoogleDrive\Job\flnp\dev\tests\TestAutoUpdateRepo\TestAutoUpdateRepo.csproj"); _path = @"D:\GoogleDrive\Job\flnp\dev\tests\TestAutoUpdateRepo"; Configuration = new ConfigurationBuilder() .AddUserSecrets <ReleaseFactory>() .Build(); client = new GitHubClient(new ProductHeaderValue("regata-jinr")); var tokenAuth = new Credentials(Configuration["Settings:GitHubToken"]); client.Credentials = tokenAuth; owner = "regata-jinr"; repo = "TestAutoUpdateRepo"; }
public async Task <OperationResult <bool> > DeleteArtistReleases(ApplicationUser user, Guid artistId, bool doDeleteFiles = false) { var sw = new Stopwatch(); sw.Start(); var errors = new List <Exception>(); var artist = DbContext.Artists.FirstOrDefault(x => x.RoadieId == artistId); if (artist == null) { await LogAndPublish($"DeleteArtistReleases Unknown Artist [{artistId}]", LogLevel.Warning); return(new OperationResult <bool>(true, $"Artist Not Found [{artistId}]")); } try { await ReleaseFactory.DeleteReleases( DbContext.Releases.Where(x => x.ArtistId == artist.Id).Select(x => x.RoadieId).ToArray(), doDeleteFiles); await DbContext.SaveChangesAsync(); } catch (Exception ex) { Logger.LogError(ex); await LogAndPublish("Error deleting artist."); errors.Add(ex); } sw.Stop(); await LogAndPublish($"DeleteArtistReleases `{artist}`, By User `{user}`", LogLevel.Information); return(new OperationResult <bool> { IsSuccess = !errors.Any(), Data = true, OperationTime = sw.ElapsedMilliseconds, Errors = errors }); }
public async Task <OperationResult <bool> > DeleteRelease(ApplicationUser user, Guid releaseId, bool?doDeleteFiles) { var sw = new Stopwatch(); sw.Start(); var errors = new List <Exception>(); var release = DbContext.Releases.Include(x => x.Artist).FirstOrDefault(x => x.RoadieId == releaseId); try { if (release == null) { await LogAndPublish($"DeleteRelease Unknown Release [{releaseId}]", LogLevel.Warning); return(new OperationResult <bool>(true, $"Release Not Found [{releaseId}]")); } await ReleaseFactory.Delete(release, doDeleteFiles ?? false); } catch (Exception ex) { Logger.LogError(ex); await LogAndPublish("Error deleting release."); errors.Add(ex); } sw.Stop(); await LogAndPublish($"DeleteRelease `{release}`, By User `{user}`", LogLevel.Information); CacheManager.Clear(); return(new OperationResult <bool> { IsSuccess = !errors.Any(), Data = true, OperationTime = sw.ElapsedMilliseconds, Errors = errors }); }
public AdminService(IRoadieSettings configuration, IHttpEncoder httpEncoder, IHttpContext httpContext, data.IRoadieDbContext context, ICacheManager cacheManager, ILogger <ArtistService> logger, IHubContext <ScanActivityHub> scanActivityHub ) : base(configuration, httpEncoder, context, cacheManager, logger, httpContext) { ScanActivityHub = scanActivityHub; EventMessageLogger = new EventMessageLogger(); EventMessageLogger.Messages += EventMessageLogger_Messages; MusicBrainzProvider = new MusicBrainzProvider(configuration, cacheManager, MessageLogger); LastFmHelper = new LastFmHelper(configuration, cacheManager, MessageLogger, context, httpEncoder); FileNameHelper = new FileNameHelper(configuration, cacheManager, MessageLogger); ID3TagsHelper = new ID3TagsHelper(configuration, cacheManager, MessageLogger); ArtistLookupEngine = new ArtistLookupEngine(configuration, httpEncoder, context, cacheManager, MessageLogger); LabelLookupEngine = new LabelLookupEngine(configuration, httpEncoder, context, cacheManager, MessageLogger); ReleaseLookupEngine = new ReleaseLookupEngine(configuration, httpEncoder, context, cacheManager, MessageLogger, ArtistLookupEngine, LabelLookupEngine); ImageFactory = new ImageFactory(configuration, httpEncoder, context, cacheManager, MessageLogger, ArtistLookupEngine, ReleaseLookupEngine); LabelFactory = new LabelFactory(configuration, httpEncoder, context, cacheManager, MessageLogger, ArtistLookupEngine, ReleaseLookupEngine); AudioMetaDataHelper = new AudioMetaDataHelper(configuration, httpEncoder, context, MusicBrainzProvider, LastFmHelper, cacheManager, MessageLogger, ArtistLookupEngine, ImageFactory, FileNameHelper, ID3TagsHelper); ReleaseFactory = new ReleaseFactory(configuration, httpEncoder, context, cacheManager, MessageLogger, ArtistLookupEngine, LabelFactory, AudioMetaDataHelper, ReleaseLookupEngine); ArtistFactory = new ArtistFactory(configuration, httpEncoder, context, cacheManager, MessageLogger, ArtistLookupEngine, ReleaseFactory, ImageFactory, ReleaseLookupEngine, AudioMetaDataHelper); }
public async Task <OperationResult <bool> > DeleteTrack(ApplicationUser user, Guid trackId, bool?doDeleteFile) { var sw = new Stopwatch(); sw.Start(); var errors = new List <Exception>(); var track = DbContext.Tracks.Include(x => x.ReleaseMedia) .Include(x => x.ReleaseMedia.Release) .Include(x => x.ReleaseMedia.Release.Artist) .FirstOrDefault(x => x.RoadieId == trackId); try { if (track == null) { await LogAndPublish($"DeleteTrack Unknown Track [{trackId}]", LogLevel.Warning); return(new OperationResult <bool>(true, $"Track Not Found [{trackId}]")); } DbContext.Tracks.Remove(track); await DbContext.SaveChangesAsync(); if (doDeleteFile ?? false) { string trackPath = null; try { trackPath = track.PathToTrack(Configuration, Configuration.LibraryFolder); if (File.Exists(trackPath)) { File.Delete(trackPath); Logger.LogWarning($"x For Track `{track}`, Deleted File [{trackPath}]"); } var trackThumbnailName = track.PathToTrackThumbnail(Configuration, Configuration.LibraryFolder); if (File.Exists(trackThumbnailName)) { File.Delete(trackThumbnailName); Logger.LogWarning($"x For Track `{track}`, Deleted Thumbnail File [{trackThumbnailName}]"); } } catch (Exception ex) { Logger.LogError(ex, string.Format("Error Deleting File [{0}] For Track [{1}] Exception [{2}]", trackPath, track.Id, ex.Serialize())); } } await ReleaseFactory.ScanReleaseFolder(track.ReleaseMedia.Release.RoadieId, Configuration.LibraryFolder, false, track.ReleaseMedia.Release); } catch (Exception ex) { Logger.LogError(ex); await LogAndPublish("Error deleting track."); errors.Add(ex); } sw.Stop(); await LogAndPublish($"DeleteTrack `{track}`, By User `{user}`", LogLevel.Information); CacheManager.Clear(); return(new OperationResult <bool> { IsSuccess = !errors.Any(), Data = true, OperationTime = sw.ElapsedMilliseconds, Errors = errors }); }
public ReleaseSystemTest(ReleaseSystemFixture upd, ITestOutputHelper output) { _rf = upd; _rfMemb = _rf.rf; this.output = output; }