code: func DecompressDir(sourceFile, targetDir string) error {
  	tmpDir := targetDir + ".tmp"
  	if _, err := Execute("rm", []string{"-rf", tmpDir}); err != nil {
  		return err
  	}
  	if err := os.Mkdir(tmpDir, os.ModeDir|0700); err != nil {
  		return err
  	}
  	if _, err := Execute("tar", []string{"xf", sourceFile, "-C", tmpDir}); err != nil {
  		return err
  	}
  	if _, err := Execute("rm", []string{"-rf", targetDir}); err != nil {
  		return err
  	}
  	if _, err := Execute("mv", []string{"-f", tmpDir, targetDir}); err != nil {
  		return err
  	}
  	return nil
  }
docs: // If sourceFile is inside targetDir, it would be deleted automatically