タスクの"name"に日本語を使ったときでも"*"の数を正しくする

 以下のタスクを実行した場合に、"*"の数の調整がうまくいかず、2行になってしまう。

- name: 日本語
  debug:
    msg: "日本語"

     ↓

TASK [common : 日本語] *********************************************************
***
ok: [hoge] => {
    "msg": "日本語"
}

 気になったので、直してみた。

$ cat ansible_display.patch
--- /usr/lib/python2.7/dist-packages/ansible/utils/display.py.org
+++ /usr/lib/python2.7/dist-packages/ansible/utils/display.py
@@ -29,6 +29,7 @@
 import sys
 import textwrap
 import time
+import unicodedata

 from struct import unpack, pack
 from termios import TIOCGWINSZ
@@ -253,7 +254,16 @@
                 self.warning("somebody cleverly deleted cowsay or something during the PB run.  heh.")

         msg = msg.strip()
-        star_len = self.columns - len(msg)
+        if isinstance(msg, unicode):
+            msglen = 0
+            for c in msg:
+             if unicodedata.east_asian_width(c) in 'FWA':
+                 msglen += 2
+             else:
+                 msglen += 1
+        else:
+            msglen = len(msg)
+        star_len = self.columns - msglen
         if star_len <= 3:
             star_len = 3
         stars = u"*" * star_len

 パッチ(fileansible_display.patch)を適用。

# cd /
# patch -p0 < ~youichi/ansible_display.patch

 これで、きれいに1行に収まってすっきりした。

TASK [common : 日本語] *********************************************************
ok: [hoge] => {
    "msg": "日本語"
}

添付ファイル: fileansible_display.patch 74件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-28 (土) 19:07:09 (541d)