예제 #1
0
        protected override void RunCore(Args args)
        {
            var environmentName = args.Arguments.Skip(1).FirstOrDefault();
            var extractions = ExtractionInstructions.Parse(args.Arguments.Skip(2).ToArray());

            if (environmentName == null)
                throw new Exception("You need to specify an environment");

            var environment = Plans.Environment(environmentName);

            using (var context = new DataContext(environment.ConnectionString))
            using (var scope = new TransactionScope())
            {
                var metabase = new ContextMetabase(context);

                foreach (var extraction in extractions)
                    extraction.Update(metabase, Plans);

                var extract = XElement.Load(ExtractFile);

                foreach (var extraction in extractions)
                    extraction.Insert(metabase, extract);

                scope.Complete();
            }
        }
예제 #2
0
파일: Args.cs 프로젝트: baralong/forklift
        public static Args Parse(string[] args)
        {
            var parsedArgs = new Args();

            var counter = 0;
            while (counter < args.Length)
            {
                var arg = args[counter];
                if (arg.StartsWith("-"))
                {
                    var name = arg.Substring(1);
                    counter += 1;
                    if (counter >= args.Length)
                        throw new Exception("No value provided for option " + name);
                    var value = args[counter];
                    parsedArgs._options.Add(name, value);
                }
                else
                {
                    parsedArgs._arguments.Add(arg);
                }
                counter += 1;
            }

            return parsedArgs;
        }
예제 #3
0
        protected override void RunCore(Args args)
        {
            var environmentName = args.Arguments.Skip(1).FirstOrDefault();
            var extractions = ExtractionInstructions.Parse(args.Arguments.Skip(2).ToArray());

            if (environmentName == null)
                throw new Exception("You need to specify an environment");

            var environment = Plans.Environment(environmentName);

            using (var context = new DataContext(environment.ConnectionString))
            {
                var metabase = new ContextMetabase(context);

                foreach (var extraction in extractions)
                    extraction.Update(metabase, Plans);

                new XElement("Extract",
                             extractions.Select(x => x.Run(metabase))
                    ).Save(ExtractFile);
            }
        }