Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit 76b26fd

Browse files
committed
Instead of typedef, put TElixirRelease related things in elixir_release.iss, and TErlangData in erlang_data.iss
1 parent f8d3ac1 commit 76b26fd

File tree

3 files changed

+155
-139
lines changed

3 files changed

+155
-139
lines changed

ElixirWeb.iss

Lines changed: 2 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,9 @@ Name: "erlang\64"; Description: "{code:ConstGetErlangName64}"; GroupDescription:
7070
Name: "erlpath"; Description: "Append Erlang directory to Path environment variable"; GroupDescription: "Erlang"; Check: CheckToAddErlangPath
7171

7272
[Code]
73-
#include "src\typedef.iss"
7473
#include "src\util.iss"
74+
#include "src\elixir_release.iss"
75+
#include "src\erlang_data.iss"
7576
7677
var
7778
GlobalPageSelRelease: TInputOptionWizardPage;
@@ -94,108 +95,6 @@ begin
9495
Result := ExpandConstant('{tmp}\' + GetURLFilePart('{#ERLANG_CSV_URL}'));
9596
end;
9697
97-
function ReleaseTypeToString(ReleaseType: TElixirReleaseType): String;
98-
begin
99-
Result := 'Unknown';
100-
if ReleaseType = rtRelease then
101-
Result := 'Release';
102-
if ReleaseType = rtPrerelease then
103-
Result := 'Prerelease';
104-
if ReleaseType = rtLatestRelease then
105-
Result := 'Latest Release';
106-
if ReleaseType = rtLatestPrerelease then
107-
Result := 'Latest Prerelease';
108-
if ReleaseType = rtIncompatible then
109-
Result := 'Incompatible';
110-
end;
111-
112-
function CSVToElixirReleases(Filename: String): array of TElixirRelease;
113-
var
114-
Rows: TArrayOfString;
115-
RowValues: TStrings;
116-
i: Integer;
117-
LatestPrerelease: Boolean;
118-
LatestRelease: Boolean;
119-
begin
120-
LatestPrerelease := True;
121-
LatestRelease := True;
122-
123-
LoadStringsFromFile(Filename, Rows);
124-
SetArrayLength(Result, GetArrayLength(Rows));
125-
126-
for i := 0 to GetArrayLength(Result) - 1 do begin
127-
RowValues := SplitString(Rows[i], ',');
128-
129-
with Result[i] do begin
130-
Version := RowValues[0];
131-
URL := RowValues[1];
132-
133-
if StrToInt(RowValues[3]) = {#COMPAT_MASK} then begin
134-
if RowValues[2] = 'prerelease' then begin
135-
if LatestPrerelease then begin
136-
ReleaseType := rtLatestPrerelease;
137-
LatestPrerelease := False;
138-
end else begin
139-
ReleaseType := rtPrerelease;
140-
end;
141-
end else begin
142-
if LatestRelease then begin
143-
ReleaseType := rtLatestRelease;
144-
LatestRelease := False;
145-
end else begin
146-
ReleaseType := rtRelease;
147-
end;
148-
end;
149-
end else begin
150-
ReleaseType := rtIncompatible;
151-
end;
152-
153-
if Ref = nil then
154-
Ref := TObject.Create();
155-
end;
156-
end;
157-
end;
158-
159-
procedure ElixirReleasesToListBox(Releases: array of TElixirRelease; ListBox: TNewCheckListBox);
160-
var
161-
i: Integer;
162-
begin
163-
ListBox.Items.Clear;
164-
for i := 0 to GetArrayLength(Releases) - 1 do begin
165-
with Releases[i] do begin
166-
ListBox.AddRadioButton(
167-
'Elixir version ' + Version,
168-
ReleaseTypeToString(ReleaseType),
169-
0,
170-
(ReleaseType = rtLatestRelease),
171-
(ReleaseType <> rtIncompatible),
172-
Ref
173-
);
174-
end
175-
end;
176-
end;
177-
178-
function CSVToErlangData(Filename: String): TErlangData;
179-
var
180-
Rows: TArrayOfString;
181-
RowValues: TStrings;
182-
begin
183-
LoadStringsFromFile(Filename, Rows);
184-
RowValues := SplitString(Rows[0], ',');
185-
186-
with Result do begin
187-
OTPVersion := RowValues[0];
188-
ERTSVersion := RowValues[1];
189-
URL32 := RowValues[2];
190-
URL64 := RowValues[3];
191-
192-
Exe32 := GetURLFilePart(URL32);
193-
Exe64 := GetURLFilePart(URL64);
194-
Name32 := 'OTP ' + OTPVersion + ' (32-bit)';
195-
Name64 := 'OTP ' + OTPVersion + ' (64-bit)';
196-
end;
197-
end;
198-
19998
function GetErlangPath(Of64Bit: Boolean): String;
20099
var
201100
Versions: TArrayOfString;
@@ -240,30 +139,6 @@ begin
240139
end;
241140
end;
242141
243-
function FindFirstReleaseOfType(Releases: array of TElixirRelease; ReleaseType: TElixirReleaseType): TElixirRelease;
244-
var
245-
i: Integer;
246-
begin
247-
for i := 0 to GetArrayLength(Releases) - 1 do begin
248-
if Releases[i].ReleaseType = ReleaseType then begin
249-
Result := Releases[i];
250-
exit;
251-
end;
252-
end;
253-
end;
254-
255-
function FindFirstReleaseMatchingRef(Releases: array of TElixirRelease; RefMatch: TObject): TElixirRelease;
256-
var
257-
i: Integer;
258-
begin
259-
for i := 0 to GetArrayLength(Releases) - 1 do begin
260-
if Releases[i].Ref = RefMatch then begin
261-
Result := Releases[i];
262-
exit;
263-
end;
264-
end;
265-
end;
266-
267142
function FindSelectedRelease(ListBoxes: array of TNewCheckListBox; Releases: array of TElixirRelease): TElixirRelease;
268143
var
269144
i, j, k: Integer;

src/elixir_release.iss

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
// elixir_release.iss - TElixirRelease and related functions
2+
// Copyright 2014 Chris Hyndman
3+
//
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
//
8+
// http://www.apache.org/licenses/LICENSE-2.0
9+
//
10+
// Unless required by applicable law or agreed to in writing, software
11+
// distributed under the License is distributed on an "AS IS" BASIS,
12+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
// See the License for the specific language governing permissions and
14+
// limitations under the License.
15+
16+
type
17+
TElixirReleaseType = (rtRelease, rtPrerelease, rtLatestRelease, rtLatestPrerelease, rtIncompatible);
18+
19+
TElixirRelease = record
20+
Version: String;
21+
URL: String;
22+
ReleaseType: TElixirReleaseType;
23+
Ref: TObject;
24+
end;
25+
26+
function ReleaseTypeToString(ReleaseType: TElixirReleaseType): String;
27+
begin
28+
Result := 'Unknown';
29+
if ReleaseType = rtRelease then
30+
Result := 'Release';
31+
if ReleaseType = rtPrerelease then
32+
Result := 'Prerelease';
33+
if ReleaseType = rtLatestRelease then
34+
Result := 'Latest Release';
35+
if ReleaseType = rtLatestPrerelease then
36+
Result := 'Latest Prerelease';
37+
if ReleaseType = rtIncompatible then
38+
Result := 'Incompatible';
39+
end;
40+
41+
function CSVToElixirReleases(Filename: String): array of TElixirRelease;
42+
var
43+
Rows: TArrayOfString;
44+
RowValues: TStrings;
45+
i: Integer;
46+
LatestPrerelease: Boolean;
47+
LatestRelease: Boolean;
48+
begin
49+
LatestPrerelease := True;
50+
LatestRelease := True;
51+
52+
LoadStringsFromFile(Filename, Rows);
53+
SetArrayLength(Result, GetArrayLength(Rows));
54+
55+
for i := 0 to GetArrayLength(Result) - 1 do begin
56+
RowValues := SplitString(Rows[i], ',');
57+
58+
with Result[i] do begin
59+
Version := RowValues[0];
60+
URL := RowValues[1];
61+
62+
if StrToInt(RowValues[3]) = {#COMPAT_MASK} then begin
63+
if RowValues[2] = 'prerelease' then begin
64+
if LatestPrerelease then begin
65+
ReleaseType := rtLatestPrerelease;
66+
LatestPrerelease := False;
67+
end else begin
68+
ReleaseType := rtPrerelease;
69+
end;
70+
end else begin
71+
if LatestRelease then begin
72+
ReleaseType := rtLatestRelease;
73+
LatestRelease := False;
74+
end else begin
75+
ReleaseType := rtRelease;
76+
end;
77+
end;
78+
end else begin
79+
ReleaseType := rtIncompatible;
80+
end;
81+
82+
if Ref = nil then
83+
Ref := TObject.Create();
84+
end;
85+
end;
86+
end;
87+
88+
procedure ElixirReleasesToListBox(Releases: array of TElixirRelease; ListBox: TNewCheckListBox);
89+
var
90+
i: Integer;
91+
begin
92+
ListBox.Items.Clear;
93+
for i := 0 to GetArrayLength(Releases) - 1 do begin
94+
with Releases[i] do begin
95+
ListBox.AddRadioButton(
96+
'Elixir version ' + Version,
97+
ReleaseTypeToString(ReleaseType),
98+
0,
99+
(ReleaseType = rtLatestRelease),
100+
(ReleaseType <> rtIncompatible),
101+
Ref
102+
);
103+
end
104+
end;
105+
end;
106+
107+
function FindFirstReleaseOfType(Releases: array of TElixirRelease; ReleaseType: TElixirReleaseType): TElixirRelease;
108+
var
109+
i: Integer;
110+
begin
111+
for i := 0 to GetArrayLength(Releases) - 1 do begin
112+
if Releases[i].ReleaseType = ReleaseType then begin
113+
Result := Releases[i];
114+
exit;
115+
end;
116+
end;
117+
end;
118+
119+
function FindFirstReleaseMatchingRef(Releases: array of TElixirRelease; RefMatch: TObject): TElixirRelease;
120+
var
121+
i: Integer;
122+
begin
123+
for i := 0 to GetArrayLength(Releases) - 1 do begin
124+
if Releases[i].Ref = RefMatch then begin
125+
Result := Releases[i];
126+
exit;
127+
end;
128+
end;
129+
end;
Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// typedef.iss - Specifies all custom types
1+
// erlang_data.iss - TErlangData and related functions
22
// Copyright 2014 Chris Hyndman
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,16 +13,7 @@
1313
// See the License for the specific language governing permissions and
1414
// limitations under the License.
1515

16-
type
17-
TElixirReleaseType = (rtRelease, rtPrerelease, rtLatestRelease, rtLatestPrerelease, rtIncompatible);
18-
19-
TElixirRelease = record
20-
Version: String;
21-
URL: String;
22-
ReleaseType: TElixirReleaseType;
23-
Ref: TObject;
24-
end;
25-
16+
type
2617
TErlangData = record
2718
OTPVersion: String;
2819
ERTSVersion: String;
@@ -32,4 +23,25 @@ type
3223
Exe64: String;
3324
Name32: String;
3425
Name64: String;
35-
end;
26+
end;
27+
28+
function CSVToErlangData(Filename: String): TErlangData;
29+
var
30+
Rows: TArrayOfString;
31+
RowValues: TStrings;
32+
begin
33+
LoadStringsFromFile(Filename, Rows);
34+
RowValues := SplitString(Rows[0], ',');
35+
36+
with Result do begin
37+
OTPVersion := RowValues[0];
38+
ERTSVersion := RowValues[1];
39+
URL32 := RowValues[2];
40+
URL64 := RowValues[3];
41+
42+
Exe32 := GetURLFilePart(URL32);
43+
Exe64 := GetURLFilePart(URL64);
44+
Name32 := 'OTP ' + OTPVersion + ' (32-bit)';
45+
Name64 := 'OTP ' + OTPVersion + ' (64-bit)';
46+
end;
47+
end;

0 commit comments

Comments
 (0)