source: projects/vine-spec-skeleton/tags/release-0.4/lib/VineLinux/VSS/Init.pm @ 3110

Revision 3110, 1.6 KB checked in by iwaim, 13 years ago (diff)

生成される設定ファイルの書式を変更

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\,\.]+(\s|\w)$/) {
55            return $data;
56        } else {
57          print "ERROR: invalid value!\n";
58          exit 1;
59        }
60    } elsif ($type eq 'email') {
61        if (Email::Valid::Loose->address($data)) {
62          return $data;
63        } else {
64          print "ERROR: invalid email address!\n";
65          exit 1;
66        }
67    } else {
68      exit 1;
69    }
70}
71
72sub create {
73    my $class = shift;
74    my $data = shift;
75
76    my $fh = FileHandle->new;
77    $fh->open($config,'w');
78    $fh->print("packager_name: $data->{packager_name}\n");
79    $fh->print("packager_fullname: $data->{packager_fullname}\n");
80    $fh->print("packager_email: $data->{packager_email}\n");
81    print "create: $config\n";
82}
83
841;
85
86
Note: See TracBrowser for help on using the repository browser.