PublicInbox::Import(3) User Contributed Perl Documentation NAME PublicInbox::Import - message importer for public-inbox v1 inboxes VERSION version 1.0 SYNOPSIS use PublicInbox::Eml; # PublicInbox::Eml exists as of public-inbox 1.5.0, # Email::MIME was used in older versions use PublicInbox::Git; use PublicInbox::Import; chomp(my $git_dir = `git rev-parse --git-dir`); $git_dir or die "GIT_DIR= must be specified\n"; my $git = PublicInbox::Git->new($git_dir); my @committer = ('inbox', 'inbox@example.org'); my $im = PublicInbox::Import->new($git, @committer); # to add a message: my $message = "From: \n". "Subject: test message \n" . "Date: Thu, 01 Jan 1970 00:00:00 +0000\n" . "Message-ID: \n". "\ntest message"; my $parsed = PublicInbox::Eml->new($message); my $ret = $im->add($parsed); if (!defined $ret) { warn "duplicate: ", $parsed->header_raw('Message-ID'), "\n"; } else { print "imported at mark $ret\n"; } $im->done; # to remove a message my $junk = PublicInbox::Eml->new($message); my ($mark, $orig) = $im->remove($junk); if ($mark eq 'MISSING') { print "not found\n"; } elsif ($mark eq 'MISMATCH') { print "Message exists but does not match\n\n", $orig->as_string, "\n",; } else { print "removed at mark $mark\n\n", $orig->as_string, "\n"; } $im->done; DESCRIPTION An importer and remover for public-inboxes which takes "PublicInbox::Eml" or Email::MIME messages as input and stores them in a git repository as documented in , except it does not allow duplicate Message-IDs. It requires git(1) and git-fast-import(1) to be installed. METHODS new my $im = PublicInbox::Import->new($git, @committer); Initialize a new PublicInbox::Import object. add my $parsed = PublicInbox::Eml->new($message); $im->add($parsed); Adds a message to to the git repository. This will acquire "$GIT_DIR/ssoma.lock" and start git-fast-import(1) if necessary. Messages added will not be visible to other processes until "done" is called, but "remove" may be called on them. remove my $junk = PublicInbox::Eml->new($message); my ($code, $orig) = $im->remove($junk); Removes a message from the repository. On success, it returns a ':'-prefixed numeric code representing the git-fast-import mark and the original messages as a PublicInbox::Eml (or Email::MIME) object. If the message could not be found, the code is "MISSING" and the original message is undef. If there is a mismatch where the "Message-ID" is matched but the subject and body do not match, the returned code is "MISMATCH" and the conflicting message is returned as orig. done Finalizes the git-fast-import(1) and unlocks the repository. Calling this is required to finalize changes to a repository. SEE ALSO Email::MIME CONTACT All feedback welcome via plain-text mail to The mail archives are hosted at COPYRIGHT Copyright (C) 2016-2020 all contributors License: AGPL-3.0+ perl v5.38.0 2023-07-30 PublicInbox::Import(3)