mirror of
https://github.com/xxh/xxh
synced 2024-11-27 06:00:21 +00:00
0.5.8
This commit is contained in:
parent
7ef234af5a
commit
8924c16b89
9 changed files with 43 additions and 36 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -8,7 +8,7 @@ squashfs-root
|
|||
.pytest_cache/
|
||||
build/
|
||||
dist/
|
||||
xonssh_xxh.egg-info/
|
||||
xxh_xxh.egg-info/
|
||||
venv/
|
||||
|
||||
# temporary files from vim and emacs
|
||||
|
@ -25,4 +25,4 @@ venv/
|
|||
.vscode/
|
||||
|
||||
# Mac
|
||||
.DS_Store
|
||||
.DS_Store
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<p align="center">You chosen a command shell and spent months to stuffed it with shortcuts and colors. But when you move from local to remote host using ssh you lose it all. The mission of xxh is to bring your favorite shell wherever you go through the ssh.</p>
|
||||
<p align="center">
|
||||
<a href="https://pypi.org/project/xonssh-xxh/" target="_blank"><img src="https://img.shields.io/pypi/v/xonssh-xxh.svg" alt="[release]"></a>
|
||||
<a href="https://pypi.org/project/xxh-xxh/" target="_blank"><img src="https://img.shields.io/pypi/v/xxh-xxh.svg" alt="[release]"></a>
|
||||
<a href="https://asciinema.org/a/osSEzqnmH9pMYEZibNe2K7ZL7" target="_blank"><img alt="[asciinema demo]" src="https://img.shields.io/badge/demo-asciinema-grass"></a>
|
||||
<a href="#plugins" target="_blank"><img alt="[plugins]" src="https://img.shields.io/badge/extensions-plugins-yellow"></a>
|
||||
<a href="https://gitter.im/xonssh-xxh/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge" target="_blank"><img alt="[gitter chat]" src="https://badges.gitter.im/xonssh-xxh/community.svg"></a>
|
||||
<img alt="[BSD license]" src="https://img.shields.io/pypi/l/xonssh-xxh">
|
||||
<img alt="[BSD license]" src="https://img.shields.io/pypi/l/xxh-xxh">
|
||||
</p>
|
||||
|
||||
## Install or update
|
||||
```
|
||||
python3 -m pip install --upgrade xonssh-xxh
|
||||
python3 -m pip install --upgrade xxh-xxh
|
||||
```
|
||||
After install you can just using `xxh` command as replace `ssh` to connecting to the host because `xxh` has seamless support of basic `ssh` command arguments.
|
||||
|
||||
|
|
6
setup.py
6
setup.py
|
@ -1,8 +1,8 @@
|
|||
import setuptools
|
||||
from xonssh_xxh.settings import global_settings
|
||||
from xxh_xxh.settings import global_settings
|
||||
|
||||
setuptools.setup(
|
||||
name="xonssh-xxh",
|
||||
name="xxh-xxh",
|
||||
version=global_settings['XXH_VERSION'],
|
||||
description="xxh is for using portable xonsh shell wherever you go through the ssh",
|
||||
url="https://github.com/xxh/xxh",
|
||||
|
@ -19,7 +19,7 @@ setuptools.setup(
|
|||
],
|
||||
platforms='Unix-like',
|
||||
scripts=['xxh','xxhp','xxh.zsh','xxh.xsh'],
|
||||
package_data={'xonssh_xxh':['*.xsh', '*.sh']},
|
||||
package_data={'xxh_xxh':['*.xsh', '*.sh']},
|
||||
packages=setuptools.find_packages(),
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3",
|
||||
|
|
8
xxh
8
xxh
|
@ -347,7 +347,7 @@ class Xxh:
|
|||
def main(self):
|
||||
self.create_xxh_env()
|
||||
argp = argparse.ArgumentParser(description=f"Your favorite shell wherever you go through the ssh.\n{self.d2F0Y2ggLW4uMiB4eGggLWg()}", formatter_class=RawTextHelpFormatter, prefix_chars='-+')
|
||||
argp.add_argument('--version', '-V', action='version', version=f"xonssh-xxh/{self.local_xxh_version}")
|
||||
argp.add_argument('--version', '-V', action='version', version=f"xxh/{self.local_xxh_version}")
|
||||
argp.add_argument('-p', dest='ssh_port', help="Port to connect to on the remote host.")
|
||||
argp.add_argument('-l', dest='ssh_login', help="Specifies the user to log in as on the remote machine.")
|
||||
argp.add_argument('-i', dest='ssh_private_key', help="File from which the identity (private key) for public key authentication is read.")
|
||||
|
@ -674,8 +674,8 @@ if __name__ == '__main__':
|
|||
this_file = __file__
|
||||
sys.path.append(str(pf"{this_file}".absolute().parent))
|
||||
|
||||
import xonssh_xxh
|
||||
from xonssh_xxh.settings import global_settings
|
||||
import xxh_xxh
|
||||
from xxh_xxh.settings import global_settings
|
||||
|
||||
xxh = Xxh(package_dir_path=pf"{xonssh_xxh.__file__}".parent, version=global_settings['XXH_VERSION'])
|
||||
xxh = Xxh(package_dir_path=pf"{xxh_xxh.__file__}".parent, version=global_settings['XXH_VERSION'])
|
||||
xxh.main()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import sys, os
|
||||
|
||||
global_settings = {
|
||||
'XXH_VERSION': '0.5.7'
|
||||
'XXH_VERSION': '0.5.8'
|
||||
}
|
||||
|
||||
if __name__ == "__main__":
|
53
xxhp
53
xxhp
|
@ -39,45 +39,47 @@ class XxhPackage(object):
|
|||
|
||||
def install(self):
|
||||
parser = argparse.ArgumentParser(description='')
|
||||
parser.add_argument('package', help=f"xxh-package")
|
||||
parser.add_argument('packages', nargs='+', help=f"xxh-package")
|
||||
parser.add_argument('-v', '--verbose', action='store_true', help=f"Verbose mode")
|
||||
parser.usage = parser.format_usage().replace('usage: xxhp ', 'xxhp install ')
|
||||
opt = parser.parse_args(sys.argv[2:])
|
||||
|
||||
if not re.match('^[a-zA-Z-]+$', opt.package):
|
||||
self.eeprint(f'Invalid package name: {opt.package}')
|
||||
for package in opt.packages:
|
||||
print(f'Install {package}')
|
||||
if not re.match('^[a-zA-Z-]+$', package):
|
||||
self.eeprint(f'Invalid package name: {package}')
|
||||
|
||||
subdir = self.package_subdir(opt.package) or self.eeprint(f"Unknown package: {opt.package}")
|
||||
subdir = self.package_subdir(package) or self.eeprint(f"Unknown package: {package}")
|
||||
|
||||
package_git_url = f'https://github.com/xxh/{opt.package}'
|
||||
package_git_url = f'https://github.com/xxh/{package}'
|
||||
|
||||
self.eprint(f"Git clone {package_git_url}")
|
||||
package_dir = self.local_xxh_home_dir/'xxh'/subdir/opt.package
|
||||
r = ![git clone --depth 1 -q @(package_git_url) @(package_dir) 1>&2]
|
||||
if r.returncode != 0:
|
||||
self.eeprint(f'Git clone error')
|
||||
self.eprint(f"Git clone {package_git_url}")
|
||||
package_dir = self.local_xxh_home_dir/'xxh'/subdir/package
|
||||
r = ![git clone --depth 1 -q @(package_git_url) @(package_dir) 1>&2]
|
||||
if r.returncode != 0:
|
||||
self.eeprint(f'If the package already exists try reinstall: xxhp ri <package>')
|
||||
|
||||
self.eprint(f"Build {opt.package}")
|
||||
@(package_dir/'build.xsh') 1>&2
|
||||
self.eprint(f"Installed {opt.package}")
|
||||
self.eprint(f"Build {package}")
|
||||
@(package_dir/'build.xsh') 1>&2
|
||||
self.eprint(f"Installed {package_dir}")
|
||||
|
||||
def r(self):
|
||||
return self.remove()
|
||||
|
||||
def remove(self):
|
||||
parser = argparse.ArgumentParser(description='')
|
||||
parser.add_argument('package', help=f"xxh-package")
|
||||
parser.add_argument('packages', nargs='+', help=f"xxh-package")
|
||||
parser.add_argument('-v', '--verbose', action='store_true', help=f"Verbose mode")
|
||||
parser.usage = parser.format_usage().replace('usage: xxhp ', 'xxhp remove ')
|
||||
opt = parser.parse_args(sys.argv[2:])
|
||||
|
||||
subdir = self.package_subdir(opt.package) or self.eeprint(f"Unknown package: {opt.package}")
|
||||
package_dir = self.local_xxh_home_dir / 'xxh' / subdir / opt.package
|
||||
if package_dir.exists():
|
||||
rm -rf @(package_dir)
|
||||
self.eprint(f"Removed {package_dir}")
|
||||
else:
|
||||
self.eeprint(f"Package not found: {package_dir}")
|
||||
for package in opt.packages:
|
||||
print(f'Remove {package}')
|
||||
subdir = self.package_subdir(package) or self.eeprint(f"Unknown package: {package}")
|
||||
package_dir = self.local_xxh_home_dir / 'xxh' / subdir / package
|
||||
if package_dir.exists():
|
||||
rm -rf @(package_dir)
|
||||
self.eprint(f"Removed {package_dir}")
|
||||
|
||||
def ri(self):
|
||||
return self.reinstall()
|
||||
|
@ -91,13 +93,18 @@ class XxhPackage(object):
|
|||
|
||||
def list(self):
|
||||
parser = argparse.ArgumentParser(description='')
|
||||
parser.add_argument('packages', nargs='*', help=f"xxh-package")
|
||||
parser.add_argument('-v', '--verbose', action='store_true', help=f"Verbose mode")
|
||||
parser.usage = parser.format_usage().replace('usage: xxhp ', 'xxhp remove ')
|
||||
opt = parser.parse_args(sys.argv[2:])
|
||||
|
||||
packages_dir = (self.local_xxh_home_dir / 'xxh').glob('**/xxh-*')
|
||||
for p in sorted(packages_dir):
|
||||
print(p.name)
|
||||
if opt.packages:
|
||||
if p.name in opt.packages:
|
||||
print(p.name)
|
||||
else:
|
||||
print(p.name)
|
||||
|
||||
def package_subdir(self, name):
|
||||
if 'xxh-shell' in name:
|
||||
|
@ -108,4 +115,4 @@ class XxhPackage(object):
|
|||
|
||||
|
||||
if __name__ == '__main__':
|
||||
XxhPackage()
|
||||
XxhPackage()
|
||||
|
|
Loading…
Reference in a new issue