示例#1
0
        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);
        }
示例#2
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);
        }