1
0
mirror of https://github.com/gryf/mc_adbfs.git synced 2025-12-18 12:00:19 +01:00

Added new option for selecting adb executable

This commit is contained in:
2017-04-29 17:49:19 +02:00
parent 7ce2dd2568
commit 1c6a6cfdf8
2 changed files with 22 additions and 12 deletions

View File

@@ -9,7 +9,7 @@ Rquirements
=========== ===========
* Python 2.7 * Python 2.7
* ``adb`` installed and in ``$PATH`` * ``adb`` installed and in ``$PATH`` or provided via the config file
* An Android device or emulator preferably rooted * An Android device or emulator preferably rooted
* Busybox installed and available in the path on the device * Busybox installed and available in the path on the device
@@ -18,6 +18,8 @@ Make sure, that issuing from command line:
.. code:: shell-session .. code:: shell-session
$ adb shell busybox ls $ adb shell busybox ls
$ # or in case of no PATH adb placement
$ /path/to/adb shell busybox ls
it should display files from root directory on the device. it should display files from root directory on the device.
@@ -67,6 +69,7 @@ You can configure behaviour of this plugin using ``.ini`` file located under
dirs_to_skip = ["acct", "charger", "d", "dev", "proc", "sys"] dirs_to_skip = ["acct", "charger", "d", "dev", "proc", "sys"]
suppress_colors = false suppress_colors = false
root = root =
adb_command = adb
where: where:
@@ -81,6 +84,7 @@ where:
* ``root`` root directory to read. Everything outside of that directory will be * ``root`` root directory to read. Everything outside of that directory will be
omitted. That would be the fastest way to access certain location on the omitted. That would be the fastest way to access certain location on the
device. Note, that ``dirs_to_skip`` still apply inside this directory. device. Note, that ``dirs_to_skip`` still apply inside this directory.
* ``adb_command`` = path to ``adb`` command.
Limitations Limitations
=========== ===========

28
adbfs
View File

@@ -16,7 +16,7 @@ import re
import subprocess import subprocess
import sys import sys
__version__ = 0.9 __version__ = 0.10
XDG_CONFIG_HOME = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config')) XDG_CONFIG_HOME = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config'))
@@ -57,13 +57,14 @@ class Conf(object):
self.dirs_to_skip = ['acct', 'charger', 'd', 'dev', 'proc', 'sys'] self.dirs_to_skip = ['acct', 'charger', 'd', 'dev', 'proc', 'sys']
self.root = None self.root = None
self.suppress_colors = False self.suppress_colors = False
self.adb_command = 'adb'
self.read() self.read()
self.get_the_box() self.get_the_box()
def get_the_box(self): def get_the_box(self):
"""Detect if we dealing with busybox or toolbox""" """Detect if we dealing with busybox or toolbox"""
cmd = 'adb shell which'.split() cmd = [self.adb_command] + 'shell which'.split()
try: try:
with open(os.devnull, 'w') as fnull: with open(os.devnull, 'w') as fnull:
result = subprocess.check_output(cmd + ['busybox'], result = subprocess.check_output(cmd + ['busybox'],
@@ -110,7 +111,8 @@ class Conf(object):
cfg_map = {'debug': (cfg.getboolean, 'debug'), cfg_map = {'debug': (cfg.getboolean, 'debug'),
'dirs_to_skip': (cfg.get, 'dirs_to_skip'), 'dirs_to_skip': (cfg.get, 'dirs_to_skip'),
'suppress_colors': (cfg.get, 'suppress_colors'), 'suppress_colors': (cfg.get, 'suppress_colors'),
'root': (cfg.get, 'root')} 'root': (cfg.get, 'root'),
'adb_command': (cfg.get, 'adb')}
cfg.read(conf_fname) cfg.read(conf_fname)
for key, (function, attr) in cfg_map.items(): for key, (function, attr) in cfg_map.items():
@@ -125,6 +127,10 @@ class Conf(object):
else: else:
self.dirs_to_skip = [] self.dirs_to_skip = []
if self.adb_command:
self.adb_command = os.path.expandvars(self.adb_command)
self.adb_command = os.path.expanduser(self.adb_command)
class File(object): class File(object):
"""Item in filesystem representation""" """Item in filesystem representation"""
@@ -250,7 +256,7 @@ class Adb(object):
def __su_check(self): def __su_check(self):
"""Check if we are able to get elevated privileges""" """Check if we are able to get elevated privileges"""
cmd = 'adb shell su -c whoami'.split() cmd = [self.conf.adb_command] + 'shell su -c whoami'.split()
try: try:
with open(os.devnull, 'w') as fnull: with open(os.devnull, 'w') as fnull:
result = subprocess.check_output(cmd, stderr=fnull) result = subprocess.check_output(cmd, stderr=fnull)
@@ -303,7 +309,7 @@ class Adb(object):
lscmd = self.conf.box['rls'].format(dir_) lscmd = self.conf.box['rls'].format(dir_)
if self._got_root: if self._got_root:
lscmd = 'su -c "{}"'.format(lscmd) lscmd = 'su -c "{}"'.format(lscmd)
command = ['adb', 'shell', lscmd] command = [self.conf.adb_command, 'shell', lscmd]
try: try:
if self.conf.debug: if self.conf.debug:
@@ -365,7 +371,7 @@ class Adb(object):
if self._got_root: if self._got_root:
lscmd = 'su -c "{}"'.format(lscmd) lscmd = 'su -c "{}"'.format(lscmd)
command = ['adb', 'shell', lscmd] command = [self.conf.adb_command, 'shell', lscmd]
try: try:
if self.conf.debug: if self.conf.debug:
@@ -433,7 +439,7 @@ class Adb(object):
sys.stderr.write(self.error) sys.stderr.write(self.error)
return 1 return 1
cmd = ['adb', 'pull', src, dst] cmd = [self.conf.adb_command, 'pull', src, dst]
if self.conf.debug: if self.conf.debug:
sys.stderr.write(' '.join(cmd) + '\n') sys.stderr.write(' '.join(cmd) + '\n')
@@ -454,7 +460,7 @@ class Adb(object):
if not dst.startswith('/'): if not dst.startswith('/'):
dst = '/' + dst dst = '/' + dst
cmd = ['adb', 'push', src, dst] cmd = [self.conf.adb_command, 'push', src, dst]
if self.conf.debug: if self.conf.debug:
sys.stderr.write(' '.join(cmd) + '\n') sys.stderr.write(' '.join(cmd) + '\n')
@@ -477,7 +483,7 @@ class Adb(object):
sys.stderr.write(self.error) sys.stderr.write(self.error)
return 1 return 1
cmd = ['adb', 'shell', 'rm', dst] cmd = [self.conf.adb_command, 'shell', 'rm', dst]
try: try:
err = subprocess.check_output(cmd) err = subprocess.check_output(cmd)
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
@@ -495,7 +501,7 @@ class Adb(object):
sys.stderr.write(self.error) sys.stderr.write(self.error)
return 1 return 1
cmd = ['adb', 'shell', 'rm', '-r', dst] cmd = [self.conf.adb_command, 'shell', 'rm', '-r', dst]
try: try:
err = subprocess.check_output(cmd) err = subprocess.check_output(cmd)
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
@@ -516,7 +522,7 @@ class Adb(object):
if not dst.startswith('/'): if not dst.startswith('/'):
dst = '/' + dst dst = '/' + dst
cmd = ['adb', 'shell', 'mkdir', dst] cmd = [self.conf.adb_command, 'shell', 'mkdir', dst]
try: try:
err = subprocess.check_output(cmd) err = subprocess.check_output(cmd)
except subprocess.CalledProcessError: except subprocess.CalledProcessError: