mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +00:00 
			
		
		
		
	Add the dirty_tar rule
				
					
				
			This commit is contained in:
		
							
								
								
									
										41
									
								
								thefuck/rules/dirty_untar.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								thefuck/rules/dirty_untar.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | from thefuck import shells | ||||||
|  | import os | ||||||
|  | import tarfile | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def _is_tar_extract(cmd): | ||||||
|  |     if '--extract' in cmd: | ||||||
|  |         return True | ||||||
|  |  | ||||||
|  |     cmd = cmd.split() | ||||||
|  |  | ||||||
|  |     return len(cmd) > 1 and 'x' in cmd[1] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def _tar_file(cmd): | ||||||
|  |     tar_extentions = ('.tar', '.tar.Z', '.tar.bz2', '.tar.gz', '.tar.lz', | ||||||
|  |                       '.tar.lzma', '.tar.xz', '.taz', '.tb2', '.tbz', '.tbz2', | ||||||
|  |                       '.tgz', '.tlz', '.txz', '.tz') | ||||||
|  |  | ||||||
|  |     for c in cmd.split(): | ||||||
|  |         for ext in tar_extentions: | ||||||
|  |             if c.endswith(ext): | ||||||
|  |                 return (c, c[0:len(c)-len(ext)]) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def match(command, settings): | ||||||
|  |     return (command.script.startswith('tar') | ||||||
|  |             and '-C' not in command.script | ||||||
|  |             and _is_tar_extract(command.script) | ||||||
|  |             and _tar_file(command.script) is not None) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def get_new_command(command, settings): | ||||||
|  |     return shells.and_('mkdir -p {dir}', '{cmd} -C {dir}') \ | ||||||
|  |                  .format(dir=_tar_file(command.script)[1], cmd=command.script) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def side_effect(command, settings): | ||||||
|  |     with tarfile.TarFile(_tar_file(command.script)[0]) as archive: | ||||||
|  |         for file in archive.getnames(): | ||||||
|  |             os.remove(file) | ||||||
		Reference in New Issue
	
	Block a user