autoupdate.pl.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #!/usr/bin/env perl
  2. #########################################################################
  3. #  This software is open source, licensed under the GNU General Public
  4. #  License, version 2.
  5. #  Basically, this means that you're allowed to modify and distribute
  6. #  this software. However, if you distribute modified versions, you MUST
  7. #  also distribute the source code.
  8. #  See http://www.gnu.org/licenses/gpl.html for the full license.
  9. #
  10. #########################################################################
  11. package autoupdate;
  12. use strict;
  13. use FindBin qw($RealBin);
  14. use lib "$RealBin";
  15. use lib "$RealBin/src";
  16. use lib "$RealBin/src/deps";
  17. use Time::HiRes qw(time usleep);
  18. use Carp::Assert;
  19. # Update base
  20. use SVN::Updater;
  21. sub check_svn_util {
  22. my $saa = SVN::Updater->new({ path => "."});
  23. if ($saa->_svn_command("help") == -1) {
  24. print "Warning!!!!!!!!!!! To use this tool please Install "Subversion Client" toolsn";
  25. sleep (60000);
  26. return -1;
  27. };
  28. return 1;
  29. };
  30. sub upgrade {
  31. my ($path, $repos_name) = @_;
  32. print "Chenking " . $repos_name . " for updates...n";
  33. my $sa = SVN::Updater->load({ path => $path });
  34. my ($local_ver, $global_ver) = $sa->info();
  35. if ($local_ver < $global_ver) {
  36. print " Updates found.n";
  37. # List user modifed files
  38. if (@{ $sa->modified } ) {
  39. print "  User modification Detected!!!!n";
  40. print "  User modified files:n";
  41. print "    "; #initial separator
  42. print join("n    ", @{ $sa->modified }) . "n";
  43. };
  44. # List Changes
  45. if (@{ $sa->added } || @{ $sa->deleted } || @{ $sa->missing } || @{ $sa->changes }) {
  46. print "  Updating files:n";
  47. print "    "; #initial separator
  48. print join("n    ", @{ $sa->added }, @{ $sa->deleted }, @{ $sa->missing }, @{ $sa->changes }) . "n";
  49. };
  50. # Fetching Updates
  51. print "  Fetching updates...n";
  52. $sa->update("--force", "--accept theirs-conflict");
  53. print " Done updating " . $repos_name . "n";
  54. } else {
  55. print " No Updates Needed.n";
  56. };
  57. };
  58. print "-===================== OpenKore Auto Update tool =====================-n";
  59. if (check_svn_util() == 1) {
  60. upgrade(".", "OpenKore core files") if ((-d "src")&&(-d "src/.svn"));
  61. upgrade("tables", "OpenKore table data files") if ((-d "tables")&&(-d "tables/.svn"));
  62. upgrade("fields", "OpenKore map data files") if ((-d "fields")&&(-d "fields/.svn"));
  63. };
  64. print "-=========================== Done Updating ===========================-nnn";
  65. # Run main App
  66. my $file = "openkore.pl";
  67. $0 = $file;
  68. FindBin::again();
  69. {
  70. package main;
  71. do $file;
  72. }
  73. 1;