Есть несколько причин, почему делать это не очень хорошая идея. Многие из них были упомянуты, поэтому я просто остановлюсь на одном конкретном моменте.
Инструменты командной строки, как правило, вообще не интерактивны, в отличие от графического интерфейса. Это принципиальная разница. Это, например, больно для длительных задач.
Ваш инструмент командной строки в лучшем случае выведет какую-то информацию о ходе выполнения - новые строки, текстовый индикатор выполнения, кучу выходных данных ... Любые ошибки могут выводиться только на консоль.
Теперь вы хотите добавить GUI поверх этого, что вы делаете? Разобрать вывод вашего давно запущенного инструмента командной строки? Сканирование ПРЕДУПРЕЖДЕНИЯ и ОШИБКИ в этом выводе, чтобы вывести диалоговое окно?
В лучшем случае большинство пользовательских интерфейсов, построенных таким образом, выдают пульсирующую полосу занятости в течение всего времени выполнения команды, а затем показывают диалоговое окно успеха или неудачи при выходе из команды. К сожалению, именно так многие программы UNIX GUI собираются вместе, что делает работу пользователя ужасной.
Большинство респондентов здесь правы, говоря, что вам, вероятно, следует абстрагировать действительные функциональные возможности вашей программы в библиотеку, а затем написать для нее интерфейс командной строки и графический интерфейс. Вся ваша бизнес-логика должна быть в вашей библиотеке, и любой пользовательский интерфейс (да, командная строка - это пользовательский интерфейс) должен делать только то, что необходимо для взаимодействия между вашей бизнес-логикой и пользовательским интерфейсом.
Командная строка слишком плоха для пользовательского интерфейса, чтобы гарантировать, что вы разрабатываете свою библиотеку достаточно хорошо для использования в дальнейшем. Вы должны начать с обоих с самого начала, или начать с программирования GUI. Легко добавить интерфейс командной строки в библиотеку, разработанную для GUI, но с другой стороны, это намного сложнее, именно из-за всех интерактивных функций, которые понадобятся в GUI (создание отчетов, прогресс, диалоги ошибок, i18n, ... )