private async Task Generate(VersionGenerator generator) { activity = $"Generating " + generator.VersionTypeName; max = _metadataStore.CountFilesMissingAttributeVersion(generator.VersionTypeName); var files = _metadataStore.FilesMissingAttributeVersion(generator.VersionTypeName); processed = 0; foreach (var file in files) { try { Stream content = _metadataStore.GetFileStream(file.Id); var thumbnailValue = generator.GenerateVersion(content); await _metadataStore.AddVersion(file.Id, generator.VersionTypeName, thumbnailValue); processed++; } catch (Exception ex) { } } }
private Version GetVersion(string pathToAssembly) { var assembly = Assembly.Load(File.ReadAllBytes(pathToAssembly)); var version = VersionGenerator.GetVersion(assembly); return(version); }
public override bool Execute() { try { if (VersionFiles.Length == 0) { Log.LogError("(GmodNET.VersionTool.MSBuild) Version file is not specified."); return(false); } else if (VersionFiles.Length > 1) { Log.LogError("(GmodNET.VersionTool.MSBuild) There is more than one version file for the project."); return(false); } VersionGenerator gen = new VersionGenerator(VersionFiles[0]); FullVersion = gen.FullVersion; ShortVersion = gen.VersionWithoutBuildData; return(true); } catch (Exception e) { Log.LogError("(GmodNET.VersionTool.MSBuild) Exception was thrown while executing VersionToolGenerate task: " + e.ToString()); return(false); } }
/// <summary> /// Called to update the fields describing <see cref="Entity"/>'s version. /// </summary> /// <param name="changedEntity">The changed entity.</param> /// <param name="changedField">The changed field.</param> /// <returns> /// <see langword="True"/>, if <see cref="VersionInfo"/> was changed; /// otherwise, <see langword="false"/>. /// </returns> protected virtual bool UpdateVersion(Entity changedEntity, FieldInfo changedField) { foreach (var field in TypeInfo.GetVersionFields().Where(f => f.AutoVersion)) { SetFieldValue(field, VersionGenerator.GenerateNextVersion(GetFieldValue(field))); } return(true); }
public void Test2() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test2.version.json")) { VersionGenerator version_generator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("2.2.2", version_generator.FullVersion.Split('+')[0]); } }
public void SemVerCompatibilityTest() { VersionGenerator a = new VersionGenerator("Test1.version.json"); VersionGenerator b = new VersionGenerator("Test2.version.json"); VersionGenerator c = new VersionGenerator("Test3.version.json"); Assert.True(SemVersion.TryParse(a.FullVersion, out _, true) && SemVersion.TryParse(b.FullVersion, out _, true) && SemVersion.TryParse(c.FullVersion, out _, true)); }
private static Task <int> ShowErrors(ParserResult <Options> errors) { var helpText = HelpText.AutoBuild(errors); helpText.Heading = $"ChromeRuntimeDownloader {VersionGenerator.GetVersion().SemVer}"; helpText.Copyright = "Copyright (c) 2017-2018 DenebLab"; Console.WriteLine(helpText); return(Task.FromResult(1)); }
protected ComputeMethodFunctionBase( ComputeMethodDef method, VersionGenerator <LTag> versionGenerator, IServiceProvider services, ILogger <ComputeMethodFunction <T> >?log = null) : base(method, services) { Log = log ?? NullLogger <ComputeMethodFunction <T> > .Instance; VersionGenerator = versionGenerator; }
public ReplicaMethodInterceptor( Options?options, IServiceProvider services, IReplicator replicator, ILoggerFactory?loggerFactory = null) : base(options ??= new(), services, loggerFactory) { Replicator = replicator; VersionGenerator = options.VersionGenerator ?? services.VersionGenerator <LTag>(); }
public void CommitHashTest() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test1.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal(repo.Head.Tip.Sha, versionGenerator.CommitHash); } }
public async Task TestGeneratedFile() { string filePath = Path.GetFullPath("Test1.version.json"); VersionGenerator gen = new VersionGenerator(filePath); var test = new VerifyCS.Test { TestState = { Sources = { SampleCode },
public void Test4() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test2.version.json")) { VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Regex codename_checker = new Regex(@"codename", RegexOptions.ECMAScript); Assert.DoesNotMatch(codename_checker, versionGenerator.FullVersion); } }
public void Test3() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test1.version.json")) { VersionGenerator version_generator = new VersionGenerator(tempRepo.RepoVersionFilePath); Regex codename_checker = new Regex(@"\+codename\.Test1", RegexOptions.ECMAScript); Assert.Matches(codename_checker, version_generator.FullVersion); } }
public ReplicaMethodFunction( ComputeMethodDef method, IReplicator replicator, VersionGenerator <LTag> versionGenerator, ILogger <ReplicaMethodFunction <T> >?log = null) : base(method, ((IReplicatorImpl)replicator).Services) { Log = log ?? NullLogger <ReplicaMethodFunction <T> > .Instance; DebugLog = Log.IsEnabled(LogLevel.Debug) ? Log : null; VersionGenerator = versionGenerator; Replicator = replicator; }
public ComputeMethodFunction( ComputeMethodDef method, VersionGenerator <LTag> versionGenerator, IServiceProvider services, ILogger <ComputeMethodFunction <T> >?log = null) : base(method, versionGenerator, services, log) { if (method.Options.IsAsyncComputed) { throw Errors.InternalError( $"This type can't be used with {nameof(ComputedOptions)}.{nameof(ComputedOptions.IsAsyncComputed)} == true option."); } }
public void LightTagNameTest() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test3.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("ccdd")); repo.ApplyTag("v3.2.1"); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("tag v3.2.1", versionGenerator.BranchName); } }
public void Test6() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test2.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("oh333")); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); string expected_version = "2.2.2+head.oh333.commit." + repo.Head.Tip.Sha; Assert.Equal(expected_version, versionGenerator.FullVersion); } }
public void BranchTest() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test1.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Branch test_branch = repo.CreateBranch("testbranch111"); Commands.Checkout(repo, test_branch); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("testbranch111", versionGenerator.BranchName); } }
public void TagNameTest2() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test3.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("ccdd")); Signature sig = new Signature("Test runner", "*****@*****.**", DateTimeOffset.Now); repo.ApplyTag("release/2.2.2"); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("tag release/2.2.2", versionGenerator.BranchName); } }
public void CommitTimeTest() { // DateTime structure which represents February 3nd, 2020. It must be 2851200 seconds since January 1st, 2020 DateTimeOffset commit_time = new DateTimeOffset(new DateTime(2020, 2, 3), TimeSpan.Zero); using (TempRepoProvider tempRepo = new TempRepoProvider("Test3.version.json", commit_time)) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("aabb")); VersionGenerator version_generator = new VersionGenerator(tempRepo.RepoVersionFilePath); string expected_version = "3.0.2-alpha.1.2851200.aabb"; Assert.Equal(expected_version, version_generator.VersionWithoutBuildData); } }
public void Test7() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test3.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("snd5")); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); DateTime time = repo.Head.Tip.Committer.When.UtcDateTime; string expected_string = "3.0.2-alpha.1." + (new DateTimeOffset(time).ToUnixTimeSeconds() - new DateTimeOffset(new DateTime(2020, 1, 1), TimeSpan.Zero).ToUnixTimeSeconds()) + ".snd5+codename.Test3.head.snd5.commit." + repo.Head.Tip.Sha + ".bugfix"; Assert.Equal(expected_string, versionGenerator.FullVersion); } }
private ExtendedRegistry GetTemporaryRegistryImpl(Assembly asm) { var res = new ExtendedRegistry(); res.AssemblyName = asm.GetName().Name; res.AppVersion = VersionGenerator.Init(asm); res.MachineName = Environment.MachineName; res.AssemblyFilePath = new Uri(asm.CodeBase).LocalPath; res.Is64BitProcess = Environment.Is64BitProcess; res.ExeFileDir = Path.GetDirectoryName(res.AssemblyFilePath); res.SyrupDir = FindDir(res.ExeFileDir, _SYRUP_DIR); res.IsSyrup = !string.IsNullOrEmpty(res.SyrupDir); res.GitDir = FindDir(res.ExeFileDir, _GIT_DIR); res.DevDir = FindDevDir(res.ExeFileDir, _DEV_DIR, res.SyrupDir); res.RootDir = GetRoot(res.ExeFileDir, res.SyrupDir, res.DevDir); res.RepositoryRootDir = GetRepositoryRoot(res.GitDir); res.IsDeveloperMode = IsDeveloperMode(res.DevDir); var dv = GetDevSettings(res.DevDir); res.WorkDir = GetWorkDir(res.RootDir); res.LogDir = GetSimpleDir(res.RootDir, _LOG_DIR, res.IsDeveloperMode); res.ConfigDir = GetSimpleDir(res.RootDir, _CONFIG_DIR, res.IsDeveloperMode); res.GlobalDir = Path.Combine(res.RootDir, _GLOBAL_DIR); res.IsDeveloperMode = dv.IsDeveloperMode && !dv.DeveloperConfig.IgnoreMe; if (res.IsDeveloperMode) { ExecuteDevModel(res, dv); } #if DEBUG res.IsDebug = true; #else res.IsDebug = false; #endif Misc.CreateDirIfNotExist(res.ConfigDir); Misc.CreateDirIfNotExist(res.LogDir); return(res); }
public void Test10() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test3.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("uuuu8")); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); DateTime time = repo.Head.Tip.Committer.When.UtcDateTime; string expected_version = "3.0.2-alpha.1." + (new DateTimeOffset(time).ToUnixTimeSeconds() - new DateTimeOffset(new DateTime(2020, 1, 1), TimeSpan.Zero).ToUnixTimeSeconds()) + ".uuuu8"; Assert.Equal(expected_version, versionGenerator.VersionWithoutBuildData); } }
public void NormalizationTest1() { // DateTime structure which represents February 3nd, 2020. It must be 2851200 seconds since January 1st, 2020 DateTimeOffset commit_time = new DateTimeOffset(new DateTime(2020, 2, 3), TimeSpan.Zero); using (TempRepoProvider tempRepo = new TempRepoProvider("Test3.version.json", commit_time)) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("feature/NewFeature")); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("feature/NewFeature", versionGenerator.BranchName); string expected_version = "3.0.2-alpha.1.2851200.feature-NewFeature+codename.Test3.head.feature-NewFeature.commit." + repo.Head.Tip.Sha + ".bugfix"; Assert.Equal(expected_version, versionGenerator.FullVersion); Assert.True(SemVersion.TryParse(versionGenerator.FullVersion, out _, true)); } }
public void NormalizationTest2() { // DateTime structure which represents February 3nd, 2020. It must be 2851200 seconds since January 1st, 2020 DateTimeOffset commit_time = new DateTimeOffset(new DateTime(2020, 2, 3), TimeSpan.Zero); using (TempRepoProvider tempRepo = new TempRepoProvider("Test1.version.json", commit_time)) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); repo.ApplyTag("release/5.0.300"); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("tag release/5.0.300", versionGenerator.BranchName); string expected_version = "1.1.1+codename.Test1.head.tag-release-5-0-300.commit." + repo.Head.Tip.Sha; Assert.Equal(expected_version, versionGenerator.FullVersion); Assert.True(SemVersion.TryParse(versionGenerator.FullVersion, out _, true)); } }
public void DetachedHeadTest() { using (TempRepoProvider tempRepo = new TempRepoProvider("Test1.version.json")) { using Repository repo = new Repository(tempRepo.RepoDirectory.FullName); Commands.Checkout(repo, repo.CreateBranch("bd")); Commit firstCommit = repo.Head.Tip; File.Copy("Test3.version.json", Path.Combine(tempRepo.RepoDirectory.FullName, "Test3.version.json")); Signature sig = new Signature("Test runner", "*****@*****.**", DateTimeOffset.Now); Commands.Stage(repo, "*"); repo.Commit("Second commit", sig, sig); Commands.Checkout(repo, firstCommit); VersionGenerator versionGenerator = new VersionGenerator(tempRepo.RepoVersionFilePath); Assert.Equal("detached HEAD", versionGenerator.BranchName); } }
// Command handlers // [CommandHandler] inherited public virtual Task SignIn(SignInCommand command, CancellationToken cancellationToken = default) { var(session, user, authenticatedIdentity) = command; var context = CommandContext.GetCurrent(); if (Computed.IsInvalidating()) { _ = GetAuthInfo(session, default); _ = GetSessionInfo(session, default); var invSessionInfo = context.Operation().Items.Get <SessionInfo>(); if (invSessionInfo != null) { _ = GetUser(invSessionInfo.UserId, default); _ = GetUserSessions(invSessionInfo.UserId, default); } return(Task.CompletedTask); } if (!user.Identities.ContainsKey(authenticatedIdentity)) { throw new ArgumentOutOfRangeException( $"{nameof(command)}.{nameof(SignInCommand.AuthenticatedIdentity)}"); } var sessionInfo = SessionInfos.GetValueOrDefault(session.Id); sessionInfo ??= new SessionInfo(session.Id, Clocks.SystemClock.Now); if (sessionInfo.IsSignOutForced) { throw Errors.ForcedSignOut(); } var isNewUser = false; var userWithAuthenticatedIdentity = GetByUserIdentity(authenticatedIdentity); if (string.IsNullOrEmpty(user.Id)) { // No user.Id -> try to find existing user by authenticatedIdentity if (userWithAuthenticatedIdentity == null) { user = user with { Id = GetNextUserId() }; isNewUser = true; } else { user = MergeUsers(userWithAuthenticatedIdentity, user); } } else { // We have Id -> the user exists for sure, but we might need to switch // to userWithAuthenticatedIdentity, otherwise we'll register the same // UserIdentity for 2 or more users _ = long.Parse(user.Id, NumberStyles.Integer, CultureInfo.InvariantCulture); var existingUser = Users[user.Id]; user = userWithAuthenticatedIdentity ?? MergeUsers(existingUser, user); } // Update user.Version user = user with { Version = VersionGenerator.NextVersion(user.Version), }; // Update SessionInfo sessionInfo = sessionInfo with { AuthenticatedIdentity = authenticatedIdentity, UserId = user.Id, }; // Persist changes Users[user.Id] = user; sessionInfo = UpsertSessionInfo(sessionInfo, sessionInfo.Version); context.Operation().Items.Set(sessionInfo); context.Operation().Items.Set(isNewUser); return(Task.CompletedTask); }
public void Init(VersionGenerator generator) { _versionGenerator = generator; }
static int Main(string[] args) { Argument path_to_version_file_arg = new Argument <FileInfo>("path-to-version-file") { Description = "An absolute or relative path to a version json file." }; RootCommand commandRoot = new RootCommand { Description = "GmodNET.VersionTool. SemVer 2.0.0 compatible version generator." }; Command getVersionCommand = new Command("getVersion") { Description = "Get the full version including build metadata." }; Option skipBuildDataOption = new Option <bool>("--skip-build-data", "Should the version generator skip build metadata in the generated version."); getVersionCommand.AddArgument(path_to_version_file_arg); getVersionCommand.AddOption(skipBuildDataOption); getVersionCommand.Handler = CommandHandler.Create <FileInfo, bool>((FileInfo pathToVersionFile, bool skipBuildData) => { VersionGenerator versionGenerator = new VersionGenerator(pathToVersionFile.FullName); if (!skipBuildData) { Console.WriteLine(versionGenerator.FullVersion); } else { Console.WriteLine(versionGenerator.VersionWithoutBuildData); } }); Command getCommitCommand = new Command("getCommit", "Get the current git commit hash."); getCommitCommand.AddArgument(path_to_version_file_arg); getCommitCommand.Handler = CommandHandler.Create((FileInfo pathToVersionFile) => { VersionGenerator versionGenerator = new VersionGenerator(pathToVersionFile.FullName); Console.WriteLine(versionGenerator.CommitHash); }); Command getBranchNameCommand = new Command("getBranchName", "Get the current git HEAD name."); getBranchNameCommand.AddArgument(path_to_version_file_arg); getBranchNameCommand.Handler = CommandHandler.Create((FileInfo pathToVersionFile) => { VersionGenerator versionGenerator = new VersionGenerator(pathToVersionFile.FullName); Console.WriteLine(versionGenerator.BranchName); }); commandRoot.Add(getVersionCommand); commandRoot.Add(getCommitCommand); commandRoot.Add(getBranchNameCommand); return(commandRoot.Invoke(args)); }
public void Test9() { VersionGenerator versionGenerator = new VersionGenerator("Test2.version.json"); Assert.Equal("2.2.2", versionGenerator.VersionWithoutBuildData); }