protected override int Execute() { base.Execute(); var metaData = new GenymanMetadata(); var version = GetVersion(); if (Input.Value.IsNullOrEmpty()) { Description = $"{metaData.Description} (Version {version})"; Name = metaData.Identifier.ToLower(); ShowHelp(); return(-1); } var fileName = Input.ParsedValue; if (!File.Exists(fileName)) { Log.Error($"Could not find input file {fileName}"); return(-1); } var configurationContents = File.ReadAllText(fileName); GenymanConfiguration <TConfiguration> genyManConfiguration; try { //todo: based upon extension parse this genyManConfiguration = configurationContents.FromJsonString <TConfiguration>(); } catch (Exception e) { Log.Debug(e.Message); Log.Error($"Could not parse {fileName} as a valid Genyman input file"); return(-1); } var generator = new TGenerator { InputFileName = fileName, ConfigurationMetadata = genyManConfiguration.Genyman, Configuration = genyManConfiguration.Configuration, WorkingDirectory = new FileInfo(fileName).DirectoryName, Metadata = metaData, Overwrite = Overwrite.HasValue(), Update = UpdateOption?.HasValue() ?? false }; var sw = Stopwatch.StartNew(); Log.Information($"Executing {generator.Metadata.PackageId} - Version {version}"); generator.Execute(); var elapsed = sw.ElapsedMilliseconds; Log.Information($"Finished {generator.Metadata.PackageId} ({elapsed}ms)"); // telemetry if (metaData.PackageId.ToLower() != "genyman") { const string telemetryUrl = "https://cmgg8m1ib1.execute-api.us-east-2.amazonaws.com/genyman"; telemetryUrl.PostJsonToUrl(new Telemetry() { Name = metaData.PackageId, Version = metaData.Version, Duration = elapsed }); } return(0); }
protected override int Execute() { base.Execute(); if (FromCli && !string.IsNullOrEmpty(PackageIdArgument.ParsedValue)) { var packageId = PackageIdArgument.ParsedValue; var resolvePackageResult = DotNetRunner.ResolvePackage(packageId, SourceOption.ParsedValue, UpdateOption.HasValue(), string.Empty); if (resolvePackageResult.success) { var program = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? Path.Combine(DotNetRunner.CliFolderPathCalculator.ToolsShimPath, resolvePackageResult.packageId) : resolvePackageResult.packageId; var run = ProcessRunner.Create(program) .IsGenerator() .WithArgument(Name); foreach (var option in Options) { if (option.HasValue()) { run.WithArgument("--" + option.LongName, option.Value()); } } run.Execute(false); return(1); } Log.Error($"Could not execute {Name} command for this packageId."); return(-1); } return(0); }