|
3 | 3 | interface |
4 | 4 |
|
5 | 5 | uses |
6 | | - UtilityFunctions, SysUtils; |
| 6 | + OpenToolApi.Tools, SysUtils, ToolsAPI; |
7 | 7 |
|
8 | 8 | type |
9 | 9 | TRunWithDocker = class |
10 | 10 | const |
11 | 11 | COMMAND_ERROR = 1; |
12 | 12 | COMMAND_SUCESS = 0; |
13 | 13 | public |
14 | | - procedure Execute; |
| 14 | + procedure Execute(AProject: IOTAProject); |
15 | 15 | end; |
16 | 16 |
|
17 | 17 | implementation |
18 | 18 |
|
19 | 19 | uses |
20 | | - Vcl.Dialogs, Command.Runner, Constants.Version, System.Classes; |
| 20 | + Vcl.Dialogs, Command.Runner, Constants.Version, System.Classes, Vcl.Menus; |
21 | 21 |
|
22 | 22 | { TRunWithDocker } |
23 | 23 |
|
24 | | -procedure TRunWithDocker.Execute; |
| 24 | +procedure TRunWithDocker.Execute(AProject: IOTAProject); |
25 | 25 | var |
26 | | - LLine, LContainerVersion, LContainerName: string; |
27 | 26 | LReturn: TRunnerReturn; |
28 | | - LPAServerPort: Integer; |
29 | | - LHasPAServerPort: Boolean; |
30 | | - LPorts: TArray<string>; |
| 27 | + LMainMenu: TMainMenu; |
| 28 | + LMenuItem: TMenuItem; |
31 | 29 | begin |
| 30 | + ProjectGroup.ActiveProject := AProject; |
| 31 | + |
32 | 32 | if not(ActiveProject.CurrentPlatform = 'Linux64') then |
33 | 33 | raise Exception.Create('Plataform not suported'); |
34 | 34 |
|
35 | | - LContainerVersion := TVersion.GetInstance.Semantic + '-' + TVersion.GetInstance.Name; |
36 | | - LContainerName := ExtractFileName(ActiveProject.FileName).Split(['.'])[0] + '_' + LContainerVersion; |
37 | | - |
38 | | - LReturn := Runner('docker start ' + LContainerName); |
39 | | - |
40 | | - if LReturn.ExitCode = COMMAND_ERROR then |
41 | | - LReturn := Runner('docker run -tP --name ' + LContainerName + ' hashload/delphi-dev:' + |
42 | | - LContainerVersion); |
| 35 | + LReturn := Runner('docker-compose up -d'); |
43 | 36 |
|
44 | 37 | if LReturn.ExitCode = COMMAND_SUCESS then |
45 | 38 | begin |
46 | | - LReturn := Runner('docker ps --filter name=teste_10.3.0-rio --format "{{.Ports}}"'); |
47 | | - |
48 | | - LPorts := LReturn.Output.Split([',']); |
49 | | - for LLine in LPorts do |
50 | | - begin |
51 | | - LHasPAServerPort := False; |
52 | | - if LLine.Contains('->64211/tcp') then |
53 | | - begin |
54 | | - LPAServerPort := LLine.Substring(LLine.IndexOf(':') + 1, LLine.IndexOf('->') - LLine.IndexOf(':') - 1) |
55 | | - .ToInteger; |
56 | | - LHasPAServerPort := True; |
57 | | - Break; |
58 | | - end; |
59 | | - end; |
| 39 | + LMainMenu := NativeServices.MainMenu; |
60 | 40 |
|
61 | | - if not LHasPAServerPort then |
62 | | - raise Exception.Create('PAServer not found'); |
63 | | - end; |
64 | | - |
65 | | - if LReturn.ExitCode = COMMAND_ERROR then |
| 41 | + LMenuItem := LMainMenu.Items.Find('Run').Find('Run'); |
| 42 | + if Assigned(LMenuItem) then |
| 43 | + LMenuItem.Action.Execute; |
| 44 | + end |
| 45 | + else |
66 | 46 | raise Exception.Create(LReturn.Output); |
67 | | - |
68 | | - ShowMessage('Version ' + TVersion.GetInstance.Semantic); |
69 | 47 | end; |
70 | 48 |
|
71 | 49 | end. |
0 commit comments