ACME-2026

 view release on metacpan or  search on metacpan

script/acme2026  view on Meta::CPAN

        'help|h'   => \$help,
    ) or usage('Invalid options for complete');
    usage() if $help;

    my $id = shift @ARGV;
    usage('complete requires an ID') unless defined $id && $id =~ /^\d+$/;
    die "Plan file not found: $file\n" unless -e $file;

    my $plan = plan_load($file);
    complete_item($plan, $id, (defined $note ? (note => $note) : ()));
    plan_save($plan, $file);
    print "Completed [$id]\n";
    exit 0;
}

if ($cmd eq 'list') {
    my $file = default_file();
    my ($status, $list, $sort, $help);
    my @tags;
    GetOptionsFromArray(
        \@ARGV,
        'file|f=s' => \$file,
        'status|s=s' => \$status,
        'list|l=s' => \$list,
        'tag|t=s@' => \@tags,
        'sort=s' => \$sort,
        'help|h' => \$help,
    ) or usage('Invalid options for list');
    usage() if $help;

    my $plan = load_plan($file);
    my %filters;
    $filters{status} = $status if defined $status;
    $filters{list} = $list if defined $list;
    $filters{tags} = \@tags if @tags;
    $filters{sort} = $sort if defined $sort;

    my @items = items($plan, %filters);
    if (!@items) {
        print "No items\n";
        exit 0;
    }

    for my $item (@items) {
        my $tags = $item->{tags} && @{ $item->{tags} } ? join(',', @{ $item->{tags} }) : '-';
        my $due = defined $item->{due} && length $item->{due} ? $item->{due} : '-';
        my $line = join("\t",
            $item->{id},
            $item->{status},
            $item->{list} || 'General',
            $due,
            'p' . ($item->{priority} || 0),
            $tags,
            $item->{title},
        );
        print "$line\n";
    }
    exit 0;
}

usage("Unknown command: $cmd");

__END__

=head1 NAME

acme2026 - Small CLI for ACME::2026 checklists

=head1 SYNOPSIS

  acme2026 add "Run a marathon" --list Health --tag fitness --due 2026-10-01
  acme2026 complete 1 --note "Signed up"
  acme2026 list --status todo --sort due

=head1 DESCRIPTION

This script is a minimal wrapper around ACME::2026 for adding, completing,
and listing checklist items stored as JSON.

=cut



( run in 0.517 second using v1.01-cache-2.11-cpan-d8267643d1d )