mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 02:01:13 +00:00
Add the dirty_tar
rule
This commit is contained in:
parent
1146ab654c
commit
386e6bf0c3
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)
|
Loading…
x
Reference in New Issue
Block a user