以下のタスクを実行した場合に、"*"の数の調整がうまくいかず、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
パッチ(ansible_display.patch)を適用。
# cd / # patch -p0 < ~youichi/ansible_display.patch
これで、きれいに1行に収まってすっきりした。
TASK [common : 日本語] ********************************************************* ok: [hoge] => { "msg": "日本語" }