@@ -18,8 +18,9 @@ TDSpecFile = class
1818 FReader: IPackageSpecReader;
1919 FFilename : string;
2020 FLoadedSpec : IPackageSpec;
21+ FPackageSpec : IPackageSpec;
22+
2123 public
22- spec : IPackageSpec;
2324 procedure DeleteTemplate (const templateName: string);
2425 function DuplicateTemplate (const sourceTemplate: ISpecTemplate; const newTemplateName: string): ISpecTemplate;
2526 function DoesTemplateExist (const templateName: string): Boolean;
@@ -28,6 +29,7 @@ TDSpecFile = class
2829 function GetPlatform (const compiler: string): ISpecTargetPlatform;
2930 function AddCompiler (const compiler: string): ISpecTargetPlatform;
3031 procedure DeleteCompiler (const compiler: string);
32+ procedure ClearCompilers ;
3133 function LoadFromFile (const filename: string; var errorMessage : string) : boolean;
3234 procedure SaveToFile (const filename: string);
3335 function WorkingDir : string;
@@ -36,6 +38,7 @@ TDSpecFile = class
3638 constructor Create(logger: ILogger);
3739 destructor Destroy; override;
3840 property FileName : string read FFileName;
41+ property PackageSpec : IPackageSpec read FPackageSpec;
3942 end ;
4043
4144
@@ -56,44 +59,48 @@ implementation
5659{ TDSpecFile }
5760
5861function TDSpecFile.AddCompiler (const compiler: string): ISpecTargetPlatform;
59- var
60- vplatform : ISpecTargetPlatform;
6162begin
6263 if Assigned(GetPlatform(compiler)) then
6364 raise Exception.Create(' Platform already exists in file' );
6465
65- vplatform := TSpecTargetPlatform.Create(FLogger);
66- vplatform.Compiler := StringToCompilerVersion(compiler);
66+ result := TSpecTargetPlatform.Create(FLogger);
67+ result.Compiler := StringToCompilerVersion(compiler);
68+ result.Platforms := [TDPMPlatform.Win32, TDPMPlatform.Win64];
6769
68- spec .TargetPlatforms.Add(vplatform );
70+ FPackageSpec .TargetPlatforms.Add(result );
6971end ;
7072
7173function TDSpecFile.AsString : string;
7274begin
73- Result := spec.ToJSON;
75+ Result := FPackageSpec.ToJSON;
76+ end ;
77+
78+ procedure TDSpecFile.ClearCompilers ;
79+ begin
80+ FPackageSpec.TargetPlatforms.Clear;
7481end ;
7582
7683constructor TDSpecFile.Create(logger: ILogger);
7784begin
7885 FLogger := logger;
79- spec := TSpec.Create(FLogger, ' ' );
86+ FPackageSpec := TSpec.Create(FLogger, ' ' );
8087 FLoadedSpec := TSpec.Create(FLogger, ' ' );
8188end ;
8289
8390procedure TDSpecFile.DeleteTemplate (const templateName: string);
8491begin
85- spec .DeleteTemplate(templateName);
92+ FPackageSpec .DeleteTemplate(templateName);
8693end ;
8794
8895procedure TDSpecFile.DeleteCompiler (const compiler: string);
8996var
9097 i : Integer;
9198begin
92- for i := 0 to spec .TargetPlatforms.Count - 1 do
99+ for i := 0 to FPackageSpec .TargetPlatforms.Count - 1 do
93100 begin
94- if SameText(CompilerToString(spec .TargetPlatforms[i].compiler), compiler) then
101+ if SameText(CompilerToString(FPackageSpec .TargetPlatforms[i].compiler), compiler) then
95102 begin
96- spec .TargetPlatforms.Delete(i);
103+ FPackageSpec .TargetPlatforms.Delete(i);
97104 Exit;
98105 end ;
99106 end ;
@@ -107,24 +114,24 @@ destructor TDSpecFile.Destroy;
107114
108115function TDSpecFile.DoesTemplateExist (const templateName: string): Boolean;
109116begin
110- Result := Assigned(spec .FindTemplate(templateName));
117+ Result := Assigned(FPackageSpec .FindTemplate(templateName));
111118end ;
112119
113120function TDSpecFile.DuplicateTemplate (const sourceTemplate: ISpecTemplate; const newTemplateName: string): ISpecTemplate;
114121begin
115- Result := spec .DuplicateTemplate(sourceTemplate, NewTemplateName);
122+ Result := FPackageSpec .DuplicateTemplate(sourceTemplate, NewTemplateName);
116123end ;
117124
118125function TDSpecFile.GetTemplate (const templateName: string): ISpecTemplate;
119126var
120127 i : Integer;
121128begin
122129 Result := nil ;
123- for i := 0 to spec .templates.Count - 1 do
130+ for i := 0 to FPackageSpec .templates.Count - 1 do
124131 begin
125- if spec .templates[i].name = templateName then
132+ if FPackageSpec .templates[i].name = templateName then
126133 begin
127- Result := spec .templates[i];
134+ Result := FPackageSpec .templates[i];
128135 Exit;
129136 end ;
130137 end ;
@@ -142,11 +149,11 @@ function TDSpecFile.GetPlatform(const compiler: string): ISpecTargetPlatform;
142149 i: Integer;
143150begin
144151 Result := nil ;
145- for i := 0 to spec .targetPlatforms.Count - 1 do
152+ for i := 0 to FPackageSpec .targetPlatforms.Count - 1 do
146153 begin
147- if spec .targetPlatforms[i].compiler = StringToCompilerVersion(compiler) then
154+ if FPackageSpec .targetPlatforms[i].compiler = StringToCompilerVersion(compiler) then
148155 begin
149- Result := spec .targetPlatforms[i];
156+ Result := FPackageSpec .targetPlatforms[i];
150157 Exit;
151158 end ;
152159 end ;
@@ -156,8 +163,8 @@ function TDSpecFile.IsModified: Boolean;
156163begin
157164// TODO : This is wasteful - implement a modified flag.
158165
159- if (spec <> nil ) and (FLoadedSpec <> nil ) then
160- Result := not SameText(spec .ToJSON, FLoadedSpec.ToJSON)
166+ if (FPackageSpec <> nil ) and (FLoadedSpec <> nil ) then
167+ Result := not SameText(FPackageSpec .ToJSON, FLoadedSpec.ToJSON)
161168 else
162169 result := false;
163170end ;
@@ -167,8 +174,8 @@ function TDSpecFile.LoadFromFile(const filename: string; var errorMessage : stri
167174 result := true;
168175 FReader := TPackageSpecReader.Create(FLogger);
169176 try
170- spec := FReader.ReadSpec(filename);
171- if (spec = nil ) then
177+ FPackageSpec := FReader.ReadSpec(filename);
178+ if (FPackageSpec = nil ) then
172179 raise Exception.Create(' Failed to load dspec' );
173180 FLoadedSpec := FReader.ReadSpec(filename);
174181 except
@@ -185,7 +192,7 @@ procedure TDSpecFile.SaveToFile(const filename: string);
185192var
186193 writer : IPackageSpecWriter;
187194begin
188- writer := TPackageSpecWriter.Create(FLogger, spec );
195+ writer := TPackageSpecWriter.Create(FLogger, FPackageSpec );
189196 writer.SaveToFile(filename);
190197 FFilename := Filename;
191198end ;
0 commit comments