spiegel-keyman/windows/src/buildtools/devtools/DevCheckSvnStatus.pas
Marc Durdin b65b982584 Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121)
* Keyman for Windows 10.0 Open Source

* Squashed 'windows/src/ext/jedi/jedi/' content from commit f444ad2

git-subtree-dir: windows/src/ext/jedi/jedi
git-subtree-split: f444ad2da4693851e523f1ea6bd541f701904c24

* Squashed 'windows/src/ext/jedi/jcl/' content from commit d63d3c9fd

git-subtree-dir: windows/src/ext/jedi/jcl
git-subtree-split: d63d3c9fd9ff84efdd8159084ec6a60313644243

* Squashed 'windows/src/ext/jedi/jvcl/' content from commit bee19f3b4

git-subtree-dir: windows/src/ext/jedi/jvcl
git-subtree-split: bee19f3b46909fde2fa92c06cd2706f41d99f6c3

* Add required .res files

* Add required .res files

* Add docbook files (forced)

* Add required libxslt

* Add required jedi files

* Add installation files

* Tweak .gitignore for open

* CI

* Remove KMW from Developer source (#122)

* Remove KMW from Developer source (copies during build)

* Remove KMW from Developer source (copies during build)

* Remove KMW from Developer source (copies during build)

* Fixup release build and copy license, readme from kmw during build

* Remove obsolete build help documentation

* Keyman Engine 10 on Windows regression for shift states (#129)

* Improve #128 -- cleaner debug messages

* Fixes #127, shift state now resets correctly; and more work for #128

* Fixes #130 (#131)
2017-07-25 10:53:06 +07:00

62 lines
1.3 KiB
ObjectPascal

unit DevCheckSvnStatus;
interface
type
TCheckSvnStatus = class
class function Run: Boolean;
end;
implementation
uses
DevUtils,
XmlDoc,
XmlIntf;
{ TCheckSvnStatus }
class function TCheckSvnStatus.Run: Boolean;
var
doc: IXMLDocument;
target: IXMLNode;
ec, i: Integer;
entry: IXMLNode;
wcstatus: IXMLNode;
path: string;
j: Integer;
item: string;
begin
if not DevUtils.CommandExecute('svn st -u --xml', 'c:\keyman\svnst.txt', 'c:\keyman\9.0\src', 0, ec, False, True) or (ec <> 0) then
Exit(False);
doc := LoadXmlDocument('c:\keyman\svnst.txt');
target := doc.DocumentElement.ChildNodes.FindNode('target');
Result := True;
for i := 0 to target.ChildNodes.Count-1 do
begin
entry := target.ChildNodes[i];
if entry.NodeName = 'entry' then
begin
if Result then
begin
writeln;
writeln('SVN is not up to date. Please resolve the following files:');
end;
Result := False;
path := entry.Attributes['path'];
for j := 0 to entry.ChildNodes.Count - 1 do
begin
wcstatus := entry.ChildNodes[j];
if wcstatus.NodeName = 'wc-status' then
begin
item := wcstatus.Attributes['item'];
writeln(' '+path+': '+item);
end;
end;
end;
end;
end;
end.