annotate cpt_psm_prep/lib/CPT/Writer/Archive.pm @ 0:e4de0a0e90c8 draft

Uploaded
author cpt
date Tue, 05 Jul 2022 05:38:34 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
1 package CPT::Writer::Archive;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
2 no warnings;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
3 use Moose;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
4 use Archive::Any::Create;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
5 use File::Copy qw/move/;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
6 with 'CPT::Writer';
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
7
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
8 has format => (
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
9 is => 'ro',
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
10 isa => 'Str',
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
11 default => sub {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
12 'tar.gz',
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
13 },
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
14 );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
15
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
16 sub process {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
17 my ($self) = @_;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
18 # Should be a Archive::Any::Create object
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
19 if(ref $self->data() ne 'Archive::Any::Create'){
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
20 warn 'Tool author sent non Archive::Any::Create data to the writer';
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
21 }else{
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
22 $self->processed_data( $self->data() );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
23 $self->processing_complete(1);
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
24 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
25 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
26
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
27 sub write {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
28 my ($self) = @_;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
29 if ( $self->processing_complete ) {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
30 # Force the extension to that of the specified format
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
31 $self->OutputFilesClass->extension( $self->format() );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
32 # Get a filename
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
33 my $next_output_file = $self->OutputFilesClass->get_next_file();
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
34 # And get another filename with extension tacked on so we KNOW it'll behave correctly.
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
35 my $next_output_file_with_extension = $self->OutputFilesClass->get_next_file() . '.' . $self->format();
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
36 # Store the name of the file we used
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
37 push(@{$self->used_filenames()}, $next_output_file);
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
38 # Write data out
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
39 $self->processed_data->write_file($next_output_file_with_extension);
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
40 # If it has been written somewhere other than where we want,
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
41 # then we need to move it.
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
42 if($next_output_file ne $next_output_file_with_extension){
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
43 move($next_output_file_with_extension, $next_output_file);
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
44 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
45 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
46 else {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
47 warn
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
48 "Write called but processing was not marked as complete. Not writing";
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
49 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
50
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
51 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
52
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
53 sub suffix {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
54 return 'csv';
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
55 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
56 no Moose;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
57 1;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
58
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
59 __END__
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
60
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
61 =pod
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
62
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
63 =encoding UTF-8
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
64
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
65 =head1 NAME
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
66
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
67 CPT::Writer::Archive
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
68
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
69 =head1 VERSION
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
70
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
71 version 1.99.4
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
72
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
73 =head1 AUTHOR
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
74
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
75 Eric Rasche <rasche.eric@yandex.ru>
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
76
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
77 =head1 COPYRIGHT AND LICENSE
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
78
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
79 This software is Copyright (c) 2014 by Eric Rasche.
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
80
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
81 This is free software, licensed under:
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
82
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
83 The GNU General Public License, Version 3, June 2007
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
84
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
85 =cut