pkgcommands.pp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. unit pkgcommands;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils,pkghandler;
  6. type
  7. { TCommandUpdate }
  8. TCommandUpdate = Class(TPackagehandler)
  9. Public
  10. Function Execute(const Args:TActionArgs):boolean;override;
  11. end;
  12. { TCommandDownload }
  13. TCommandDownload = Class(TPackagehandler)
  14. Public
  15. Function Execute(const Args:TActionArgs):boolean;override;
  16. end;
  17. { TCommandBuild }
  18. TCommandBuild = Class(TPackagehandler)
  19. Public
  20. Function Execute(const Args:TActionArgs):boolean;override;
  21. end;
  22. { TCommandInstall }
  23. TCommandInstall = Class(TPackagehandler)
  24. Public
  25. Function Execute(const Args:TActionArgs):boolean;override;
  26. end;
  27. implementation
  28. uses
  29. pkgmessages,
  30. fpmktype,
  31. fprepos,
  32. fpxmlrep;
  33. function TCommandUpdate.Execute(const Args:TActionArgs):boolean;
  34. Var
  35. X : TFPXMLRepositoryHandler;
  36. P : TFPPackage;
  37. R : TFPRepository;
  38. begin
  39. {$warning TODO remove this hack}
  40. R:=TFPRepository.Create(nil);
  41. P:=R.AddPackage('FirstPackage');
  42. P.Author:='Michael Van Canneyt';
  43. P.URL:='http://www.freepascal.org/packages/firstpackage.zip';
  44. P.Email:='[email protected]';
  45. P.Version.AsString:='1.2.3';
  46. P.Description:='First package in the repository. Provides basic information.';
  47. P.OSes:=[Win32,linux];
  48. P.CPUs:=[i386,x86_64];
  49. X:=TFPXMLRepositoryHandler.Create;
  50. With X do
  51. try
  52. SaveToXml(R,Defaults.LocalRepository);
  53. finally
  54. Free;
  55. end;
  56. FreeAndNil(R);
  57. end;
  58. function TCommandDownload.Execute(const Args:TActionArgs):boolean;
  59. begin
  60. ActionStack.Push(CurrentPackage,'downloadpackage',Args);
  61. end;
  62. function TCommandBuild.Execute(const Args:TActionArgs):boolean;
  63. begin
  64. ActionStack.Push(CurrentPackage,'fpmakebuild',Args);
  65. ActionStack.Push(CurrentPackage,'compilefpmake',Args);
  66. end;
  67. function TCommandInstall.Execute(const Args:TActionArgs):boolean;
  68. begin
  69. ActionStack.Push(CurrentPackage,'fpmakeinstall',Args);
  70. ActionStack.Push(CurrentPackage,'build',Args);
  71. end;
  72. initialization
  73. RegisterPkgHandler('update',TCommandUpdate);
  74. RegisterPkgHandler('download',TCommandDownload);
  75. RegisterPkgHandler('build',TCommandBuild);
  76. RegisterPkgHandler('install',TCommandInstall);
  77. end.