#! /usr/bin/perl

# Best practice
use strict;
use warnings;

# Load acme
use acme;

# Load POSIX
use POSIX qw(EXIT_SUCCESS EXIT_FAILURE);

#XXX: debug
use Data::Dumper;

# Init prod
my $prod = 0;

# Strip and enable prod
@ARGV = map { if ($_ eq '-p') { $prod = 1; (); } else { $_; } } @ARGV;

# Show usage
if (scalar(@ARGV) < 2) {
	print "Usage: $0 user\@example.com www.example.com [example.com] [...]\n";
	exit EXIT_FAILURE;
}

# Create new object
my $acme = acme->new(shift @ARGV, @ARGV);

# Prepare environement
$acme->prepare($prod);

# Generate required keys
$acme->genKeys();

# Generate csr
$acme->genCsr();

# Directory
$acme->directory($prod);

# Register
$acme->register();

# Authorize
$acme->authorize($prod);

# Issue
$acme->issue();

# Exit with success
exit EXIT_SUCCESS;