my-xonsh-fork is to convert your xonsh fork package name to the new
i.e. xonsh
becomes xonsh42
and you can run it, add it to shebang or import in python.
- You have your own fork of original xonsh repository.
- You want to install it on your host. But you don't want to lose the original xonsh on your host. You don't want to rename xonsh package in your fork code to have an ability to pull the changes from the original xonsh repository without conflicts.
- When you run
my-xonsh-fork
it make a clone of the source git repo and replacesxonsh
directory, calls, paths with thexonsh{FORK_NAME}
i.e.xonsh2
. - Then you can install this package using
pip
. - As result you'll have
xonsh
on the host along withxonsh2
. You can use bothxonsh
andxonsh2
in the sheband of your scripts i.e.#!/usr/bin/env xonsh2
.
pip install my-xonsh-fork
usage: my-xonsh-fork [-h] -n FORK_NAME -s SOURCE_REPO [-t TARGET_REPO] -d TARGET_DIR [-f]
Convert your xonsh fork package name to the new.
optional arguments:
-h, --help show this help message and exit
-n FORK_NAME, --fork-name FORK_NAME
Fork name i.e. `-n 2` will create `xonsh2` fork.
-s SOURCE_REPO, --source-repo SOURCE_REPO
Source repo i.e. git@github.com:anki-code/xonsh-xep-2.git
-t TARGET_REPO, --target-repo TARGET_REPO
Target empty repo to push the result i.e. git@github.com:anki-code/xonsh2.git
-d TARGET_DIR, --target-dir TARGET_DIR
Target dir i.e. /tmp/xonsh2
-f, --force-rebuild Remove XONSH_TARGET_DIR and rebuild from scratch.
For example you want to have two packages: xonsh
with original xonsh and xonsh2
- your fork of original xonsh.
To achieve this here is the example based on XEP-2 fork:
my-xonsh-fork -n 2 -s git@github.com:anki-code/xonsh-xep-2.git -d /tmp/xonsh2 -f
pip install -U /tmp/xonsh2
xonsh2 --no-rc
If you want to push the renamed fork to new repo use --target-repo
argument.
If your fork has name 2
(i.e. my-xonsh-fork -n 2 ...
) then the new names of RC files will be: .xonshrc_2
, rc_2.xsh
.
If your fork has name 2
(i.e. my-xonsh-fork -n 2 ...
) then the new name of the xontribs package will be xontrib2
and the command to load it will be xontrib2 load
.
To support your fork in the xontrib change the sections in setup.py
of the xontrib:
setup(
...
packages=[
'xontrib',
'xontrib2' # Added
],
package_dir={
'xontrib': 'xontrib',
'xontrib2': 'xontrib' # Added
},
...
)