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

Commit b0eadf1

Browse files
committed
New page for selecting Elixir version (has no effect yet)
1 parent c24a271 commit b0eadf1

File tree

1 file changed

+77
-4
lines changed

1 file changed

+77
-4
lines changed

ElixirWeb.iss

Lines changed: 77 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,92 @@ Filename: "{tmp}\_offlineinstaller\ISCC.exe"; Parameters: "/dElixirVersion=0.14.
5454
Filename: "{tmp}\_offlineinstaller\Output\elixir-v0.14.1-setup.exe"; Flags: waituntilterminated; StatusMsg: "Running Elixir installer..."
5555

5656
[Code]
57+
type
58+
TElixirVersion = record
59+
Version: String;
60+
URL: String;
61+
Prerelease: Boolean;
62+
CompatType: Integer;
63+
end;
64+
TArrayOfElixirVersion = array of TElixirVersion;
65+
5766
var
5867
PSelectVerPage: TWizardPage;
5968
PSelectVerFetchText: TNewStaticText;
6069
PSelectVerFetchProgress: TNewProgressBar;
70+
PSelectVerListBox: TNewCheckListBox;
71+
72+
ElixirVersions: TArrayOfElixirVersion;
73+
74+
function SplitStringRec(Str: String; Delim: String; StrList: TStringList): TStringList;
75+
var
76+
StrHead: String;
77+
StrTail: String;
78+
DelimPos: Integer;
79+
begin
80+
DelimPos := Pos(Delim, Str);
81+
if (DelimPos = 0) then begin
82+
StrList.Add(Str);
83+
Result := StrList;
84+
end else begin
85+
StrHead := Str;
86+
StrTail := Str;
87+
88+
Delete(StrHead, DelimPos, Length(StrTail));
89+
Delete(StrTail, 1, DelimPos);
90+
91+
StrList.Add(StrHead);
92+
Result := SplitStringRec(StrTail, Delim, StrList);
93+
end;
94+
end;
95+
96+
function SplitString(Str: String; Delim: String): TStringList;
97+
var
98+
StrList: TStringList;
99+
begin
100+
StrList := TStringList.Create;
101+
Result := SplitStringRec(Str, Delim, StrList)
102+
end;
103+
104+
procedure GetVersionsFromFile(FileName: String);
105+
var
106+
VersionStrings: TArrayOfString;
107+
NumVersions: Integer;
108+
i: Integer;
109+
LineValues: TStringList;
110+
begin
111+
LoadStringsFromFile(FileName, VersionStrings);
112+
NumVersions := GetArrayLength(VersionStrings);
113+
SetArrayLength(ElixirVersions, NumVersions);
114+
115+
for i := 0 to NumVersions - 1 do begin
116+
LineValues := SplitString(VersionStrings[i], ',');
117+
ElixirVersions[i].Version := LineValues.Strings[0];
118+
ElixirVersions[i].URL := LineValues.Strings[1];
119+
if LineValues.Strings[2] = 'true' then begin
120+
ElixirVersions[i].Prerelease := True;
121+
end else begin
122+
ElixirVersions[i].Prerelease := False;
123+
end;
124+
ElixirVersions[i].CompatType := StrToInt(LineValues.Strings[3]);
125+
end;
126+
end;
61127
62128
procedure DoPSelectVer();
129+
var
130+
ElixirVersions: TArrayOfElixirVersion;
63131
begin
64132
WizardForm.NextButton.Enabled := False;
65-
66133
PSelectVerFetchProgress.Visible := True;
67-
MsgBox('Fetching version PLACEHOLDER', mbInformation, MB_OK);
68-
PSelectVerFetchProgress.Visible := False;
69-
134+
135+
if not (FileExists(ExpandConstant('{tmp}\releases.csv'))) then begin
136+
idpDownloadFile('http://elixir-lang.org/releases.csv', ExpandConstant('{tmp}\releases.csv'));
137+
GetVersionsFromFile(ExpandConstant('{tmp}\releases.csv'));
138+
end;
139+
140+
141+
142+
PSelectVerFetchProgress.Visible := False;
70143
WizardForm.NextButton.Enabled := True;
71144
end;
72145

0 commit comments

Comments
 (0)