@kabeep/forex-cli
Version:
A Node.js Library to convert foreign exchange in terminal
489 lines (367 loc) • 20.2 kB
Markdown
<div align="center">
<h1>forex-cli</h1>
[![NodeJS][node-image]][node-url]
[![Install Size][install-size-image]][install-size-url]
[![NPM][npm-image]][npm-url]
[![code style][code-style-image]][code-style-url]
[![License][license-image]][license-url]
English | [简体中文][zh-cn-url]
![Insights][insights-image]
<img width="814" src="docs/images/usage.en-US.png" alt="usage-png">
</div>
## 📖 Introduction
A Node.js Library to convert foreign exchange in terminal.
## ⚙️ Installation
```bash
npm install --global @kabeep/forex-cli
```
```bash
yarn add --global @kabeep/forex-cli
```
```bash
pnpm add --global @kabeep/forex-cli
```
## 🚀 Usage
```bash
forex -h
```
Or use the abbreviation.
```bash
fx -h
```
```bash
forex <command> [options]
Commands:
forex convert [amount] Convert currency amounts [default] [aliases: to]
forex currency [code] Get available currency codes and names [aliases: cur, ccy, cy]
forex list Print list of available currencies [aliases: ls]
forex completion generate completion script
Options:
-d, --date The date for the conversion rate, or "latest" for the most recent
[string] [default: "latest"]
--timeout Request timeout (milliseconds) [number] [default: 10000]
-c, --clipboard Write (copy) the result to the clipboard [boolean] [default: false]
-T, --translate Translate occurrences of currency or region names [boolean] [default: false]
-V, --verbose Output verbose messages on internal operations [boolean] [default: false]
-f, --from The base currency code or locale code [string] [default: "auto"]
-t, --to The destination currency code or locale code [string] [default: "auto"]
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
Examples:
forex list -t US -d 2024-12-01 Use the exchange rate for the specified date
forex convert -t US -d "Dec 01, 2024" Use the exchange rate for the specified date
-------
forex convert -t US --timeout 30000 Set request timeout
forex currency -T -t US Print the translated currency name or region name
according to the operating system locale
forex 1000 -f USD -t EUR Convert 1000 USD to Euros
-------
forex -t USD Currency codes using ISO 4217
forex -t US Use locale codes from ISO 3166-1
forex -t America Use country or region name
-------
forex --from USD --to EUR Specify base and target currencies
forex --from USD Specify one of the currencies and automatically f
ill in the other currency through the OS's locale
forex --to USD Specify one of the currencies and automatically f
ill in the other currency through the OS's locale
```
### Quick Start
Convert 1000 Euros to your currency (obtained based on OS's locale).
```bash
forex 1000 --from EUR
```
```
✔ Get the list of available currencies on latest 381ms
✔ Get the currency exchange rate between EUR and USD on latest 120ms
✨ 1,000.00 Euro (EUR) ≈ 1,050.60 US Dollar (USD)
```
## 🔩 Command
| Command | Aliases | Default | Parameter | Description |
|--------------|----------------------|---------|----------------------------------------------------------------|----------------------------------------|
| `convert` | `to` | true | amount | Convert currency amounts |
| `currency` | `cur` / `ccy` / `cy` | false | currency code / country or region code /country or region name | Get available currency codes and names |
| `list` | `ls` | false | - | Print list of available currencies |
| `completion` | - | false | - | Generate completion script |
| `help` | - | false | - | Show help |
**Common Options:**
```bash
forex list --date "Dec 01, 2024" --timeout 10000 --translate
```
Or use the abbreviation.
```bash
fx list -d "Dec 01, 2024" --timeout 10000 -TVc
```
| Option | Type | Optional | Default | Description |
|----------------------|-----------|----------|------------|-------------------------------------------------------------------|
| `--date` / `-d` | `string` | true | `"latest"` | The date for the conversion rate, or "latest" for the most recent |
| `--timeout` | `number` | true | `10_000` | Request timeout (milliseconds) |
| `--clipboard` / `-c` | `boolean` | true | `false` | Write (copy) the result to the clipboard |
| `--translate` / `-T` | `boolean` | true | `false` | Translate occurrences of currency or region names |
| `--verbose` / `-V` | `boolean` | true | `false` | Output verbose messages on internal operations |
| `--version` / `-v` | `boolean` | true | `false` | Show version number |
| `--help` / `-h` | `boolean` | true | `false` | Show help |
### $ CONVERT (Default)
Convert currency amounts.
Supported `amount` formats:
- Basic `10000`
- Digit Formatting `10_000`
- Scientific Notation `1.23e3`
- Statistical Formatting `10,000`
- Financial Abbreviations `1.1b1m1k1.01`
```bash
forex convert -h
```
```
forex convert [amount]
Convert currency amounts
Options:
-d, --date The date for the conversion rate, or "latest" for the most recent
[string] [default: "latest"]
--timeout Request timeout (milliseconds) [number] [default: 10000]
-c, --clipboard Write (copy) the result to the clipboard [boolean] [default: false]
-T, --translate Translate occurrences of currency or region names [boolean] [default: false]
-V, --verbose Output verbose messages on internal operations [boolean] [default: false]
-f, --from The base currency code or locale code [string] [default: "auto"]
-t, --to The destination currency code or locale code [string] [default: "auto"]
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
Examples:
forex 1000 -f USD -t EUR Convert 1000 USD to Euros
-------
forex -t USD Currency codes using ISO 4217
forex -t US Use locale codes from ISO 3166-1
forex -t America Use country or region name
-------
forex --from USD --to EUR Specify base and target currencies
forex --from USD Specify one of the currencies and automatically fill in the o
ther currency through the OS's locale
forex --to USD Specify one of the currencies and automatically fill in the o
ther currency through the OS's locale
```
- Convert 1000 USD to Euros.
```bash
forex convert 1000 --from USD --to EUR
```
```
✔ Get the list of available currencies on latest 369ms
✔ Get the currency exchange rate between USD and EUR on latest 119ms
✨ 1,000.00 US Dollar (USD) ≈ 951.83 Euro (EUR)
```
- Convert your 1000 quantity currency to Euros (acquired based on OS's locale).
```bash
forex convert 1000 --to EUR
```
```
✔ Get the list of available currencies on latest 369ms
✔ Get the currency exchange rate between USD and EUR on latest 119ms
✨ 1,000.00 US Dollar (USD) ≈ 951.83 Euro (EUR)
```
- Convert 1000 Euros to your currency (obtained based on OS's locale).
```bash
forex convert 1000 --from EUR
```
```
✔ Get the list of available currencies on latest 369ms
✔ Get the currency exchange rate between EUR and USD on latest 119ms
✨ 1,000.00 Euro (EUR) ≈ 1,050.60 US Dollar (USD)
```
| Option | Type | Optional | Default | Description |
|-----------------|----------|----------|----------|----------------------------------------------|
| `--from` / `-f` | `string` | true | `"auto"` | The base currency code or locale code |
| `--to` / `-t` | `string` | true | `"auto"` | The destination currency code or locale code |
---
### $ CURRENCY
Get available currency codes and names.
```
forex currency [code]
Get available currency codes and names
Options:
-d, --date The date for the conversion rate, or "latest" for the most recent
[string] [default: "latest"]
--timeout Request timeout (milliseconds) [number] [default: 10000]
-c, --clipboard Write (copy) the result to the clipboard [boolean] [default: false]
-T, --translate Translate occurrences of currency or region names [boolean] [default: false]
-V, --verbose Output verbose messages on internal operations [boolean] [default: false]
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
Examples:
forex cy US Obtained via ISO-3166-1-alpha-2 region code
forex cy USD Obtained via ISO 4217 currency code
forex cy America Get by country or region name
```
- Obtained via `ISO-3166-1-alpha-2` region code.
```bash
forex currency US
```
```
✔ Get the list of available currencies on latest 369ms
✨ US Dollar (USD)
```
- Obtained via `ISO 4217` currency code.
```bash
forex currency USD
```
```
✔ Get the list of available currencies on latest 369ms
✨ US Dollar (USD)
```
- Get by country or region name.
```bash
forex currency America
```
```
✔ Get the list of available currencies on latest 369ms
✨ US Dollar (USD)
```
---
### $ LIST
Print list of available currencies.
```bash
forex list -h
```
```
forex list
Print list of available currencies
Options:
-d, --date The date for the conversion rate, or "latest" for the most recent
[string] [default: "latest"]
--timeout Request timeout (milliseconds) [number] [default: 10000]
-c, --clipboard Write (copy) the result to the clipboard [boolean] [default: false]
-T, --translate Translate occurrences of currency or region names [boolean] [default: false]
-V, --verbose Output verbose messages on internal operations [boolean] [default: false]
-p, --pretty Pretty output format [boolean] [default: false]
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
Examples:
forex ls Shows the latest list of available currencies
forex ls -p Use unicode table to prettier printed content
```
| Option | Type | Optional | Default | Description |
|-------------------|-----------|----------|---------|----------------------|
| `--pretty` / `-p` | `boolean` | true | `false` | Pretty output format |
- Shows the latest list of available currencies.
```bash
forex list
```
```
Bitcoin (BTC)
Chinese Yuan Renminbi (CNY)
Ethereum (ETH)
Euro (EUR)
Japanese Yen (JPY)
Hong Kong Dollar (HKD)
Singapore Dollar (SGD)
US Dollar (USD)
Tether (USDT)
Gold Ounce (XAU)
...
```
- Use unicode table to prettier printed content.
```bash
forex list --pretty
```
```
┌──────┬────────────────────────────────┬──────────────────────────────────────────┐
│CODE │NAME │TRANSLATION │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│BTC │Bitcoin │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│CNY │Chinese Yuan Renminbi │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│ETH │Ethereum │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│EUR │Euro │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│JPY │Japanese Yen │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│HKD │Hong Kong Dollar │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│SGD │Singapore Dollar │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│USD │US Dollar │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│USDT │Tether │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│XAU │Gold Ounce │ - │
├──────┼────────────────────────────────┼──────────────────────────────────────────┤
│... │... │... │
└──────┴────────────────────────────────┴──────────────────────────────────────────┘
```
---
### $ COMPLETION
Generate completion script.
```bash
forex completion -h
```
```
###-begin-forex-completions-###
#
# yargs command completion script
#
# Installation: forex completion >> ~/.bashrc
# or forex completion >> ~/.bash_profile on OSX.
#
_forex_yargs_completions()
{
local cur_word args type_list
cur_word="${COMP_WORDS[COMP_CWORD]}"
args=("${COMP_WORDS[@]}")
# ask yargs to generate completions.
type_list=$(forex --get-yargs-completions "${args[@]}")
COMPREPLY=( $(compgen -W "${type_list}" -- ${cur_word}) )
# if no match was found, fall back to filename completion
if [ ${#COMPREPLY[@]} -eq 0 ]; then
COMPREPLY=()
fi
return 0
}
complete -o bashdefault -o default -F _forex_yargs_completions forex
###-end-forex-completions-###
```
---
### $ HELP
Show help.
```bash
forex help
```
- Show `convert` help.
```bash
forex convert help
```
- Show `currency` help.
```bash
forex currency help
```
- Show `list` help.
```bash
forex list help
```
## 🌐 i18n
| Language Name | Native Name | ISO-639-1 | ISO-3166-1 (Alpha-2) | Locale File |
|:-------------------|:-----------:|:---------:|:--------------------:|:-----------------------------|
| English | - | en | US | [en-US.ts][locale-en-us-url] |
| Chinese Simplified | 简体中文 | zh | CN | [zh-CN.ts][locale-zh-cn-url] |
## 🔗 Related
- [forex][forex-url] - 💱 A JavaScript foreign exchange library via `fawazahmed0`'s API.
## 🤝 Contribution
Contributions via Pull Requests or [Issues][issues-url] are welcome.
## 📄 License
This project is licensed under the MIT License. See the [LICENSE][license-url] file for details.
[insights-image]: https://repobeats.axiom.co/api/embed/a0e4d0ae3edced5fd9a045527c7eef9aecfb6c0d.svg "Repobeats analytics image"
[node-image]: https://img.shields.io/node/v/%40kabeep%2Fforex-cli?color=lightseagreen
[node-url]: https://nodejs.org/
[npm-image]: https://img.shields.io/npm/d18m/%40kabeep%2Fforex-cli?color=fa6673
[npm-url]: https://www.npmjs.com/package/@kabeep/forex-cli
[install-size-image]: https://packagephobia.com/badge?p=@kabeep/forex-cli
[install-size-url]: https://packagephobia.com/result?p=@kabeep/forex-cli
[code-style-image]: https://img.shields.io/badge/Formatted_with-Biome-cornflowerblue?style=flat&logo=biome
[code-style-url]: https://biomejs.dev/
[license-image]: https://img.shields.io/github/license/kabeep/forex-cli?color=slateblue
[license-url]: LICENSE
[en-us-url]: README.md
[zh-cn-url]: README.zh-CN.md
[locale-en-us-url]: src/locale/en-US.ts
[locale-zh-cn-url]: src/locale/zh-CN.ts
[forex-url]: https://github.com/kabeep/forex
[issues-url]: https://github.com/kabeep/forex-cli/issues