|
2 | 2 | Перем Лог; |
3 | 3 |
|
4 | 4 | &Пластилин |
5 | | -Перем КонсольноеПриложение; |
| 5 | +Перем Поделка; |
6 | 6 |
|
7 | 7 | &Опция(Имя = "shell s", Описание = "Тип оболочки для генерации автодополнения (поддерживается: bash)") |
8 | 8 | &ТСтрока |
|
82 | 82 | ВсеКоманды = СтрСоединить(МассивИменВсехКоманд, " "); |
83 | 83 | ТелоCase = СтрСоединить(СтрокиCase, Символы.ПС); |
84 | 84 |
|
85 | | - Скрипт = |
86 | | -"# ovm bash completions |
87 | | -# Добавьте строку ниже в ~/.bashrc для активации автодополнения: |
88 | | -# source <(ovm completions --shell bash) |
89 | | -
|
90 | | -_ovm_completions() { |
91 | | - local cur prev words cword |
92 | | - _init_completion 2>/dev/null || { |
93 | | - COMPREPLY=() |
94 | | - cur=""${COMP_WORDS[COMP_CWORD]}"" |
95 | | - prev=""${COMP_WORDS[COMP_CWORD-1]}"" |
96 | | - words=(""${COMP_WORDS[@]}"") |
97 | | - cword=$COMP_CWORD |
98 | | - } |
99 | | -
|
100 | | - local commands=""" + ВсеКоманды + """ |
101 | | -
|
102 | | - if [ $cword -eq 1 ]; then |
103 | | - COMPREPLY=($(compgen -W ""$commands"" -- ""$cur"")) |
104 | | - return 0 |
105 | | - fi |
106 | | -
|
107 | | - local command=""${words[1]}"" |
108 | | -
|
109 | | - case ""$command"" in |
110 | | -" + ТелоCase + " |
111 | | - *) |
112 | | - ;; |
113 | | - esac |
114 | | -
|
115 | | - return 0 |
116 | | -} |
117 | | -
|
118 | | -complete -F _ovm_completions ovm"; |
119 | | - |
120 | | - Возврат Скрипт; |
| 85 | + СтрокиСкрипта = Новый Массив(); |
| 86 | + СтрокиСкрипта.Добавить("# ovm bash completions"); |
| 87 | + СтрокиСкрипта.Добавить("# Добавьте строку ниже в ~/.bashrc для активации автодополнения:"); |
| 88 | + СтрокиСкрипта.Добавить("# source <(ovm completions --shell bash)"); |
| 89 | + СтрокиСкрипта.Добавить(""); |
| 90 | + СтрокиСкрипта.Добавить("_ovm_completions() {"); |
| 91 | + СтрокиСкрипта.Добавить(" local cur prev words cword"); |
| 92 | + СтрокиСкрипта.Добавить(" _init_completion 2>/dev/null || {"); |
| 93 | + СтрокиСкрипта.Добавить(" COMPREPLY=()"); |
| 94 | + СтрокиСкрипта.Добавить(" cur=""${COMP_WORDS[COMP_CWORD]}"""); |
| 95 | + СтрокиСкрипта.Добавить(" prev=""${COMP_WORDS[COMP_CWORD-1]}"""); |
| 96 | + СтрокиСкрипта.Добавить(" words=(""${COMP_WORDS[@]}"")"); |
| 97 | + СтрокиСкрипта.Добавить(" cword=$COMP_CWORD"); |
| 98 | + СтрокиСкрипта.Добавить(" }"); |
| 99 | + СтрокиСкрипта.Добавить(""); |
| 100 | + СтрокиСкрипта.Добавить(" local commands=""" + ВсеКоманды + """"); |
| 101 | + СтрокиСкрипта.Добавить(""); |
| 102 | + СтрокиСкрипта.Добавить(" if [ $cword -eq 1 ]; then"); |
| 103 | + СтрокиСкрипта.Добавить(" COMPREPLY=($(compgen -W ""$commands"" -- ""$cur""))"); |
| 104 | + СтрокиСкрипта.Добавить(" return 0"); |
| 105 | + СтрокиСкрипта.Добавить(" fi"); |
| 106 | + СтрокиСкрипта.Добавить(""); |
| 107 | + СтрокиСкрипта.Добавить(" local command=""${words[1]}"""); |
| 108 | + СтрокиСкрипта.Добавить(""); |
| 109 | + СтрокиСкрипта.Добавить(" case ""$command"" in"); |
| 110 | + СтрокиСкрипта.Добавить(ТелоCase); |
| 111 | + СтрокиСкрипта.Добавить(" *)"); |
| 112 | + СтрокиСкрипта.Добавить(" ;;"); |
| 113 | + СтрокиСкрипта.Добавить(" esac"); |
| 114 | + СтрокиСкрипта.Добавить(""); |
| 115 | + СтрокиСкрипта.Добавить(" return 0"); |
| 116 | + СтрокиСкрипта.Добавить("}"); |
| 117 | + СтрокиСкрипта.Добавить(""); |
| 118 | + СтрокиСкрипта.Добавить("complete -F _ovm_completions ovm"); |
| 119 | + |
| 120 | + Возврат СтрСоединить(СтрокиСкрипта, Символы.ПС); |
121 | 121 |
|
122 | 122 | КонецФункции |
123 | 123 |
|
124 | 124 | Функция ПолучитьДеревоКоманд() |
125 | 125 |
|
| 126 | + КонсольноеПриложение = Поделка.НайтиЖелудь("КонсольноеПриложение"); |
126 | 127 | КорневаяКоманда = КонсольноеПриложение.ПолучитьКоманду(); |
127 | 128 |
|
128 | 129 | Результат = Новый Массив(); |
|
0 commit comments