source: projects/vine-spec-skeleton/trunk/lib/VineLinux/VSS/Init.pm @ 745

Revision 745, 1.5 KB checked in by iwaim, 16 years ago (diff)

v-s-s: initオプションの追加

Line 
1package VineLinux::VSS::Init;
2
3use strict;
4use warnings;
5
6use FileHandle;
7use Email::Valid::Loose;
8
9our $config;
10
11sub run {
12    my $class = shift;
13    $config = shift;
14
15    if (-e $config) {
16      print "Stop. $config is exist.\n";
17      exit 1;
18    }
19
20    $class->set;
21}
22
23sub set {
24    my $class = shift;
25
26    my %data;
27    my $stdin;
28
29    print 'User ID?: ';
30    chomp($stdin = <STDIN>);
31    $data{'packager_name'} = $class->_inputdata_check($stdin,'id');
32    print 'User name?: ';
33    chomp($stdin = <STDIN>);
34    $data{'packager_fullname'} = $class->_inputdata_check($stdin,'name');
35    print 'User email address?: ';
36    chomp($stdin = <STDIN>);
37    $data{'packager_email'} = $class->_inputdata_check($stdin,'email');
38
39    $class->create(\%data);
40}
41
42sub _inputdata_check {
43    my $class = shift;
44    my $data = shift;
45    my $type = shift;
46
47    if ($type eq 'id') {
48        if ($data =~ m/^\w+$/) {
49            return $data;
50        } else {
51          exit 1;
52        }
53    } elsif ($type eq 'name') {
54        if ($data =~ m/^\s?\w+(\s|\w)$/) {
55            return $data;
56        } else {
57          exit 1;
58        }
59    } elsif ($type eq 'email') {
60        if (Email::Valid::Loose->address($data)) {
61            return $data;
62        } else {
63          exit 1;
64        }
65    } else {
66      exit 1;
67    }
68}
69
70sub create {
71    my $class = shift;
72    my $data = shift;
73
74    my $fh = FileHandle->new;
75    $fh->open($config,'w');
76    $fh->print("packager_name = $data->{packager_name}\n");
77    $fh->print("packager_fullname = $data->{packager_fullname}\n");
78    $fh->print("packager_email = $data->{packager_email}\n");
79    print "create: $config\n";
80}
81
821;
83
84
Note: See TracBrowser for help on using the repository browser.