Есть ли форматировщик/декодер для конфигурационных файлов NGINX?

Я знаю, что это может показаться немного глупым, но один из моих конфигурационных файлов NGINX - это часть дерьма, когда дело доходит до форматирования. Он работает и все, кроме этого.

Я попытался найти какой-то декодер или форматировщик, например http://jsbeautifier.org/, но затем для файлов конфигурации nginx вместо javascript, но не повезло до сих пор.

Надеюсь, у кого-нибудь появится предложение. Нет требований, если он может форматировать быстро/лениво созданные файлы конфигурации NGINX!

Спасибо!

Ответ 1

Я нашел несколько проектов, которые могут удовлетворить ваши потребности:

  • Nginx Formatter (python) от 1connect
    вы можете получить здесь
  • Декодер Nginx (js/nodejs) by vasilevich
    nginxbeautifier.com, который позволяет быстро форматировать конфигурации в веб-браузере. вы можете получить инструмент командной строки также на том же сайте, чтобы запустить его локально.

Ответ 2

Если ваши строковые строки end с { и }, этот простой индентор может немного помочь вам.

Он не форматирует все ваши конфиги, он только фиксирует отступ.

Оригинал в awk (источник):

#!/usr/bin/awk -f
{sub(/^[ \t]+/,"");idx=0}
/\{/{ctx++;idx=1}
/\}/{ctx--}
{id="";for(i=idx;i<ctx;i++)id=sprintf("%s%s", id, "\t");printf "%s%s\n", id, $0}

Или перезаписано в python:

INDENT = ' ' * 4

def indent(contents):
   lines = map(str.strip, contents.splitlines())
   current_indent = 0
   for index,line in enumerate(lines):
       if (line.endswith('}')):
           current_indent -= 1

       lines[index] = current_indent * INDENT + line

       if (line.endswith('{')):
           current_indent += 1

    return ('\n').join(lines)

Ответ 3

Я использую форматировщики JS (например, http://jsbeautifier.org/), которые не заботятся об ошибках.