dev
is a command-line tool that modifies commands before run.
npm i -g @hyrious/dev-cmd
dev --add proxy ... -c http.proxy=socks5://localhost:1080
# proxy = ... -c http.proxy=socks5://localhost:1080
dev proxy git clone XXX
# actually run: git clone XXX -c http.proxy=socks5://localhost:1080
dev --remove proxy
# removed proxy
The simplest example above just replaces ...
with original command line,
where it was git clone XXX
.
Now let's add something more useful than that!
Add/replace {cmd}
with rule after it. If no rule presents, it does nothing.
dev -A hello echo "hello world!"
dev hello
=> hello world!
! Note: Windows users will encounter errors bacause echo
is not a program but a shell command.
Works only when original command starts with {prefix}
. For example,
dev -A proxy = git ... -c http.proxy=socks5://localhost:1080
means that, only dev proxy git XXX
will be modified by this rule.
Different {prefix}
won't affect other rules imported by the same {cmd}
,
which means you can do this:
dev -A proxy ... --http-proxy=http://localhost:1080
dev -A proxy = git ... -c http.proxy=socks5://localhost:1080
dev -A proxy = aria2c ... --all-proxy=http://localhost:1080
dev -A proxy = scoop scoop config proxy http://localhost:1080 && ...
Remove {cmd}
. It won't affect rules with {prefix}
having the same {cmd}
.
To remove them too, add --all
.
Just like -A
, remove specific {cmd}
and {prefix}
.
dev -R proxy
dev -R proxy = git
dev -R proxy --all
You can add more complex rules with plugins. Here is an example.
module.exports = dev =>
dev.add('proxy', {
// you can use regex here, but keep in mind it only
// matches the first argument, which is the command itself,
// like `git`, `scoop`
startsWith: 'scoop',
run(cmd) {
dev.sh('scoop', ['config', 'proxy', 'http://localhost:1080'])
dev.sh(cmd)
},
remove() {
dev.sh('scoop', ['config', 'rm', 'proxy'])
}
})
If --save
presents, it will write this plugin's path into .dev.json
's
plugins
list, see below.
Show rules.
dev
will automatically load .dev.json
at current & home folder.
{ "rules": [
{ "name": "proxy",
"startsWith": "git",
"run": ["...", "-c", "http.proxy=socks5://localhost:1080"]
}
],
"plugins": [
"~/plugin.js"
]
}