Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kaz-utashiro/optex
optex command repository
https://github.com/kaz-utashiro/optex
Last synced: 2 months ago
JSON representation
optex command repository
- Host: GitHub
- URL: https://github.com/kaz-utashiro/optex
- Owner: kaz-utashiro
- License: other
- Created: 2017-11-09T14:16:01.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-11-02T00:41:22.000Z (2 months ago)
- Last Synced: 2024-11-02T01:24:19.843Z (2 months ago)
- Language: Perl
- Size: 370 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.deepl-JA.md
- Changelog: Changes
- License: LICENSE
Awesome Lists containing this project
README
# NAME
optex - 汎用コマンド・オプション・ラッパー
# VERSION
Version 1.0101
# SYNOPSIS
**optex** _command_ \[ **-M**_module_ \] ...
または _command_ -> **optex** シンボリックリンク、または
**optex** _options_ \[ -l | -m \] ...
--link, --ln create symlink
--unlink, --rm remove symlink
--ls list link files
--rc list rc files
--nop, -x disable option processing
--[no]module disable module option on arguments# DESCRIPTION
**optex**はPerlモジュール[Getopt::EX](https://metacpan.org/pod/Getopt%3A%3AEX)を利用した汎用コマンドオプション処理ラッパーです。これにより、ユーザはシステム上のあらゆるコマンドに対して独自のオプション・エイリアスを定義し、モジュール形式の拡張性を提供することができます。
対象となるコマンドは引数として与えられます:
% optex command
または**optex**へのシンボリックリンクファイルとして指定します:
command -> optex
設定ファイル`~/.optex.d/`_コマンド_`.rc`が存在する場合、実行前に評価され、コマンド引数はそれを使用して前処理されます。
## OPTION ALIASES
`-I[TIMESPEC]`オプションを持たないmacOSの`date`コマンドを思い浮かべてほしい。**optex**を使い、`~/.optex.d/date.rc`ファイルに次のような設定をすることで実装できます。
option -I -Idate
option -Idate +%F
option -Iseconds +%FT%T%z
option -Iminutes +%FT%H:%M%z
option -Ihours +%FT%H%zoption --iso-8601 -I
option --iso-8601=date -Idate
option --iso-8601=seconds -Iseconds
option --iso-8601=minutes -Iminutes
option --iso-8601=hours -Ihours次のコマンドは期待通りに動作します。
% optex date -Iseconds
コマンドの検索パスにシンボリックリンク`date -> optex`がある場合は、標準コマンドと同じように使用できますが、サポートされていないオプションがあります。
% date -Iseconds
共通設定は`~/.optex.d/default.rc`ファイルに保存され、これらのルールは**optex**を介して実行されるすべてのコマンドに適用されます。
実際には、`--iso-8601`オプションはこのように簡単に定義できる:
option --iso-8601 -I$
これはほとんどの場合うまくいくが、このように`--iso-8601`オプションだけを先行させると失敗する:
% date --iso-8601 -u
## COMMAND ALIASES
**optex**のコマンドエイリアスは、シェルのエイリアス機能と変わりませんが、ツールやスクリプトからコマンドとして実行でき、設定ファイルで一括管理できる点が効果的です。
コマンドエイリアスは設定ファイルで設定できる
(`~/.optex.d/config.toml`) like this:[alias]
tc = "optex -Mtextconv"このように`tc`から`optex`へシンボリックリンクを張ることができる:
% optex --ln tc
また、`$HOME/.optex.d/bin`を`PATH`環境にインクルードします。
`textconv`モジュールは、引数として与えられたファイルをプレーンテキストに変換するために使うことができます。このように定義すると、Wordファイルは次のように比較できます。
% tc diff A.docx B.docx
エイリアス名はrcファイルとモジュール・ディレクトリを見つけるために使われます。上の例では、`~/.optex.d/tc.rc`と`~/.optex.d/tc/`が参照されます。
["CONFIGURATION FILE"](#configuration-file)セクションを読んでください。
## MACROS
複雑な文字列はマクロ`define`を使って合成できます。次の例は、テキスト中の母音を数えるawkスクリプトで、ファイル`~/.optex.d/awk.rc`で宣言します。
define __delete__ /[bcdfgkmnpsrtvwyz]e( |$)/
define __match__ /ey|y[aeiou]*|[aeiou]+/
define __count_vowels__ <