revolt 0.8.5 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +30 -0
 - data/Rakefile +1 -0
 - data/bin/rv_add_favorite.rb +135 -0
 - data/bin/rv_delete_levels.rb +2 -1
 - data/bin/rv_find_levels.rb +2 -2
 - data/bin/rv_info_levels.rb +2 -1
 - data/bin/rv_install_level_urls.rb +2 -1
 - data/bin/rv_install_levels.rb +2 -1
 - data/bin/rv_package_levels.rb +2 -1
 - data/bin/rv_remove_extra_levels.rb +168 -0
 - data/bin/rv_rename_level.rb +2 -1
 - data/lib/revolt.rb +2 -1
 - data/lib/revolt/util/favorites.rb +74 -0
 - metadata +8 -3
 
    
        data/README
    CHANGED
    
    | 
         @@ -214,3 +214,33 @@ can be matched or error is produced. 
     | 
|
| 
       214 
214 
     | 
    
         
             
            For more information and options:
         
     | 
| 
       215 
215 
     | 
    
         | 
| 
       216 
216 
     | 
    
         
             
              rv_rename_level.rb -h
         
     | 
| 
      
 217 
     | 
    
         
            +
             
     | 
| 
      
 218 
     | 
    
         
            +
            === rv_add_favorite.rb
         
     | 
| 
      
 219 
     | 
    
         
            +
            Adds levels as favorites that are given as command line parameters.
         
     | 
| 
      
 220 
     | 
    
         
            +
            The favorite levels are stored in a regular ascii file
         
     | 
| 
      
 221 
     | 
    
         
            +
            (default is rv_levels.fav). The favorites file is meant to
         
     | 
| 
      
 222 
     | 
    
         
            +
            be used in conjuction with rv_remove_extra_levels.rb script,
         
     | 
| 
      
 223 
     | 
    
         
            +
            so that Re-Volt's track number limit is not exceeded. When
         
     | 
| 
      
 224 
     | 
    
         
            +
            using favorites file only tracks that are not favorites will
         
     | 
| 
      
 225 
     | 
    
         
            +
            be given as candidates to remove.
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
            Match options format is similar as rv_find_levels.rb
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
            For more information and options:
         
     | 
| 
      
 230 
     | 
    
         
            +
             
     | 
| 
      
 231 
     | 
    
         
            +
              rv_add_favorite.rb -h
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
            === rv_remove_extra_levels.rb
         
     | 
| 
      
 234 
     | 
    
         
            +
            Removes levels so that Re-Volt's limit for levels is not exceeded
         
     | 
| 
      
 235 
     | 
    
         
            +
            (which would cause some of the installed levels to be unplayable).
         
     | 
| 
      
 236 
     | 
    
         
            +
            The proposed levels for removal are given starting from the oldest
         
     | 
| 
      
 237 
     | 
    
         
            +
            installed level. The time is taken from the level folders modification
         
     | 
| 
      
 238 
     | 
    
         
            +
            time.
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
            A favorites file can be used so that those levels specified in the
         
     | 
| 
      
 241 
     | 
    
         
            +
            favorites file are not given as candidates to delete.
         
     | 
| 
      
 242 
     | 
    
         
            +
             
     | 
| 
      
 243 
     | 
    
         
            +
            For more information and options:
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
              rv_remove_extra_levels.rb -h
         
     | 
| 
      
 246 
     | 
    
         
            +
              
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -145,6 +145,7 @@ task "rubyforge-login" => ["rubyforge-setup"] do 
     | 
|
| 
       145 
145 
     | 
    
         
             
              sh "rubyforge login", :verbose => true
         
     | 
| 
       146 
146 
     | 
    
         
             
            end
         
     | 
| 
       147 
147 
     | 
    
         | 
| 
      
 148 
     | 
    
         
            +
            desc "Uploads the built packages to RubyForge"
         
     | 
| 
       148 
149 
     | 
    
         
             
            task "publish-packages" => ["package", "rubyforge-login"] do
         
     | 
| 
       149 
150 
     | 
    
         
             
              # Upload packages under pkg/ to RubyForge
         
     | 
| 
       150 
151 
     | 
    
         
             
              # This task makes some assumptions:
         
     | 
| 
         @@ -0,0 +1,135 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'pp'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'revolt'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'set'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            $FAVORITE_FILE = "rv_levels.fav"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            def main
         
     | 
| 
      
 10 
     | 
    
         
            +
              cmd = CmdArguments.new(ARGV)
         
     | 
| 
      
 11 
     | 
    
         
            +
              ReVolt::Logger.enable if cmd[:debug]
         
     | 
| 
      
 12 
     | 
    
         
            +
              levels = ReVolt::Levels.at(cmd[:base])
         
     | 
| 
      
 13 
     | 
    
         
            +
              add_levs = []
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              levels.each_level do |level|
         
     | 
| 
      
 16 
     | 
    
         
            +
                all_matches  = {}
         
     | 
| 
      
 17 
     | 
    
         
            +
                nmatches = ReVolt::Util::Matcher.multi(level, cmd[:match], all_matches)
         
     | 
| 
      
 18 
     | 
    
         
            +
                if nmatches > 0
         
     | 
| 
      
 19 
     | 
    
         
            +
                  keyvaluestr = all_matches.map{|(k,v)|"#{k}=#{v}"}.join(', ')
         
     | 
| 
      
 20 
     | 
    
         
            +
                  add_levs << level
         
     | 
| 
      
 21 
     | 
    
         
            +
                  puts "%s [%s]" % [level.inspect, keyvaluestr]
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              if add_levs.size > 0
         
     | 
| 
      
 26 
     | 
    
         
            +
                unless cmd[:force]
         
     | 
| 
      
 27 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 28 
     | 
    
         
            +
                  print "Add these levels to favorites in file %s? (y/N) " % [cmd[:file]]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  answer = STDIN.gets.chomp
         
     | 
| 
      
 30 
     | 
    
         
            +
                  if answer.downcase != 'y'
         
     | 
| 
      
 31 
     | 
    
         
            +
                    puts "Levels not added to favorites"
         
     | 
| 
      
 32 
     | 
    
         
            +
                    exit(0)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                
         
     | 
| 
      
 36 
     | 
    
         
            +
                favorites = ReVolt::Util::Favorites.new(cmd[:file])
         
     | 
| 
      
 37 
     | 
    
         
            +
                
         
     | 
| 
      
 38 
     | 
    
         
            +
                add_levs.each do |l, match|
         
     | 
| 
      
 39 
     | 
    
         
            +
                  level_id = l.id.to_s
         
     | 
| 
      
 40 
     | 
    
         
            +
                  if favorites.add?(l.id.to_s)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    puts "Added to favorites %s (%s)" % [l.name, level_id]
         
     | 
| 
      
 42 
     | 
    
         
            +
                  else        
         
     | 
| 
      
 43 
     | 
    
         
            +
                    puts "Already exists in favorites, skipping %s (%s)" % [l.name, level_id]
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                favorites.commit
         
     | 
| 
      
 48 
     | 
    
         
            +
              else
         
     | 
| 
      
 49 
     | 
    
         
            +
                puts "No matching levels"
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            class CmdArguments < Hash
         
     | 
| 
      
 54 
     | 
    
         
            +
              include ReVolt::Util::CommonCmdArgs
         
     | 
| 
      
 55 
     | 
    
         
            +
              
         
     | 
| 
      
 56 
     | 
    
         
            +
              def initialize(cmd)
         
     | 
| 
      
 57 
     | 
    
         
            +
                super()
         
     | 
| 
      
 58 
     | 
    
         
            +
                
         
     | 
| 
      
 59 
     | 
    
         
            +
                self[:all]  = false
         
     | 
| 
      
 60 
     | 
    
         
            +
                self[:default_match_with] = :name
         
     | 
| 
      
 61 
     | 
    
         
            +
                self[:file] = $FAVORITE_FILE
         
     | 
| 
      
 62 
     | 
    
         
            +
                  
         
     | 
| 
      
 63 
     | 
    
         
            +
                matchstrs   = []
         
     | 
| 
      
 64 
     | 
    
         
            +
                opts = OptionParser.new do |opts|
         
     | 
| 
      
 65 
     | 
    
         
            +
                  opts.banner = "Usage: #$0 [options] [name_match ...]\n"
         
     | 
| 
      
 66 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 67 
     | 
    
         
            +
                  opts.separator "Adds levels as favorites. The favorites are stored in a file"
         
     | 
| 
      
 68 
     | 
    
         
            +
                  opts.separator "in current directory unless otherwise specified."
         
     | 
| 
      
 69 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 70 
     | 
    
         
            +
                  opts.separator "Examples:"
         
     | 
| 
      
 71 
     | 
    
         
            +
                  opts.separator "  Adds levels to favorites whose name includes temple:"
         
     | 
| 
      
 72 
     | 
    
         
            +
                  opts.separator "  #$0 temple"  
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 75 
     | 
    
         
            +
                  match_help(opts)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 77 
     | 
    
         
            +
                  
         
     | 
| 
      
 78 
     | 
    
         
            +
                  opts.separator "Options:"  
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                  on_match(opts) do |value|
         
     | 
| 
      
 81 
     | 
    
         
            +
                    matchstrs << value
         
     | 
| 
      
 82 
     | 
    
         
            +
                  end
         
     | 
| 
      
 83 
     | 
    
         
            +
                  on_default_match_modifier(opts)
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                  opts.on('-d', '--debug',
         
     | 
| 
      
 86 
     | 
    
         
            +
                          'Outputs debug information') do
         
     | 
| 
      
 87 
     | 
    
         
            +
                    self[:debug] = true
         
     | 
| 
      
 88 
     | 
    
         
            +
                  end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                  opts.on('-f', '--file',
         
     | 
| 
      
 91 
     | 
    
         
            +
                           'The path to the file containing the favorite levels') do |value|
         
     | 
| 
      
 92 
     | 
    
         
            +
                     self[:file] = value
         
     | 
| 
      
 93 
     | 
    
         
            +
                  end
         
     | 
| 
      
 94 
     | 
    
         
            +
                         
         
     | 
| 
      
 95 
     | 
    
         
            +
                  on_base_path(opts) do |value|
         
     | 
| 
      
 96 
     | 
    
         
            +
                    self[:base] = value
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end
         
     | 
| 
      
 98 
     | 
    
         
            +
                  
         
     | 
| 
      
 99 
     | 
    
         
            +
                  opts.on_tail('-h', '--help',
         
     | 
| 
      
 100 
     | 
    
         
            +
                               'Display full help and exit') do
         
     | 
| 
      
 101 
     | 
    
         
            +
                    puts opts
         
     | 
| 
      
 102 
     | 
    
         
            +
                    
         
     | 
| 
      
 103 
     | 
    
         
            +
                    exit(0)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  end
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
              
         
     | 
| 
      
 107 
     | 
    
         
            +
                opts.parse!(cmd)
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                name_or_id_matches(cmd) do |m|
         
     | 
| 
      
 110 
     | 
    
         
            +
                  matchstrs << m
         
     | 
| 
      
 111 
     | 
    
         
            +
                end
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                if matchstrs.size == 0
         
     | 
| 
      
 114 
     | 
    
         
            +
                  puts "Error: no matches specified\n" 
         
     | 
| 
      
 115 
     | 
    
         
            +
                  STDERR.puts opts.banner
         
     | 
| 
      
 116 
     | 
    
         
            +
                  exit 1
         
     | 
| 
      
 117 
     | 
    
         
            +
                end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                begin
         
     | 
| 
      
 120 
     | 
    
         
            +
                  # Create the matcher objects
         
     | 
| 
      
 121 
     | 
    
         
            +
                  self[:match] = []
         
     | 
| 
      
 122 
     | 
    
         
            +
                  for m in matchstrs
         
     | 
| 
      
 123 
     | 
    
         
            +
                    self[:match] << ReVolt::Util::Matcher.parse(m)
         
     | 
| 
      
 124 
     | 
    
         
            +
                  end
         
     | 
| 
      
 125 
     | 
    
         
            +
                rescue ReVolt::Util::Matcher::ParseError => e
         
     | 
| 
      
 126 
     | 
    
         
            +
                  STDERR.puts e.errstr
         
     | 
| 
      
 127 
     | 
    
         
            +
                  exit(1)
         
     | 
| 
      
 128 
     | 
    
         
            +
                end
         
     | 
| 
      
 129 
     | 
    
         
            +
                
         
     | 
| 
      
 130 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
      
 131 
     | 
    
         
            +
              end
         
     | 
| 
      
 132 
     | 
    
         
            +
            end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
            main
         
     | 
    
        data/bin/rv_delete_levels.rb
    CHANGED
    
    | 
         @@ -46,7 +46,6 @@ class CmdArguments < Hash 
     | 
|
| 
       46 
46 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       47 
47 
     | 
    
         
             
                super()
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                self[:base]  = ReVolt::Info::path
         
     | 
| 
       50 
49 
     | 
    
         
             
                self[:force] = false
         
     | 
| 
       51 
50 
     | 
    
         
             
                self[:default_match_with] = :name
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
         @@ -117,6 +116,8 @@ class CmdArguments < Hash 
     | 
|
| 
       117 
116 
     | 
    
         
             
                  STDERR.puts e.errstr
         
     | 
| 
       118 
117 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       119 
118 
     | 
    
         
             
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
                
         
     | 
| 
      
 120 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       120 
121 
     | 
    
         
             
              end
         
     | 
| 
       121 
122 
     | 
    
         
             
            end
         
     | 
| 
       122 
123 
     | 
    
         | 
    
        data/bin/rv_find_levels.rb
    CHANGED
    
    | 
         @@ -1,5 +1,4 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/ruby
         
     | 
| 
       2 
     | 
    
         
            -
            #
         
     | 
| 
       3 
2 
     | 
    
         
             
            require 'optparse'
         
     | 
| 
       4 
3 
     | 
    
         
             
            require 'pp'
         
     | 
| 
       5 
4 
     | 
    
         
             
            require 'revolt'
         
     | 
| 
         @@ -26,7 +25,6 @@ class CmdArguments < Hash 
     | 
|
| 
       26 
25 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       27 
26 
     | 
    
         
             
                super()
         
     | 
| 
       28 
27 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                self[:base] = ReVolt::Info::path
         
     | 
| 
       30 
28 
     | 
    
         
             
                self[:default_match_with] = :name
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
       32 
30 
     | 
    
         
             
                matchstrs   = []
         
     | 
| 
         @@ -105,6 +103,8 @@ class CmdArguments < Hash 
     | 
|
| 
       105 
103 
     | 
    
         
             
                  STDERR.puts e.errstr
         
     | 
| 
       106 
104 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       107 
105 
     | 
    
         
             
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
                
         
     | 
| 
      
 107 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       108 
108 
     | 
    
         
             
              end
         
     | 
| 
       109 
109 
     | 
    
         
             
            end
         
     | 
| 
       110 
110 
     | 
    
         | 
    
        data/bin/rv_info_levels.rb
    CHANGED
    
    | 
         @@ -45,7 +45,6 @@ class CmdArguments < Hash 
     | 
|
| 
       45 
45 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       46 
46 
     | 
    
         
             
                super()
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                self[:base] = ReVolt::Info::path
         
     | 
| 
       49 
48 
     | 
    
         
             
                self[:all]  = false
         
     | 
| 
       50 
49 
     | 
    
         
             
                self[:default_match_with] = :name
         
     | 
| 
       51 
50 
     | 
    
         | 
| 
         @@ -114,6 +113,8 @@ class CmdArguments < Hash 
     | 
|
| 
       114 
113 
     | 
    
         
             
                  STDERR.puts e.errstr
         
     | 
| 
       115 
114 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       116 
115 
     | 
    
         
             
                end
         
     | 
| 
      
 116 
     | 
    
         
            +
                
         
     | 
| 
      
 117 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       117 
118 
     | 
    
         
             
              end
         
     | 
| 
       118 
119 
     | 
    
         
             
            end
         
     | 
| 
       119 
120 
     | 
    
         | 
| 
         @@ -158,7 +158,6 @@ class CmdArguments < Hash 
     | 
|
| 
       158 
158 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       159 
159 
     | 
    
         
             
                super()    
         
     | 
| 
       160 
160 
     | 
    
         
             
                inf_matches = []
         
     | 
| 
       161 
     | 
    
         
            -
                self[:base] = ReVolt::Info::path
         
     | 
| 
       162 
161 
     | 
    
         | 
| 
       163 
162 
     | 
    
         
             
                opts = OptionParser.new do |opts|
         
     | 
| 
       164 
163 
     | 
    
         
             
                  opts.banner = "Usage: #$0 [options]\n"
         
     | 
| 
         @@ -193,6 +192,8 @@ class CmdArguments < Hash 
     | 
|
| 
       193 
192 
     | 
    
         
             
                end
         
     | 
| 
       194 
193 
     | 
    
         | 
| 
       195 
194 
     | 
    
         
             
                opts.parse!(cmd)
         
     | 
| 
      
 195 
     | 
    
         
            +
                
         
     | 
| 
      
 196 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       196 
197 
     | 
    
         
             
              end
         
     | 
| 
       197 
198 
     | 
    
         
             
            end
         
     | 
| 
       198 
199 
     | 
    
         | 
    
        data/bin/rv_install_levels.rb
    CHANGED
    
    | 
         @@ -38,7 +38,6 @@ class CmdArguments < Hash 
     | 
|
| 
       38 
38 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       39 
39 
     | 
    
         
             
                super()    
         
     | 
| 
       40 
40 
     | 
    
         
             
                inf_matches = []
         
     | 
| 
       41 
     | 
    
         
            -
                self[:base] = ReVolt::Info::path
         
     | 
| 
       42 
41 
     | 
    
         | 
| 
       43 
42 
     | 
    
         
             
                opts = OptionParser.new do |opts|
         
     | 
| 
       44 
43 
     | 
    
         
             
                  opts.banner = "Usage: #$0 [options] package1 [package2 ...]\n"
         
     | 
| 
         @@ -68,6 +67,8 @@ class CmdArguments < Hash 
     | 
|
| 
       68 
67 
     | 
    
         
             
                  puts opts
         
     | 
| 
       69 
68 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       70 
69 
     | 
    
         
             
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
                
         
     | 
| 
      
 71 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       71 
72 
     | 
    
         
             
              end
         
     | 
| 
       72 
73 
     | 
    
         
             
            end
         
     | 
| 
       73 
74 
     | 
    
         | 
    
        data/bin/rv_package_levels.rb
    CHANGED
    
    | 
         @@ -49,7 +49,6 @@ class CmdArguments < Hash 
     | 
|
| 
       49 
49 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       50 
50 
     | 
    
         
             
                super()
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                self[:base]  = ReVolt::Info::path
         
     | 
| 
       53 
52 
     | 
    
         
             
                self[:force] = false
         
     | 
| 
       54 
53 
     | 
    
         
             
                self[:default_match_with] = :name
         
     | 
| 
       55 
54 
     | 
    
         | 
| 
         @@ -123,6 +122,8 @@ class CmdArguments < Hash 
     | 
|
| 
       123 
122 
     | 
    
         
             
                  STDERR.puts e.errstr
         
     | 
| 
       124 
123 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       125 
124 
     | 
    
         
             
                end
         
     | 
| 
      
 125 
     | 
    
         
            +
                
         
     | 
| 
      
 126 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       126 
127 
     | 
    
         
             
              end
         
     | 
| 
       127 
128 
     | 
    
         
             
            end
         
     | 
| 
       128 
129 
     | 
    
         | 
| 
         @@ -0,0 +1,168 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'pp'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'revolt'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'set'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            $FAVORITE_FILE = "rv_levels.fav"
         
     | 
| 
      
 8 
     | 
    
         
            +
            $RV_LEVELS_LIMIT = 255
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            def main
         
     | 
| 
      
 11 
     | 
    
         
            +
              cmd = CmdArguments.new(ARGV)
         
     | 
| 
      
 12 
     | 
    
         
            +
              ReVolt::Logger.enable if cmd[:debug]
         
     | 
| 
      
 13 
     | 
    
         
            +
              levels = ReVolt::Levels.at(cmd[:base])
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              filtered_levels = filter_levels_with_matcher(levels.to_a, cmd[:match])
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              levels_to_remove = levels.size - cmd[:limit]
         
     | 
| 
      
 18 
     | 
    
         
            +
              if levels_to_remove <= 0
         
     | 
| 
      
 19 
     | 
    
         
            +
                puts "Number of installed levels (%d) does not exceed Re-Volt's limit (%d)" % [levels.size, cmd[:limit]]
         
     | 
| 
      
 20 
     | 
    
         
            +
                exit(0)    
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
              favorites = ReVolt::Util::Favorites.new(cmd[:file])
         
     | 
| 
      
 24 
     | 
    
         
            +
              sorted_levels = sort_levels_by_date(filtered_levels)
         
     | 
| 
      
 25 
     | 
    
         
            +
              remove_levs = []
         
     | 
| 
      
 26 
     | 
    
         
            +
              sorted_levels.each do |level|
         
     | 
| 
      
 27 
     | 
    
         
            +
                if level.custom? && !favorites.include?(level.id) && remove_levs.size < levels_to_remove
         
     | 
| 
      
 28 
     | 
    
         
            +
                  puts "%s (modified %s)" % [level.inspect, level.path.mtime.localtime.asctime  ]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  remove_levs << level
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
              
         
     | 
| 
      
 33 
     | 
    
         
            +
              if remove_levs.size > 0
         
     | 
| 
      
 34 
     | 
    
         
            +
                unless cmd[:force]
         
     | 
| 
      
 35 
     | 
    
         
            +
                  puts ""
         
     | 
| 
      
 36 
     | 
    
         
            +
                  print "Delete these levels? (y/N) "
         
     | 
| 
      
 37 
     | 
    
         
            +
                  answer = STDIN.gets.chomp
         
     | 
| 
      
 38 
     | 
    
         
            +
                  if answer.downcase != 'y'
         
     | 
| 
      
 39 
     | 
    
         
            +
                    puts "Deleting not done"
         
     | 
| 
      
 40 
     | 
    
         
            +
                    exit(0)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
                remove_levs.each do |l, match|
         
     | 
| 
      
 44 
     | 
    
         
            +
                  puts "Deleting %s (%s)" % [l.name, l.id.to_s]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  l.delete
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
              else
         
     | 
| 
      
 48 
     | 
    
         
            +
                puts "No levels that could be removed"
         
     | 
| 
      
 49 
     | 
    
         
            +
              end  
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            def sort_levels_by_date(levels)
         
     | 
| 
      
 53 
     | 
    
         
            +
              levels.sort do |a,b|
         
     | 
| 
      
 54 
     | 
    
         
            +
                a.path.mtime <=> b.path.mtime
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            def filter_levels_with_matcher(levels, matchers)
         
     | 
| 
      
 59 
     | 
    
         
            +
              return levels if matchers.empty?
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              filtered_levels = []    
         
     | 
| 
      
 62 
     | 
    
         
            +
              levels.each do |level|
         
     | 
| 
      
 63 
     | 
    
         
            +
                all_matches  = {}
         
     | 
| 
      
 64 
     | 
    
         
            +
                nmatches = ReVolt::Util::Matcher.multi(level, matchers, all_matches)
         
     | 
| 
      
 65 
     | 
    
         
            +
                if nmatches > 0
         
     | 
| 
      
 66 
     | 
    
         
            +
                  keyvaluestr = all_matches.map{|(k,v)|"#{k}=#{v}"}.join(', ')
         
     | 
| 
      
 67 
     | 
    
         
            +
                  filtered_levels << level
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
              filtered_levels
         
     | 
| 
      
 71 
     | 
    
         
            +
            end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            def read_favorites(filepath)
         
     | 
| 
      
 74 
     | 
    
         
            +
              file = Pathname.new(filepath)
         
     | 
| 
      
 75 
     | 
    
         
            +
              
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            class CmdArguments < Hash
         
     | 
| 
      
 79 
     | 
    
         
            +
              include ReVolt::Util::CommonCmdArgs
         
     | 
| 
      
 80 
     | 
    
         
            +
              
         
     | 
| 
      
 81 
     | 
    
         
            +
              def initialize(cmd)
         
     | 
| 
      
 82 
     | 
    
         
            +
                super()
         
     | 
| 
      
 83 
     | 
    
         
            +
                
         
     | 
| 
      
 84 
     | 
    
         
            +
                self[:all]  = false
         
     | 
| 
      
 85 
     | 
    
         
            +
                self[:default_match_with] = :name
         
     | 
| 
      
 86 
     | 
    
         
            +
                self[:file] = $FAVORITE_FILE
         
     | 
| 
      
 87 
     | 
    
         
            +
                self[:limit] = $RV_LEVELS_LIMIT
         
     | 
| 
      
 88 
     | 
    
         
            +
                      
         
     | 
| 
      
 89 
     | 
    
         
            +
                matchstrs   = []
         
     | 
| 
      
 90 
     | 
    
         
            +
                opts = OptionParser.new do |opts|
         
     | 
| 
      
 91 
     | 
    
         
            +
                  opts.banner = "Usage: #$0 [options] [name_match ...]\n"
         
     | 
| 
      
 92 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 93 
     | 
    
         
            +
                  opts.separator "Removes levels in somewhat smart way so that there's not too many"
         
     | 
| 
      
 94 
     | 
    
         
            +
                  opts.separator "levels for Re-Volt to handle. Re-Volt has a limit of 256 installed tracks."
         
     | 
| 
      
 95 
     | 
    
         
            +
                  opts.separator "By default tries to use a file with favorite list of levels that should never"
         
     | 
| 
      
 96 
     | 
    
         
            +
                  opts.separator "be removed. Stock tracks are never removed, only custom tracks."
         
     | 
| 
      
 97 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 98 
     | 
    
         
            +
                  opts.separator "Without arguments levels are removed so that the limit Re-Volt can handle"
         
     | 
| 
      
 99 
     | 
    
         
            +
                  opts.separator "is not exceeded. If favorites exist they are never removed, otherwise"
         
     | 
| 
      
 100 
     | 
    
         
            +
                  opts.separator "the oldest levels by their installation directory timestamp are removed"
         
     | 
| 
      
 101 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 102 
     | 
    
         
            +
                  opts.separator "Examples:"
         
     | 
| 
      
 103 
     | 
    
         
            +
                  opts.separator "  Removes (non-favorite) levels so that max #{$RV_LEVELS_LIMIT} are installed:"
         
     | 
| 
      
 104 
     | 
    
         
            +
                  opts.separator "  #$0"  
         
     | 
| 
      
 105 
     | 
    
         
            +
                  opts.separator "  Removes (non-favorite) levels whose name contains temple that exceed the limit"
         
     | 
| 
      
 106 
     | 
    
         
            +
                  opts.separator "  #$0 temple"  
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 109 
     | 
    
         
            +
                  match_help(opts)
         
     | 
| 
      
 110 
     | 
    
         
            +
                  opts.separator ""
         
     | 
| 
      
 111 
     | 
    
         
            +
                  
         
     | 
| 
      
 112 
     | 
    
         
            +
                  opts.separator "Options:"  
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                  on_match(opts) do |value|
         
     | 
| 
      
 115 
     | 
    
         
            +
                    matchstrs << value
         
     | 
| 
      
 116 
     | 
    
         
            +
                  end
         
     | 
| 
      
 117 
     | 
    
         
            +
                  on_default_match_modifier(opts)
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                  opts.on('-d', '--debug',
         
     | 
| 
      
 120 
     | 
    
         
            +
                          'Outputs debug information') do
         
     | 
| 
      
 121 
     | 
    
         
            +
                    self[:debug] = true
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
         
     | 
| 
      
 124 
     | 
    
         
            +
                  opts.on('-f', '--file',
         
     | 
| 
      
 125 
     | 
    
         
            +
                           'The path to the file containing the favorite levels') do |value|
         
     | 
| 
      
 126 
     | 
    
         
            +
                     self[:file] = value
         
     | 
| 
      
 127 
     | 
    
         
            +
                  end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
                  opts.on('-l', '--limit LIMIT', Integer,
         
     | 
| 
      
 130 
     | 
    
         
            +
                           "Sets the limit of levels Re-Volt can handle (default is #{$RV_LEVELS_LIMIT})") do |value|
         
     | 
| 
      
 131 
     | 
    
         
            +
                     self[:limit] = value
         
     | 
| 
      
 132 
     | 
    
         
            +
                  end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                  on_base_path(opts) do |value|
         
     | 
| 
      
 135 
     | 
    
         
            +
                    self[:base] = value
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
      
 137 
     | 
    
         
            +
                  
         
     | 
| 
      
 138 
     | 
    
         
            +
                  opts.on_tail('-h', '--help',
         
     | 
| 
      
 139 
     | 
    
         
            +
                               'Display full help and exit') do
         
     | 
| 
      
 140 
     | 
    
         
            +
                    puts opts
         
     | 
| 
      
 141 
     | 
    
         
            +
                    
         
     | 
| 
      
 142 
     | 
    
         
            +
                    exit(0)
         
     | 
| 
      
 143 
     | 
    
         
            +
                  end
         
     | 
| 
      
 144 
     | 
    
         
            +
                end
         
     | 
| 
      
 145 
     | 
    
         
            +
              
         
     | 
| 
      
 146 
     | 
    
         
            +
                opts.parse!(cmd)
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                name_or_id_matches(cmd) do |m|
         
     | 
| 
      
 149 
     | 
    
         
            +
                  matchstrs << m
         
     | 
| 
      
 150 
     | 
    
         
            +
                end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
                begin
         
     | 
| 
      
 153 
     | 
    
         
            +
                  # Create the matcher objects
         
     | 
| 
      
 154 
     | 
    
         
            +
                  self[:match] = []
         
     | 
| 
      
 155 
     | 
    
         
            +
                  for m in matchstrs
         
     | 
| 
      
 156 
     | 
    
         
            +
                    self[:match] << ReVolt::Util::Matcher.parse(m)
         
     | 
| 
      
 157 
     | 
    
         
            +
                  end
         
     | 
| 
      
 158 
     | 
    
         
            +
                rescue ReVolt::Util::Matcher::ParseError => e
         
     | 
| 
      
 159 
     | 
    
         
            +
                  STDERR.puts e.errstr
         
     | 
| 
      
 160 
     | 
    
         
            +
                  exit(1)
         
     | 
| 
      
 161 
     | 
    
         
            +
                end
         
     | 
| 
      
 162 
     | 
    
         
            +
                
         
     | 
| 
      
 163 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
      
 164 
     | 
    
         
            +
              end
         
     | 
| 
      
 165 
     | 
    
         
            +
            end
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
            main
         
     | 
    
        data/bin/rv_rename_level.rb
    CHANGED
    
    | 
         @@ -55,7 +55,6 @@ class CmdArguments < Hash 
     | 
|
| 
       55 
55 
     | 
    
         
             
              def initialize(cmd)
         
     | 
| 
       56 
56 
     | 
    
         
             
                super()
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                self[:base]  = ReVolt::Info::path
         
     | 
| 
       59 
58 
     | 
    
         
             
                self[:force] = false
         
     | 
| 
       60 
59 
     | 
    
         | 
| 
       61 
60 
     | 
    
         
             
                matchstrs   = []
         
     | 
| 
         @@ -132,6 +131,8 @@ class CmdArguments < Hash 
     | 
|
| 
       132 
131 
     | 
    
         
             
                  STDERR.puts e.errstr
         
     | 
| 
       133 
132 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       134 
133 
     | 
    
         
             
                end
         
     | 
| 
      
 134 
     | 
    
         
            +
                
         
     | 
| 
      
 135 
     | 
    
         
            +
                self[:base] = ReVolt::Info::path if !self[:base]    
         
     | 
| 
       135 
136 
     | 
    
         
             
              end
         
     | 
| 
       136 
137 
     | 
    
         
             
            end
         
     | 
| 
       137 
138 
     | 
    
         | 
    
        data/lib/revolt.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,74 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'revolt/logger'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            #module ReVolt; module Util; end; end
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module ReVolt::Util
         
     | 
| 
      
 6 
     | 
    
         
            +
              # Can be used to maintain favorites file list. Usually not used
         
     | 
| 
      
 7 
     | 
    
         
            +
              # directly, but by the utility programs 
         
     | 
| 
      
 8 
     | 
    
         
            +
              class Favorites
         
     | 
| 
      
 9 
     | 
    
         
            +
                attr :filepath
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Initializes the favorites from given file.
         
     | 
| 
      
 12 
     | 
    
         
            +
                # If the file exists the contents are read.
         
     | 
| 
      
 13 
     | 
    
         
            +
                def initialize(filepath)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @filepath = Pathname.new(filepath)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @level_ids = []
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @level_ids_set = Set.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @level_ids_new = []
         
     | 
| 
      
 18 
     | 
    
         
            +
                  read_favorites if @filepath.exist?
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
                # Returns true if the given level is included
         
     | 
| 
      
 22 
     | 
    
         
            +
                # in favorites. Also level id is allowed.
         
     | 
| 
      
 23 
     | 
    
         
            +
                def include?(level_or_id)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  level_id = ReVolt::Level.to_level_id(level_or_id)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  return @level_ids_set.include?(level_id)
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
                
         
     | 
| 
      
 28 
     | 
    
         
            +
                # Adds the given level (or level id) to favorites.
         
     | 
| 
      
 29 
     | 
    
         
            +
                # If the level already was in favorites returns 
         
     | 
| 
      
 30 
     | 
    
         
            +
                # nil. Otherwise returns the level_id.
         
     | 
| 
      
 31 
     | 
    
         
            +
                def add?(level_or_id)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  level_id = ReVolt::Level.to_level_id(level_or_id)    
         
     | 
| 
      
 33 
     | 
    
         
            +
                  if @level_ids_set.add?(level_id)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    @level_ids << level_id
         
     | 
| 
      
 35 
     | 
    
         
            +
                    @level_ids_new << level_id
         
     | 
| 
      
 36 
     | 
    
         
            +
                    return level_id
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
                
         
     | 
| 
      
 41 
     | 
    
         
            +
                # Commits the changes done to the favorites file.
         
     | 
| 
      
 42 
     | 
    
         
            +
                # If no changes have been done, does nothing. If
         
     | 
| 
      
 43 
     | 
    
         
            +
                # new levels have been added, those are added to
         
     | 
| 
      
 44 
     | 
    
         
            +
                # the favorites file.
         
     | 
| 
      
 45 
     | 
    
         
            +
                def commit()
         
     | 
| 
      
 46 
     | 
    
         
            +
                  commits = 0
         
     | 
| 
      
 47 
     | 
    
         
            +
              
         
     | 
| 
      
 48 
     | 
    
         
            +
                  return 0 if @level_ids_new.size <= 0
         
     | 
| 
      
 49 
     | 
    
         
            +
              
         
     | 
| 
      
 50 
     | 
    
         
            +
                  open(@filepath, 'a') do |file|
         
     | 
| 
      
 51 
     | 
    
         
            +
                    @level_ids_new.each do |level_id|
         
     | 
| 
      
 52 
     | 
    
         
            +
                      file.puts        
         
     | 
| 
      
 53 
     | 
    
         
            +
                      file.print(level_id)
         
     | 
| 
      
 54 
     | 
    
         
            +
                      commits += 1
         
     | 
| 
      
 55 
     | 
    
         
            +
                    end    
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
                  commits
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
                
         
     | 
| 
      
 60 
     | 
    
         
            +
                private
         
     | 
| 
      
 61 
     | 
    
         
            +
                def read_favorites()
         
     | 
| 
      
 62 
     | 
    
         
            +
                  open(@filepath) do |file|
         
     | 
| 
      
 63 
     | 
    
         
            +
                    file.each do |line|
         
     | 
| 
      
 64 
     | 
    
         
            +
                      level_id = line.chomp
         
     | 
| 
      
 65 
     | 
    
         
            +
                      if (!level_id.empty?)
         
     | 
| 
      
 66 
     | 
    
         
            +
                        level_id = ReVolt::Level.to_level_id(level_id)
         
     | 
| 
      
 67 
     | 
    
         
            +
                        @level_ids << level_id
         
     | 
| 
      
 68 
     | 
    
         
            +
                        @level_ids_set.add(level_id)
         
     | 
| 
      
 69 
     | 
    
         
            +
                      end
         
     | 
| 
      
 70 
     | 
    
         
            +
                    end
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                end  
         
     | 
| 
      
 73 
     | 
    
         
            +
              end # class Favorites
         
     | 
| 
      
 74 
     | 
    
         
            +
            end # module
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: revolt
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.8. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.8.6
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Arto Jalkanen
         
     | 
| 
         @@ -9,14 +9,16 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date: 2008- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2008-11-21 00:00:00 +02:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            description: 
         
     | 
| 
       17 
17 
     | 
    
         
             
            email: ajalkane@gmail.com
         
     | 
| 
       18 
18 
     | 
    
         
             
            executables: 
         
     | 
| 
      
 19 
     | 
    
         
            +
            - rv_remove_extra_levels.rb
         
     | 
| 
       19 
20 
     | 
    
         
             
            - rv_install_levels.rb
         
     | 
| 
      
 21 
     | 
    
         
            +
            - rv_add_favorite.rb
         
     | 
| 
       20 
22 
     | 
    
         
             
            - rv_info_levels.rb
         
     | 
| 
       21 
23 
     | 
    
         
             
            - rv_package_levels.rb
         
     | 
| 
       22 
24 
     | 
    
         
             
            - rv_install_level_urls.rb
         
     | 
| 
         @@ -28,7 +30,9 @@ extensions: [] 
     | 
|
| 
       28 
30 
     | 
    
         
             
            extra_rdoc_files: 
         
     | 
| 
       29 
31 
     | 
    
         
             
            - README
         
     | 
| 
       30 
32 
     | 
    
         
             
            files: 
         
     | 
| 
      
 33 
     | 
    
         
            +
            - bin/rv_remove_extra_levels.rb
         
     | 
| 
       31 
34 
     | 
    
         
             
            - bin/rv_install_levels.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - bin/rv_add_favorite.rb
         
     | 
| 
       32 
36 
     | 
    
         
             
            - bin/rv_info_levels.rb
         
     | 
| 
       33 
37 
     | 
    
         
             
            - bin/rv_package_levels.rb
         
     | 
| 
       34 
38 
     | 
    
         
             
            - bin/rv_install_level_urls.rb
         
     | 
| 
         @@ -50,6 +54,7 @@ files: 
     | 
|
| 
       50 
54 
     | 
    
         
             
            - test/tc_level_package.rb
         
     | 
| 
       51 
55 
     | 
    
         
             
            - test/tc_level_installer.rb
         
     | 
| 
       52 
56 
     | 
    
         
             
            - lib/revolt.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - lib/revolt/util/favorites.rb
         
     | 
| 
       53 
58 
     | 
    
         
             
            - lib/revolt/util/fs_browser.rb
         
     | 
| 
       54 
59 
     | 
    
         
             
            - lib/revolt/util/common_cmd_args.rb
         
     | 
| 
       55 
60 
     | 
    
         
             
            - lib/revolt/util/matcher.rb
         
     | 
| 
         @@ -165,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       165 
170 
     | 
    
         
             
            requirements: []
         
     | 
| 
       166 
171 
     | 
    
         | 
| 
       167 
172 
     | 
    
         
             
            rubyforge_project: revolt
         
     | 
| 
       168 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 173 
     | 
    
         
            +
            rubygems_version: 1.2.0
         
     | 
| 
       169 
174 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       170 
175 
     | 
    
         
             
            specification_version: 2
         
     | 
| 
       171 
176 
     | 
    
         
             
            summary: Library for managing Re-Volt game, and some Commandline tools
         
     |