示例#1
0
 public DataInitTask(
     CosmosOptions cosmosOptions,
     StorageOptions storageOptions,
     DataInitTypes selectedTypes)
 {
     CosmosOptions  = cosmosOptions;
     StorageOptions = storageOptions;
     SelectedTypes  = selectedTypes;
 }
示例#2
0
        public static void Configure(CommandLineApplication command)
        {
            command.Description = "Creates initial data for application.";
            command.SetDefaultHelp();

            var typesOption = command.Option(
                "--types | -t <types>", $"The comma-separated list of types to initialize ({AllDataTypes}) or '*' for all.",
                CommandOptionType.SingleValue);

            command.OnExecute(async() =>
            {
                var cosmos  = new CosmosOptions();
                var storage = new StorageOptions();

                DataInitTypes selectedTypes = DataInitTypes.None;
                string typesText            = typesOption.Value();
                if (typesText == "*")
                {
                    selectedTypes =
                        DataInitTypes.Domains |
                        DataInitTypes.Licenses |
                        DataInitTypes.FAQs |
                        DataInitTypes.Email |
                        DataInitTypes.ARM |
                        DataInitTypes.DatasetOwners;
                }
                else if (!string.IsNullOrWhiteSpace(typesText))
                {
                    selectedTypes = typesText
                                    .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                                    .Select(s => Enum.Parse(typeof(DataInitTypes), s.Trim(), true))
                                    .Aggregate(DataInitTypes.None, (selected, v) => selected | (DataInitTypes)v);
                }
                if (selectedTypes == DataInitTypes.None)
                {
                    throw new ArgumentException("No data types specified.");
                }

                if (command.HasAllRequiredParameters(new[]
                {
                    cosmos.Endpoint,
                    cosmos.Database,
                    storage.Account
                }))
                {
                    await new Admin.Data.DataInitTask(cosmos, storage, selectedTypes).ExecuteAsync();
                }

                return(0);
            });
        }