File: runme_control.adb

package info (click to toggle)
libaws 2.2dfsg-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,624 kB
  • ctags: 1,173
  • sloc: ada: 61,829; ansic: 6,483; makefile: 1,282; xml: 196; sh: 119; java: 112; python: 66; sed: 40
file content (130 lines) | stat: -rw-r--r-- 4,079 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
------------------------------------------------------------------------------
--                              Ada Web Server                              --
--                                                                          --
--                         Copyright (C) 2000-2001                          --
--                                ACT-Europe                                --
--                                                                          --
--  This library is free software; you can redistribute it and/or modify    --
--  it under the terms of the GNU General Public License as published by    --
--  the Free Software Foundation; either version 2 of the License, or (at   --
--  your option) any later version.                                         --
--                                                                          --
--  This library is distributed in the hope that it will be useful, but     --
--  WITHOUT ANY WARRANTY; without even the implied warranty of              --
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       --
--  General Public License for more details.                                --
--                                                                          --
--  You should have received a copy of the GNU General Public License       --
--  along with this library; if not, write to the Free Software Foundation, --
--  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.          --
--                                                                          --
------------------------------------------------------------------------------

with Ada.Text_IO;
with GNAT.Command_Line;

with Service;
with Runme_Info;

procedure Runme_Control is

   use Ada;
   use GNAT;

   Syntax_Error : exception;

   procedure Install_Service;
   --  Register service into OS.

   procedure Remove_Service;
   --  Unregister service into OS.

   procedure Parse_Command_Line;
   --  Parse command line and set options.

   type Mode is (Nothing, Install, Uninstall);
   Option : Mode := Nothing;

   ---------------------
   -- Install_Service --
   ---------------------

   procedure Install_Service is
   begin
      if Runme_Info.Get_Client_Name_Full_Pathname = "" then
         Text_IO.Put_Line (Runme_Info.Client_Name
                           & " not found. Check the path.");

      else
         -- Install the service
         Service.Create
           (Service_Name => Runme_Info.Service_Name,
            Display_Name => Runme_Info.Display_Name,
            Binary_Path  => Runme_Info.Get_Client_Name_Full_Pathname,
            Startup      => Service.Automatic);
      end if;
   end Install_Service;

   --------------------
   -- Remove_Service --
   --------------------

   procedure Remove_Service is
   begin
      Service.Delete (Runme_Info.Service_Name);
   end Remove_Service;

   ------------------------
   -- Parse_Command_Line --
   ------------------------

   procedure Parse_Command_Line is
   begin
     loop
        case GNAT.Command_Line.Getopt ("i u") is

           when ASCII.NUL =>
              exit;

           when 'i' =>
              if Option = Nothing then
                 Option := Install;
              else
                 raise Syntax_Error;
              end if;

           when 'u' =>
              if Option = Nothing then
                 Option := Uninstall;
              else
                 raise Syntax_Error;
              end if;

           when others =>
              raise Syntax_Error;

        end case;
     end loop;
   end Parse_Command_Line;

begin
   Parse_Command_Line;

   if Option = Install then
      Install_Service;

   elsif Option = Uninstall then
      Remove_Service;

   else
      raise Syntax_Error;
   end if;

exception
   when Syntax_Error =>
      Text_IO.New_Line;
      Text_IO.Put_Line ("Usage: runme_control [-iu]");
      Text_IO.Put_Line ("       -i  : install service");
      Text_IO.Put_Line ("       -u  : uninstall service");
      Text_IO.New_Line;
end Runme_Control;