#!/usr/bin/perl use strict; use warnings; use Moose::Util::TypeConstraints qw( find_type_constraint ); use Piny; my ( $batch, $name ); if ( $ARGV[0] eq "--batch" ) { ( $batch, $name ) = @ARGV; } else { ( $name ) = @ARGV; }; if ( not defined $name ) { print "Usage: newrepo REPONAME\n"; exit 1; }; if ( not find_type_constraint( "Reponame" )->check( $name ) ) { print "That is not a valid repo name; must be at least 1 character long, begin with a lowercase alphanumeric character, and contain only alphanumeric characters and dashes.\n"; exit 1; }; my $description; while( 1 ) { print "Provide a one-line description to be used in repo listings, the shorter the better:\n"; chomp( $description = ); if ( not find_type_constraint( "SimpleText" )->check( $description ) ) { print "Must be 1-80 characters long; control characters (including tab) not allowed.\n"; if ( defined $batch ) { exit; }; next; }; print "Okay! Working, please wait...\n"; last; }; my $config = Piny::Config->new( ); my $dest = $config->piny_adminemail; unless( open( MAIL, "|/usr/lib/sendmail -t" ) ) { die "Couldn't execute sendmail: $!\n"; }; print MAIL <create( $name, $description ); print "Repo URL: " . $repo->ikiwiki_url . "\n"; print "Repo URL: " . $repo->cgit_url . "\n";