124 lines
5.4 KiB
Diff
124 lines
5.4 KiB
Diff
diff --color -Nur a/packageship/application/cli/base.py b/packageship/application/cli/base.py
|
|
--- a/packageship/application/cli/base.py 2021-08-14 22:23:58.000000000 +0800
|
|
+++ b/packageship/application/cli/base.py 2022-01-09 11:17:09.842737171 +0800
|
|
@@ -30,7 +30,6 @@
|
|
else:
|
|
from packageship.application.common.constant import ResponseCode
|
|
from packageship.application.common.constant import ERROR_CON
|
|
- from packageship.libs.terminal_table import TerminalTable
|
|
|
|
|
|
class BaseCommand():
|
|
@@ -130,8 +129,7 @@
|
|
Raises:
|
|
|
|
"""
|
|
- table = TerminalTable(title)
|
|
- # table.set_style(prettytable.PLAIN_COLUMNS)
|
|
+ table = prettytable.PrettyTable(title)
|
|
table.align = 'l'
|
|
table.horizontal_char = '='
|
|
table.junction_char = '='
|
|
diff --color -Nur a/packageship/application/cli/cmd.py b/packageship/application/cli/cmd.py
|
|
--- a/packageship/application/cli/cmd.py 2021-08-14 22:23:58.000000000 +0800
|
|
+++ b/packageship/application/cli/cmd.py 2022-01-09 11:17:30.935093041 +0800
|
|
@@ -26,7 +26,6 @@
|
|
from packageship.application.common.constant import ResponseCode
|
|
from packageship.application.common.constant import ListNode
|
|
from packageship.application.common.constant import UWSIG_PATH
|
|
- from packageship.libs.terminal_table import TerminalTable
|
|
from packageship.application.common.constant import ERROR_CON
|
|
from packageship.application.cli.commands.allpkg import AllPackageCommand
|
|
from packageship.application.cli.commands.bedepend import BeDependCommand
|
|
diff --color -Nur a/packageship/libs/terminal_table.py b/packageship/libs/terminal_table.py
|
|
--- a/packageship/libs/terminal_table.py 2021-08-14 22:23:59.000000000 +0800
|
|
+++ b/packageship/libs/terminal_table.py 1970-01-01 08:00:00.000000000 +0800
|
|
@@ -1,87 +0,0 @@
|
|
-#!/usr/bin/python3
|
|
-# ******************************************************************************
|
|
-# Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
|
-# licensed under the Mulan PSL v2.
|
|
-# You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
-# You may obtain a copy of Mulan PSL v2 at:
|
|
-# http://license.coscl.org.cn/MulanPSL2
|
|
-# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
|
-# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
|
-# PURPOSE.
|
|
-# See the Mulan PSL v2 for more details.
|
|
-# ******************************************************************************/
|
|
-"""
|
|
-Description: Simple encapsulation of pretty table
|
|
-Class: TerminalTable
|
|
-"""
|
|
-import os
|
|
-from prettytable import PrettyTable
|
|
-
|
|
-
|
|
-class TerminalTable(PrettyTable):
|
|
- """
|
|
- Description: Rewrite several methods in prettytable
|
|
- Attributes:
|
|
- bottom:Bottom display
|
|
- _vertical_char:Draw characters with vertical edges
|
|
- """
|
|
-
|
|
- def __init__(self, field_names=None, **kwargs):
|
|
- super().__init__(field_names, **kwargs)
|
|
- self.bottom = kwargs.get('bottom') or False
|
|
- self._vertical_char = kwargs.get('vertical_char') or self._unicode("")
|
|
-
|
|
- def _reduce_widths(self, columns, lpad, rpad):
|
|
- """
|
|
- Description: Handling over-width columns
|
|
- Args:
|
|
- columns:columns
|
|
- lpad:The number of spaces to the left of the column data
|
|
- rpad:The number of spaces to the right of the column data
|
|
- Returns:
|
|
-
|
|
- """
|
|
- extra_width = sum(self._widths) - columns + (lpad + rpad) * len(self._widths)
|
|
- avg_width = columns / len(self._widths)
|
|
- gt_avg = filter(lambda x: x > avg_width, self._widths)
|
|
- denominator = sum(
|
|
- [(item - avg_width) / avg_width * 1.0 for item in gt_avg])
|
|
- zoom_width = list()
|
|
- for width in self._widths:
|
|
- if width > avg_width:
|
|
- width = round(width - ((width - avg_width) / avg_width * 1.0) /
|
|
- denominator * extra_width)
|
|
- zoom_width.append(width)
|
|
- self._widths = zoom_width
|
|
- if sum(self._widths) > columns:
|
|
- _max_val = max(self._widths)
|
|
- self._widths[self._widths.index(_max_val)] = _max_val - (sum(self._widths) - columns)
|
|
-
|
|
- def _compute_widths(self, rows, options):
|
|
- """
|
|
- Description: Calculated width
|
|
- Args:
|
|
- rows:row of data, should be a list with as many elements as the table
|
|
- options:option
|
|
- Returns:
|
|
-
|
|
- """
|
|
- super()._compute_widths(rows, options)
|
|
- lpad, rpad = self._get_padding_widths(options)
|
|
- # Total number of columns
|
|
- try:
|
|
- window_width = os.get_terminal_size().columns
|
|
- except OSError as os_error:
|
|
- window_width = 100
|
|
- _columns = window_width - len(self._widths) - 1
|
|
- if _columns < sum(map(lambda x: x + lpad + rpad, self._widths)):
|
|
- coefficient = 1
|
|
- self._reduce_widths(_columns, lpad, rpad)
|
|
- else:
|
|
- coefficient = _columns / (sum(map(lambda x: x, self._widths)) * 1.0)
|
|
- self._widths = list(
|
|
- map(lambda x: round(x * coefficient - lpad - rpad), self._widths))
|
|
- if sum(map(lambda x: x + lpad + rpad, self._widths)) > _columns:
|
|
- _max_val = max(self._widths)
|
|
- self._widths[self._widths.index(_max_val)] =\
|
|
- _max_val - (sum(map(lambda x: x + lpad + rpad, self._widths)) - _columns)
|