Finished feature
This commit is contained in:
		
							
								
								
									
										75
									
								
								bucket-tool
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								bucket-tool
									
									
									
									
									
								
							| @@ -29,7 +29,8 @@ Actions: | |||||||
|   restore <value>            : Restore previous state of file stored in bucket. Value can be hash or filename/filepath  |   restore <value>            : Restore previous state of file stored in bucket. Value can be hash or filename/filepath  | ||||||
|                              : Note: To restore to an alternate path you will need to provide the path via the -o flag |                              : Note: To restore to an alternate path you will need to provide the path via the -o flag | ||||||
|                              : |                              : | ||||||
|   backup <file>              : Backup the file to the bucket (will work relatively unless full path is provided) |   backup <file>              : Backup the file to the bucket  | ||||||
|  |   delete <hash>              : Delete the entry from the bucket | ||||||
|  |  | ||||||
| Restore Flags: | Restore Flags: | ||||||
|   -o | --output-file <file>  : Used to provide an alternate restoral path for the restore function |   -o | --output-file <file>  : Used to provide an alternate restoral path for the restore function | ||||||
| @@ -235,7 +236,7 @@ if not (ARGV & ['-d', '--debug']).empty? | |||||||
| end | end | ||||||
| i=0 | i=0 | ||||||
| case ARGV[i]  | case ARGV[i]  | ||||||
|   when 'search', 'get', 'restore', 'backup' |   when 'search', 'get', 'restore', 'backup', 'delete' | ||||||
|     $CONFIG[:action]=ARGV[i] |     $CONFIG[:action]=ARGV[i] | ||||||
|     log "$CONFIG[:action] was set to #{ARGV[i]}" |     log "$CONFIG[:action] was set to #{ARGV[i]}" | ||||||
|     log "user provided search action ARGV[i.next] == #{ARGV[i.next]}" |     log "user provided search action ARGV[i.next] == #{ARGV[i.next]}" | ||||||
| @@ -285,6 +286,9 @@ while i < ARGV.count | |||||||
|         usage |         usage | ||||||
|         exit |         exit | ||||||
|       end |       end | ||||||
|  |     when '-d', '--debug' | ||||||
|  |       log "#{ARGV[i]} as specified, and the $CONFIG[:debug] flag was already enabled" | ||||||
|  |       i+=1 | ||||||
|  |  | ||||||
|     when '-b', '--bucket' |     when '-b', '--bucket' | ||||||
|       log "user provided ARGV[i.next] == #{ARGV[i.next]}" |       log "user provided ARGV[i.next] == #{ARGV[i.next]}" | ||||||
| @@ -413,6 +417,54 @@ class BucketEntry | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   def delete | ||||||
|  |     returncode = true | ||||||
|  |     log "User has chosen to delete this BucketEntry" | ||||||
|  |  | ||||||
|  |     Dir.chdir(@entry_dir){ | ||||||
|  |       log "Changed to #{@entry_dir} to delete children files" | ||||||
|  |       Dir.children(@entry_dir).each{|file|  | ||||||
|  |         log "Deleting #{file}" | ||||||
|  |         if File.unlink(file) | ||||||
|  |           log "#{file} deleted" | ||||||
|  |         else | ||||||
|  |           puts "There was an issue deleting #{File.expand_path(file)}" | ||||||
|  |           exit | ||||||
|  |         end | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     log "Deleting #{@entry_dir}" | ||||||
|  |     if Dir.delete(@entry_dir) | ||||||
|  |       log "Deleted #{@entry_dir}" | ||||||
|  |     else | ||||||
|  |       puts "There was an issue when attempting to delete #{@entry_dir}" | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     dir = @entry_dir | ||||||
|  |  | ||||||
|  |     log "Beginning to delete trailing dirs unless one has children other than those that make up #{File.dirname(@entry_dir)}" | ||||||
|  |     for i in 1..8 | ||||||
|  |       dir = File.dirname(dir) | ||||||
|  |       log "Beginning to delete #{dir}" | ||||||
|  |       children = Dir.children(dir) | ||||||
|  |       log "Dir[#{dir}] children found to be #{children.join(',')}" | ||||||
|  |       if children.empty? | ||||||
|  |         if Dir.delete(dir) | ||||||
|  |           log "Deleted #{dir}" | ||||||
|  |         else | ||||||
|  |           puts "There was an issue when attempting to delete #{dir}" | ||||||
|  |           exit | ||||||
|  |         end | ||||||
|  |       else | ||||||
|  |         log "#{dir} showed to contain another child directory. Not deleting and breaking loop" | ||||||
|  |         break | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     returncode | ||||||
|  |   end | ||||||
|  |  | ||||||
| end | end | ||||||
|  |  | ||||||
| class Bucket | class Bucket | ||||||
| @@ -648,6 +700,22 @@ def backup_file (bucket) | |||||||
|   puts "File #{$CONFIG[:search_term]} was backed up to #{entry_dir}" |   puts "File #{$CONFIG[:search_term]} was backed up to #{entry_dir}" | ||||||
| end | end | ||||||
|  |  | ||||||
|  | def delete_entry (bucket) | ||||||
|  |   if bucket.entries.has_key? $CONFIG[:search_term] | ||||||
|  |     entry = bucket.entries[$CONFIG[:search_term]] | ||||||
|  |   else | ||||||
|  |     puts "BucketEntry[#{$CONFIG[:search_term]}] Does not exist. Please make sure you provided the correct hash value" | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   puts "Corresponding Entry: #{entry.info}" | ||||||
|  |   if get_verification "Are you sure you want to delete BucketEntry[#{entry.hash}]? "  | ||||||
|  |     if get_verification "This cannot be undone. Are you sure you want to continue?: " | ||||||
|  |       entry.delete | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  |  | ||||||
|  | end | ||||||
|  |  | ||||||
| # END: Work Functions | # END: Work Functions | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -674,6 +742,9 @@ if __FILE__ == $0 | |||||||
|  |  | ||||||
|     when 'backup' |     when 'backup' | ||||||
|       backup_file bucket |       backup_file bucket | ||||||
|  |  | ||||||
|  |     when 'delete' | ||||||
|  |       delete_entry bucket | ||||||
|   end |   end | ||||||
|  |  | ||||||
| end | end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user