コード例 #1
0
        /// <summary>
        /// Resolves path tokens like application folder and working folder.
        /// </summary>
        /// <param name="path">
        /// The path containing token.
        /// </param>
        /// <returns>
        /// the valid resolved path
        /// </returns>
        public static string ResolvePath(string path)
        {
            var engine = new SyncEngine {
                WorkingFolder = Config.WorkingFolder
            };

            return(engine.ReplacePathToken(path));
        }
コード例 #2
0
        /// <summary>
        /// Executes the list of commands specified as a path to the file containing the serialized list in the first parameter.
        /// </summary>
        /// <param name="args">
        /// The parameter that contains the path to the list of serialized commands.
        /// </param>
        public static void Main(string[] args)
        {
#if (DEBUG)
            if (args.Length < 1)
            {
                args = new[] { @"{FS:ApplicationFolder}\A Copy OutlookCal to Xml.SyncList" };
            }
#endif

            if (args.Length >= 1)
            {
                var success = false;
                try
                {
                    var defaultBaseFolder =
                        Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SemSyncCmd");
                    Console.WriteLine(Resources.MessageInfoWorkingFolder, defaultBaseFolder);

                    // setup the sync engine
                    var engine = new SyncEngine {
                        WorkingFolder = defaultBaseFolder, UiProvider = new UiDispatcher()
                    };

                    var filename = engine.ReplacePathToken(args[0]);

                    if (!File.Exists(filename))
                    {
                        Console.WriteLine(Resources.ErrorMessageFileNotFound + filename);
                    }
                    else
                    {
                        // load the list of commands
                        Console.WriteLine(Resources.MessageInfoLoadingList, filename);
                        var syncCommands = SyncCollection.LoadSyncList(filename);

                        // feed dispatcher with credentials if specified by the command line
                        ((UiDispatcher)engine.UiProvider).UserDomain   = args.Length > 1 ? args[1] : string.Empty;
                        ((UiDispatcher)engine.UiProvider).UserName     = args.Length > 2 ? args[2] : string.Empty;
                        ((UiDispatcher)engine.UiProvider).UserPassword = args.Length > 3 ? args[3] : string.Empty;

                        // connect to events
                        engine.ProcessingEvent += ProcessingEvent;
                        engine.ProgressEvent   += ProgressEvent;

                        // execute commands
                        success = engine.Execute(syncCommands);

                        // disconnect from events
                        engine.ProcessingEvent -= ProcessingEvent;
                        engine.ProgressEvent   -= ProgressEvent;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(Resources.MessageErrorException, ex);
                }

                Console.WriteLine(Resources.MessageInfoStatus, success ? "success" : "failed");
            }
            else
            {
                Console.WriteLine(
                    Resources.MessageInfoUsage,
                    Path.GetFileNameWithoutExtension(Assembly.GetAssembly(typeof(Program)).CodeBase));
            }

#if (DEBUG)
            // wait for user input if in debug build
            Console.WriteLine(Resources.MessageInfoCloseWithEnter);
            Console.ReadLine();
#endif
        }