良い一日、親愛なるhabralum! 私のサービスの結果、コンソールアプリケーション(メニュー)を作成して、データベースの移行(移行だけでなく、他の異なる種類のサービスでも)に関連する差し迫った問題を解決することができました。 移行については話さないように、すぐに予約します! 開発はPython言語で行われるため、次は各国語の方言を使用した翻訳不可能なしゃれです。
同僚の現在の同僚は、しっかりと貼り付けられ、絡み合ったパーツのプラスチシンボールでした。 したがって、そのコードを変更、補足、または最悪の場合理解することができなかったため、アーキテクチャコンポーネントを分割した後、このバラライカを書き直すことにしました。 コンソールメニューを作成するためのpythonフレームワークを探してネットに行きました。 検索は失敗しました-少なくとも少し使いやすいメニューを構築するためのフレームワークのネットワークで見つかっただけではありませんでした。 しかし、2つの「ほぼ候補」が見つかりました。
崖は私の要求と完全には一致しません。 これは実際にはコンソールメニューではなく、手動でコマンドを入力してオートコンプリートを楽しむことができるインタラクティブなセッション(コマンドライン)にすぎません。 そうではありません。
コンソールは欲望にまったく対応していません それは
同じチーズ、ただしソースが異なる
また、生よりも。 タフタロジーでごめんなさい。
実際、コンソールメニューをレンダリングするためのクラスをいくつか作成することから始めることにしました(
cmd2モジュールはレンダリングモジュールの助けを提供してくれたので、小さな
xmenuを操作するために必要です)。 実際には、実装にトリックはありません。 3つのクラス、歴史の保存のためのコルタン-それがすべての物語です。 結果は、このようなミニフレームワークです。 すぐに吐き出さないでください これは
プレアルファ版であることをお勧めします。 そして、
githubで xmenuを拾って見ることができます。 不足しているドキュメント(これまでのところ、不足している)を理解したくない人のために、クライアントコードの例をここに公開します。
次のようになります。

これは絶対に混oticとしたメニューです-塗りつぶして判断しないでください。
したがって、xmenuは以下を提供します。
- 無限ネストのメニュー(メニューはメニューにネストされています)
- 着色メニュー項目
- 歴史をさかのぼる能力(将来的には、私は歩いて前に進むかもしれません)
- 呼び出し可能なオブジェクトはすべてメニュー項目に掛けることができます
- Xmenuは、すべてのオブジェクトからドックを自動的に収集し、1つのメニューに集約します-ヘルプ。
私はオープンソフトウェア運動にあまり積極的ではありませんが、この方向に進むことを約束します。このツールを開発し、補完します。 この提案を読んでくれたすべての人に感謝し、テストしてくれた人たちに
特別な感謝をし、彼らの願いを表現し、私の欠陥を強調した。 そして、Habrは、これが私の最初の記事であり、ハラマンになることを学んでいるだけなので、無駄にしようとしなかったかもしれません。
UPD:バージョンが更新されました
-githubで参照してください