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

Commit 6c00a0a

Browse files
committed
Elixir version and URL now retrieved from release list selection
1 parent b0eadf1 commit 6c00a0a

File tree

1 file changed

+46
-45
lines changed

1 file changed

+46
-45
lines changed

ElixirWeb.iss

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,19 @@ Filename: "{tmp}\_offlineinstaller\Output\elixir-v0.14.1-setup.exe"; Flags: wait
5555

5656
[Code]
5757
type
58-
TElixirVersion = record
58+
TElixirRelease = record
5959
Version: String;
6060
URL: String;
61-
Prerelease: Boolean;
62-
CompatType: Integer;
61+
ReleaseType: String;
62+
CompatMask: Integer;
6363
end;
64-
TArrayOfElixirVersion = array of TElixirVersion;
64+
TArrayOfElixirRelease = array of TElixirRelease;
6565
6666
var
6767
PSelectVerPage: TWizardPage;
68-
PSelectVerFetchText: TNewStaticText;
69-
PSelectVerFetchProgress: TNewProgressBar;
7068
PSelectVerListBox: TNewCheckListBox;
71-
72-
ElixirVersions: TArrayOfElixirVersion;
69+
ReleasesProcessed: Boolean;
70+
ElixirReleases: TArrayOfElixirRelease;
7371
7472
function SplitStringRec(Str: String; Delim: String; StrList: TStringList): TStringList;
7573
var
@@ -101,61 +99,64 @@ begin
10199
Result := SplitStringRec(Str, Delim, StrList)
102100
end;
103101
104-
procedure GetVersionsFromFile(FileName: String);
102+
procedure ParseReleasesCSV;
105103
var
106-
VersionStrings: TArrayOfString;
107-
NumVersions: Integer;
104+
ReleaseStrings: TArrayOfString;
105+
NumReleases: Integer;
108106
i: Integer;
109107
LineValues: TStringList;
110108
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]);
109+
LoadStringsFromFile(ExpandConstant('{tmp}\releases.csv'), ReleaseStrings);
110+
NumReleases := GetArrayLength(ReleaseStrings);
111+
SetArrayLength(ElixirReleases, NumReleases);
112+
113+
for i := 0 to NumReleases - 1 do begin
114+
LineValues := SplitString(ReleaseStrings[i], ',');
115+
ElixirReleases[i].Version := LineValues.Strings[0];
116+
ElixirReleases[i].URL := LineValues.Strings[1];
117+
ElixirReleases[i].ReleaseType := LineValues.Strings[2];
118+
ElixirReleases[i].CompatMask := StrToInt(LineValues.Strings[3]);
125119
end;
126120
end;
127121
128-
procedure DoPSelectVer();
122+
procedure PopulateListOfReleases();
129123
var
130-
ElixirVersions: TArrayOfElixirVersion;
124+
LatestRelease: Boolean;
125+
VersionLabel: String;
126+
i: Integer;
131127
begin
132-
WizardForm.NextButton.Enabled := False;
133-
PSelectVerFetchProgress.Visible := True;
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'));
128+
LatestRelease := True;
129+
for i := 0 to GetArrayLength(ElixirReleases) - 1 do begin
130+
VersionLabel := 'Version ' + ElixirReleases[i].Version;
131+
if LatestRelease then
132+
VersionLabel := VersionLabel + ' (Latest)';
133+
134+
PSelectVerListBox.AddRadioButton(VersionLabel, ElixirReleases[i].ReleaseType, 0, LatestRelease, True, nil);
135+
LatestRelease := False;
138136
end;
139-
140-
141-
142-
PSelectVerFetchProgress.Visible := False;
143-
WizardForm.NextButton.Enabled := True;
144137
end;
145138
146139
procedure CurPageChanged(CurPageID: Integer);
147140
begin
148-
if CurPageID = PSelectVerPage.ID then
149-
DoPSelectVer;
141+
if CurPageID = PSelectVerPage.ID then begin
142+
if not ReleasesProcessed then begin
143+
idpDownloadFile('http://elixir-lang.org/releases.csv', ExpandConstant('{tmp}\releases.csv'));
144+
ParseReleasesCSV;
145+
PopulateListOfReleases;
146+
147+
ReleasesProcessed := True;
148+
end;
149+
end;
150150
end;
151151
152152
procedure CreatePages();
153153
begin
154154
PSelectVerPage := CreateCustomPage(wpWelcome, 'Select Elixir version', 'Setup will download and install the Elixir version you select.');
155-
PSelectVerFetchProgress := TNewProgressBar.Create(PSelectVerPage);
156-
PSelectVerFetchProgress.Width := PSelectVerPage.SurfaceWidth;
157-
PSelectVerFetchProgress.Parent := PSelectVerPage.Surface;
158-
PSelectVerFetchProgress.Style := npbstMarquee;
155+
156+
PSelectVerListBox := TNewCheckListBox.Create(PSelectVerPage);
157+
PSelectVerListBox.Width := PSelectVerPage.SurfaceWidth;
158+
PSelectVerListBox.Height := PSelectVerPage.SurfaceHeight - 10;
159+
PSelectVerListBox.Parent := PSelectVerPage.Surface;
159160
end;
160161
161162
function ErlangIsInstalled: Boolean;
@@ -167,6 +168,7 @@ end;
167168
168169
procedure InitializeWizard();
169170
begin
171+
ReleasesProcessed := False;
170172
CreatePages;
171173
idpAddFile('https://github.com/elixir-lang/elixir/releases/download/v0.14.1/Precompiled.zip', ExpandConstant('{tmp}\Precompiled.zip'));
172174
idpDownloadAfter(wpPreparing);
@@ -190,7 +192,6 @@ begin
190192
end;
191193
end;
192194
193-
[Code]
194195
procedure ExtractPrecompiled();
195196
var
196197
ResultCode: Integer;

0 commit comments

Comments
 (0)