2013-12-08 2 views
15

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

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

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

Спасибо!

ответ

1

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

+2

В настоящее время я искал jsbeautifier из-за разочарования, что в мире нет ничего для форматирования такого синтаксиса конфигурации. Я попробовал jsbeautifier, но он не работал (все настройки отключены) Например, #comments запущен в новой строке. как: # комментарии Как использовать jsbeautifier для Nginx конфигурации? –

+1

@PeterWillemsen хорошо, я знаю ограничения. Вероятно, что меня спасает, так это то, что я только форматирую большие шаблоны конфигурации, и мои конфиги разбиваются как можно больше. Поэтому большую часть времени я не сталкиваюсь с проблемами. –

+2

Спасибо, я просто попытаюсь разблокировать JSBeautifier, опубликует его, когда он будет работать для файлов NGINX для тех, кто ищет то же самое. –

4

Если блок линия конца с { х и }-х, это просто индентор может помочь вам немного.

Это не Формат всех ваших конфигураций, он исправляет отступы.

Оригинал в AWK (source):

#!/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) 
+0

Thankyou. Я провел годы, пытаясь заставить vim отступить и разочаровывался. Скрипт awk отлично поработал! – IanB

11

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

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

Спасибо, что поделились моим проектом (nginxbeautifier), если вы хотите запустить его локально, а, пожалуйста, посетите мою страницу github https://github.com/vasilevich/nginxbeautifier – vasilevich

+2

Я написал https://github.com/beijaflor-io/conffmt тоже , который является полным синтаксическим анализатором и красивым принтером для любого файла conf – yamadapc

Смежные вопросы