Changeset 1200 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts/SyncManager.pm
- Timestamp:
- 12/27/12 18:26:31 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/SyncManager.pm
r1198 r1200 5 5 use LATMOS::Accounts::Log; 6 6 use LATMOS::Accounts; 7 use Config::IniFiles; 7 8 8 9 =head1 NAME … … 66 67 =cut 67 68 68 sub dbrev { $_[0]->{lastrev} } 69 70 =head2 updrev 71 72 Update status file with with current base revision as restart point 73 74 =cut 75 76 sub updrev { 69 sub dbrev { 77 70 my ($self) = @_; 78 71 my $LA = LATMOS::Accounts->new($self->{config}, noacl => 1); 79 72 my $base = $LA->base; 80 my $newrev = $base->current_rev; 81 $self->{lastrev} = $newrev; 82 return $newrev; 73 return $base->current_rev; 74 } 75 76 sub _load_state_ini { 77 my ($self) = @_; 78 my $la = LATMOS::Accounts->new($self->{config}, noacl => 1); 79 80 my $state_file = $la->val('_default_', 'state_dir', '/'); 81 $state_file .= '/la-sync-manager.ini'; 82 la_log(LA_DEBUG, "Status file is %s", $state_file); 83 if ($state_file && ! -w $state_file) { 84 # don't exists, we have to create it 85 open(my $handle, '>', $state_file) or do { 86 la_log(LA_ERR, "Cannot open build net status file %s", 87 $state_file); 88 return; 89 }; 90 print $handle "[_default_]\n"; 91 close($handle); 92 } 93 return Config::IniFiles->new( 94 -file => $state_file 95 ); 96 } 97 98 =head2 get_last_rev($module) 99 100 Return the last revision the module succeed 101 102 =cut 103 104 sub get_last_rev { 105 my ($self, $module) = @_; 106 107 my $ini = $self->_load_state_ini or return; 108 109 return ($ini->val($module, 'rev', 0), $ini->val($module, 'time', 0)); 83 110 } 84 111 … … 94 121 } 95 122 96 =head2 process_module($module , $dbrev)123 =head2 process_module($module) 97 124 98 125 Process C<$module>. … … 103 130 104 131 sub process_module { 105 my ($self, $module , $dbrev) = @_;132 my ($self, $module) = @_; 106 133 107 134 eval { … … 115 142 $modtype, 116 143 config => $self->{config}, 144 name => $module, 145 syncm => $self, 117 146 ) 118 147 or do { … … 126 155 } 127 156 128 if (!$task->needupd($dbrev, $self)) { 157 my ($lastrev) = $self->get_last_rev($module); 158 my $currentrev = $self->dbrev; 159 if (!$task->needupd($lastrev, $currentrev, $self)) { 129 160 la_log LA_DEBUG, "No change on main base, aborting"; 130 161 return 1; 131 162 } 132 133 163 134 164 my $res = $task->run; … … 137 167 } 138 168 $task->post if ($res); 169 my $ini = $self->_load_state_ini or return; 170 171 $ini->newval($module, 'rev', $currentrev); 172 my $time = time; 173 $ini->newval($module, 'time', $time); 174 $ini->SetParameterComment( 175 $module, 'time', 176 scalar(localtime(time)), 177 ); 178 $ini->RewriteConfig; 179 139 180 la_log LA_DEBUG, "end process $module"; 140 181 return $res;
Note: See TracChangeset
for help on using the changeset viewer.