Beispiel #1
0
        private NumberedTextScript buildScript(int major, int minor, FileInfo file, int counter)
        {
            Tuple <String, String> pair = file.Name.splitAt(" ");
            string scriptNumberText     = pair.Item1.Trim();
            string description          = pair.Item2.Trim();

            // Parses script number
            long scriptNumber;

            if (!long.TryParse(scriptNumberText, out scriptNumber))
            {
                throw new ArgumentException(String.Format("Invalid script number format: {0} for file: {1}", scriptNumberText, file.FullName));
            }

            // cleans up description
            if (description.StartsWith("-"))
            {
                description = description.Substring(1).Trim();
            }
            if (description.EndsWith(".sql", StringComparison.CurrentCultureIgnoreCase))
            {
                description = description.Substring(0, description.Length - 4);
            }

            NumberedTextScript result = new NumberedTextScript(file, major, minor, scriptNumber, description);

            // Checks sequential number, if a number is provided.  Anything greater than 1000 is assumed to be a timestamp and sequence isn't enforced
            if (result.Version.IsPatchNumeric && scriptNumber != counter)
            {
                throw new ArgumentException(String.Format("Script number: {0} doesn't match expected value: {1} for file: {2}", scriptNumber, counter, file.FullName));
            }

            return(result);
        }
Beispiel #2
0
        public static int executeSqlFile(Options options)
        {
            try
            {
                SqlDatabase scriptTarget = new SqlDatabase(options);

                options.SkipVersion = true;         // turns off setting patch version since file is free form sql

                FileInfo file = new FileInfo(options.Path);
                IScript <ITextScriptTarget> script = new NumberedTextScript(file, 0, 0, 0, "");
                script.apply(scriptTarget, options);

                return(0);
            }
            catch (Exception ex)
            {
                WriteMessage(Assembly.GetExecutingAssembly().FullName, string.Empty, Category.error, "1", ex.ToString());
                return(1);
            }
        }
        public int CompareTo(object obj)
        {
            NumberedTextScript other = (NumberedTextScript)obj;

            return(Version.CompareTo(other.Version));
        }