App-Yabsm
view release on metacpan or search on metacpan
lib/App/Yabsm.pm view on Meta::CPAN
# Author: Nicholas Hubbard
# WWW: https://github.com/NicholasBHubbard/yabsm
# License: MIT
# The main module of Yabsm.
# ABSTRACT: a btrfs snapshot and backup management system
use strict;
use warnings;
use v5.16.3;
package App::Yabsm;
our $VERSION = '3.14';
use App::Yabsm::Command::Daemon;
use App::Yabsm::Command::Config;
use App::Yabsm::Command::Find;
sub usage {
return <<'END_USAGE';
usage: yabsm [--help] [--version] [<COMMAND> <ARGS>]
see 'man yabsm' for a detailed overview of yabsm.
commands:
<config|c> [--help] [check ?file] [ssh-check <SSH_BACKUP>] [ssh-key]
[yabsm-user-home] [yabsm_dir] [subvols] [snaps] [ssh_backups]
[local_backups] [backups]
<find|f> [--help] [<SNAP|SSH_BACKUP|LOCAL_BACKUP> <QUERY>]
<daemon|d> [--help] [start] [stop] [restart] [status] [init]
END_USAGE
}
sub main {
# This is the toplevel subroutine of Yabsm.
my $cmd = shift @_ or die usage();
my @args = @_;
if ($cmd =~ /^(-h|--help)$/) { print usage() and exit 0 }
if ($cmd eq '--version') { say $VERSION and exit 0 }
# provide user with command abbreviations
if ($cmd eq 'd') { $cmd = 'daemon' }
elsif ($cmd eq 'c') { $cmd = 'config' }
elsif ($cmd eq 'f') { $cmd = 'find' }
if ($cmd eq 'daemon') { $cmd = \&App::Yabsm::Command::Daemon::main }
elsif ($cmd eq 'config') { $cmd = \&App::Yabsm::Command::Config::main }
elsif ($cmd eq 'find' ) { $cmd = \&App::Yabsm::Command::Find::main }
else {
die usage();
}
$cmd->(@args);
exit 0;
}
1;
( run in 1.204 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )