Example #1
0
        public int Run(BaseOptions options)
        {
            var opts = (FixtureOptions)options;

            if (!File.Exists(opts.Input))
            {
                Console.WriteLine("Error: Input file {0} not found.", opts.Input);
                return(1);
            }

            var parser = new InpxParser(opts.Input);

            parser.OnNewEntry += Parser_OnNewEntry;

            Console.OutputEncoding = Encoding.UTF8;
            Console.WriteLine(@"using DotOPDS.Models;
using DotOPDS.Utils;
using System;
using System.Collections.Generic;

namespace DotOPDS.Tests
{
    class InpxDemoFixture
    {
        public static List<Book> Result = new List<Book>
        {");

            parser.Parse().Wait(); // perform in a sync way

            Console.WriteLine(@"        };
    }
}");

            return(0);
        }
Example #2
0
        public int Run(BaseOptions options)
        {
            Settings.Load(options.Config);

            Console.WriteLine("Libraries available:");
            Console.WriteLine("\tID\t\t\t\t\tLocation");
            foreach (var lib in Settings.Instance.Libraries)
            {
                Console.WriteLine("\t{0}\t{1}", lib.Key, lib.Value.Path);
            }

            return(0);
        }
Example #3
0
        public int Run(BaseOptions options)
        {
            var opts = (ServeOptions)options;

            Settings.Load(opts.Config);
            PluginProvider.Instance.Initialize();

            logger.Info("Hit Ctrl+C to stop");
            using (var task = new ServeTask())
            {
                task.Run(new ServeTaskArgs {
                    Port = Settings.Instance.Port
                });
            }

            return(0);
        }
Example #4
0
        public int Run(BaseOptions options)
        {
            var filename = Util.Normalize(options.Config);

            if (!File.Exists(filename))
            {
                var resource = string.Format("default.{0}.json", Util.IsLinux ? "nix" : "win");
                Resource.SaveToFile(resource, filename);
                Console.WriteLine("Config file created at {0}", filename);
                return(0);
            }
            else
            {
                Console.Error.WriteLine("File {0} already exists!");
                return(1);
            }
        }
Example #5
0
        public int Run(BaseOptions options)
        {
            Settings.Load(options.Config);
            var opts = (RmOptions)options;

            var library = Guid.Parse(opts.Lib);

            if (!Settings.Instance.Libraries.ContainsKey(library))
            {
                Console.Error.WriteLine("Library {0} not found.", library);
                return(1);
            }

            var storage = new LuceneIndexStorage();
            var total   = storage.RemoveLibrary(Settings.Instance.DatabaseIndex, library.ToString());

            Settings.Instance.Libraries.Remove(library);
            Settings.Save();
            Console.WriteLine("Library {0} removed ({1} books).", library, total);

            return(0);
        }
Example #6
0
        public int Run(BaseOptions options)
        {
            Settings.Load(options.Config);
            var opts = (MvOptions)options;

            var id = Guid.Parse(opts.Id);
            var to = Util.Normalize(opts.To);

            if (!Settings.Instance.Libraries.ContainsKey(id))
            {
                Console.Error.WriteLine("Library {0} not found.", id);
                return(1);
            }

            var lib  = Settings.Instance.Libraries[id];
            var from = lib.Path;

            lib.Path = to;
            Settings.Save();
            Console.WriteLine("Library moved from {0} to {1}.", from, to);
            return(0);
        }
Example #7
0
        public int Run(BaseOptions options)
        {
            var opts = (ImportOptions)options;

            Settings.Load(opts.Config);
            PluginProvider.Instance.Initialize();

            string pluginName = opts.Plugin;
            bool   showHelp   = false;

            if (opts.Plugin.ToLower() == "help")
            {
                if (string.IsNullOrWhiteSpace(opts.Library))
                {
                    Console.WriteLine("Available importers:");
                    PluginProvider.Instance.Importers.ForEach(i =>
                    {
                        Console.WriteLine("  {0}\t\t\t{1}", i.Command, i.Name);
                    });
                    Console.WriteLine();

                    return(0);
                }

                pluginName = opts.Library;
                showHelp   = true;
            }

            var plugin = PluginProvider.Instance.GetBookProvider(pluginName);

            if (plugin == null)
            {
                Console.Error.WriteLine("Import plugin '{0}' not found.", opts.Plugin);
                return(1);
            }

            if (showHelp)
            {
                Console.WriteLine(plugin.Help);
                return(0);
            }

            var library = Util.Normalize(opts.Library);

            if (!Directory.Exists(library))
            {
                Console.Error.WriteLine("Library directory {0} not found.", library);
                return(1);
            }

            var watch  = Stopwatch.StartNew();
            var status = new ConsoleStatus();

            using (var task = new ImportTask())
            {
                task.Start(new ImportTaskArgs
                {
                    Plugin  = plugin,
                    Library = library,
                    Args    = opts.Arguments.ToArray()
                }, (e) =>
                {
                    Console.WriteLine();
                    Console.Error.WriteLine("Error executing import plugin '{0}': {1}", opts.Plugin, e.Message);
                    _logger.Fatal(e);
                    Environment.Exit(1);
                });

                while (task.EntriesProcessed == 0)
                {
                    if (Program.Exit.WaitOne(1))
                    {
                        Environment.Exit(1);
                        return(1);
                    }
                    status.Update("Preparing to import, elapsed {0:hh\\:mm\\:ss}", watch.Elapsed);
                }

                status.Clear();
                Console.WriteLine("Using {0} workers", Environment.ProcessorCount);

                var importStart = watch.Elapsed;
                while (!task.Finished)
                {
                    if (Program.Exit.WaitOne(1))
                    {
                        Environment.Exit(1);
                        return(1);
                    }
                    status.Update("Processed {0} of {1}, {2} book/sec, elapsed {3:hh\\:mm\\:ss}", task.EntriesProcessed, task.EntriesTotal,
                                  Math.Truncate(task.EntriesProcessed / (watch.Elapsed.TotalSeconds - importStart.TotalSeconds)), watch.Elapsed);
                }

                watch.Stop();
                status.Update("Done in {0:hh\\:mm\\:ss} ({1} added/updated, {2} deleted)", watch.Elapsed, task.EntriesProcessed, task.EntriesDeleted);
            }

            return(0);
        }