summaryrefslogtreecommitdiff
path: root/pinyadmin/sbin/newrepo
blob: a13a0dcef41c9201339e523432a49e1c2a052107 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/perl

use strict;
use warnings;

use Moose::Util::TypeConstraints qw( find_type_constraint );

use Piny;

my ( $batch, $name, $remote );

if ( $ARGV[0] eq "--batch" ) {
  ( $batch, $name, $remote ) = @ARGV;
} else {
  ( $name, $remote ) = @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 = <STDIN> );

  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 <<END;
To: $dest
Subject: Creating piny repo $name
Content-type: text/plain; charset=us-ascii

A new piny repo ``$name'' has been created.

Description: $description
END

if( defined( $remote ) ) {
  print( MAIL "\nRemote: $remote\n" );
};

close( MAIL );

my $repo;

if( defined( $remote ) ) {
  $repo = Piny::Repo->create( $name, $description, $remote );
} else {
  $repo = Piny::Repo->create( $name, $description );
};

print "Repo URL: " . $repo->ikiwiki_url . "\n";
print "Repo URL: " . $repo->cgit_url . "\n";