Giter VIP home page Giter VIP logo

backuppy's People

Contributors

bartfeenstra avatar

Watchers

 avatar  avatar  avatar

backuppy's Issues

Goals for 0.3.0

  • Logging (#45)
  • Catch uncaught exceptions, log them, and make the CLI output user-facing messages only. But what to do with important log messages if no logger has been configured? (#50)
  • SSH sources (currently we have path sources only, and SSH for targets only)
  • Allow verbosity to be overridden in the CLI (enabled/disabled) (#47)
  • An init command to create a new configuration file, either as YAML (default, with comments) or JSON. Enable the stdio notifier by default, as well as sensible logging, and inform the user of how to consult the logs. (#51)
  • Commands to convert JSON to YAML and back. Actually, probably not necessary, as this was intended so novices can convert examples, for instance, but with the new init command, which can output in JSON or YAML, I don't think we need dedicated conversion commands.
  • A command to test the configuration. It will also try to check if all locations are available. If they aren't, then that should be debugging output, not an error, but it we must also ensure this lets users accept SSH host keys. Or, instead, we add a --dry-run or --simulate option to commands taking configuration? (postponed to 0.4.0: #46)

Simplify locations

Can we simplify locations by requiring paths to be absolute? Then we can convert all other paths, if they are relative, to absolute ones in relation to these location paths.

A use case is adding file patterns (for rsync's --exclude= and --include=). rsync does not seem to resolve those against the source path if the patterns are relative.

The implementation would involve moving the paths from locations to the top-level configuration. We can simplify the configuration files' source and target settings by repurposing those to just take strings paths. A newly introduced source_type and target_type would default to path, and a newly introduced source_configuration and target_configuration would contain any optional location configuration.

For local path locations, the source and target values may be relative. They will be provided in absolute form by resolving them against the location of the configuration file being used.

HOWEVER, this all depends on the source and target paths not changing. I don't foresee any problems within the scope of the use cases envisioned for Backuppy, but it's something to keep in mind.

Goals for 0.4.0

  • A command to restore paths from the latest backup. Must ask for confirmation, because it overrides live/production data. Use -f or -y to override the confirmations and make the command non-interactive. (#53) (#56)
  • Add --file and --dir arguments to the backup command, that will have the same effect as on the restore command. (#58)
  • Publish API documentation. (#57)
  • Bug #61
  • SSH sources (#74)

Goals for 0.5.0

  • A command to test the configuration. It will also try to check if all locations are available. If they aren't, then that should be debugging output, not an error, but it we must also ensure this lets users accept SSH host keys. Or, instead, we add a --dry-run or --simulate option to commands taking configuration? We can also add something like --interactive as a mutually exclusive option to -f in order to force commands to be interactive. In this mode the back-up and restore commands can tell rsync to ask for manual host key verification. The thing is that our API (backup() and restore()) is not coupled to the shell. If we tell these API functions to be interactive, they need to interact with stdin. We can build this in an API-ish way by making these functions accept a stdin file handler. If it exists, interactive mode is enabled. If it isn't, all interaction is disabled.
  • Add Notifier.warn() which can be used to indicate why a command failed to execute, but if the cause isn't a problem, such as when no SSH location can be reached, because the command is run on cron and the machine is off Wi-Fi.
  • Can we simplify locations? (#78)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.