Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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%z

option --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__ <