with Ada.Calendar;
with Ada.Command_Line;
with Ada.Text_IO;
with Util.Files.Rolling;
with Util.Dates.ISO8601;
procedure Rolling_File is
Count : constant Natural := Ada.Command_Line.Argument_Count;
Content : constant String := Util.Dates.ISO8601.Image (Ada.Calendar.Clock,
Util.Dates.ISO8601.SECOND);
Manager : Util.Files.Rolling.File_Manager;
begin
if Count = 0 then
Ada.Text_IO.Put_Line ("Usage: rolling_file {ascending|descending|direct}");
return;
end if;
declare
Mode : constant String := Ada.Command_Line.Argument (1);
begin
if Mode = "ascending" then
Manager.Initialize ("rolling.log", "rolling-%i.log",
Policy => (Kind => Util.Files.Rolling.No_Policy),
Strategy => (Util.Files.Rolling.Ascending_Strategy, 1, 5));
elsif Mode = "descending" then
Manager.Initialize ("rolling.log", "rolling-%i.log",
Policy => (Kind => Util.Files.Rolling.No_Policy),
Strategy => (Util.Files.Rolling.Descending_Strategy, 1, 5));
elsif Mode = "direct" then
Manager.Initialize ("rolling.log", "rolling-%i.log",
Policy => (Kind => Util.Files.Rolling.No_Policy),
Strategy => (Util.Files.Rolling.Direct_Strategy, 5));
else
Ada.Text_IO.Put_Line ("Invalid mode: " & Mode);
return;
end if;
end;
Util.Files.Write_File (Manager.Get_Current_Path,
Content & ASCII.LF);
end Rolling_File;