Import environment — загрузка *.env файлов

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Import environment — загрузка *.env файлов

Post by John Doe »

Функции скрипта

  • Запуск из командной строки по префиксу env:.
    Рекомендуется назначить ассоциацию на *.env.
  • При загрузке макросов, может автоматически загружать файл autoload.env из
    пользовательской директории (см.)
  • Макрос, позволяющий выбрать файл для импорта из списка.
    Файлы читаются из пользовательской директории.
    Клавиатурную комбинацию для вызова нужно определить через опцию macrokey
    (по умолчанию не задана).

Пользовательская директория

По умолчанию:
  • Windows: %FARPROFILE%\.env
  • Linux (far2m): far.InMyConfig(".env")
Если эта директория отсутствует, то ищется директория .env рядом со скриптом.

Значение может быть переопределено через опцию envdir
(поддерживается cfgscript/ScriptsBrowser).

Командная строка

  • env:file.env
    Импорт окружения из заданного файла.
  • env:directory
    Чтение списка *.env-файлов из заданной директории,
    и выбор файла для импорта из списка.
  • env:/envdir
    Чтение списка *.env-файлов из пользовательской директории,
    и выбор файла для импорта из списка.
  • env:<command
    Запуск команды и импорт изменений из её окружения.
  • env:
    При запуске без параметров выводится эта справка.
Примечания:
  • При запуске через префикс имя файла/директории ожидаются без кавычек.
  • Возможен также запуск без установки:
    • lua:@impenv.lua "file.env".
    • Аналогично через LuaShell.

      Внимание: в этом случае использование кавычек обязательно.
      При необходимости указания символа <, он также помещается внутрь кавычек:
      lua:@impenv.lua "<command"

Формат *.env файлов

Code: Select all

#comment
var=value


Скачать: https://gist.github.com/johnd0e/252e6a3 ... e/main.zip
Last edited by John Doe on Tue 20 Aug, 2024 20:58, edited 2 times in total.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Import environment — загрузка *.env файлов

Post by John Doe »

v0.2
  • Исправлены ошибки
  • Поддержка far2m
Спасибо @Shmuel
https://t.me/FarManager — Telegram чат
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Import environment — загрузка *.env файлов

Post by Yegor »

Я хотел было уже писать плагин для этого, но раз уж вы это частично сделали на lua, хочу запросить пару дополнений:
  1. Сделать возможность добавлять переменные окружения через запуск внешней команды или утилиты:
Формат: env:<command

Например:

env:<mkvirtualenv test -> Навеяно, viewtopic.php?p=176009

или

env:<vcvars32.bat -> Для порграммистов на C++ и Visual Studio

или

env:<set PATH=%PATH%;C:\Python312 -> просто изменить переменную окружения
  1. Но и нужен способ приведения переменных окружения к начальному состоянию, т.е. удаление всех переменных окружения, которые были добавлены через макрос:
Формат: env:/clear или env:/reset

Реализация:

Самый простой способ это сделать под виндой, это запустить команду:

cmd /c "<command> & set >%TEMP%\newset.env"

и применить переменные окружения из %TEMP%\newset.env
Last edited by Yegor on Wed 21 Aug, 2024 02:20, edited 1 time in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

Import environment — загрузка *.env файлов

Post by gotar »

а где то был скрипт, который выполняет .bat а затем импортирует результирующие переменные окружения в текущий экземпляр far. не могу найти
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Import environment — загрузка *.env файлов

Post by Yegor »

Написать не проблема, идея иметь один инструмент для работы с переменными окружения
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
gotar
Posts: 519
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 31 times
Been thanked: 3 times

Import environment — загрузка *.env файлов

Post by gotar »

один не получится. уже здесь несколько макросов/плагинов для переменных окружения, формируемых .bat файлами.
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Import environment — загрузка *.env файлов

Post by Yegor »

В этой теме мы обсуждаем конкретно реализацию Import environment и его работу с переменными окружения. Какие еще и где есть другие макросы и плагины для работы с переменными, к этой теме не совсем относятся.
Мне, лично, понравился конкретно этот подход, но для меня не хватает пару, на мой взгляд, очень полезных дополнений, поэтому их описал. Если автор решит, что им не место в этом инструменте, я буду довольствоваться тем что есть и/или использовать другие средства, или все-таки напишу свою версию.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Import environment — загрузка *.env файлов

Post by John Doe »

Yegor wrote: Wed 21 Aug, 2024 02:18 Самый простой способ это сделать под виндой, это запустить команду:

Code: Select all

cmd /c "<command> & set >%TEMP%\newset.env"
и применить переменные окружения из %TEMP%\newset.env
Создал test.cmd следующего содержания:

Code: Select all

set test=test!
Запускаю:

Code: Select all

> cmd/ctest.cmd & set test

Environment variable test not defined
Что не так?
https://t.me/FarManager — Telegram чат
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Import environment — загрузка *.env файлов

Post by Yegor »

cmd /c "test.cmd & set test" (quotes are important)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

Import environment — загрузка *.env файлов

Post by Shmuel »

Yegor wrote: Wed 21 Aug, 2024 02:18 Реализация:

Самый простой способ это сделать под виндой, это запустить команду:

cmd /c "<command> & set >%TEMP%\newset.env"

и применить переменные окружения из %TEMP%\newset.env
Примерно это сделано в FarCall Lua edition.
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Import environment — загрузка *.env файлов

Post by Yegor »

Shmuel wrote: Wed 21 Aug, 2024 21:19 Примерно это сделано в FarCall Lua edition.
Не спорю, что это уже есть в каком-то виде (там кстати только bat/cmd файлы поддерживаются). Но мне понравился этот инструмент и если его расширят, он заменит и FarCall и многие другие наработки.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Import environment — загрузка *.env файлов

Post by John Doe »

Обнаружились непредвиденные нюансы.
У меня far 32-битный, и при запуске cmd-файла окружение несколько отличается.

Code: Select all

CommonProgramFiles
C:\Program Files (x86)\Common Files
C:\Program Files\Common Files

PROCESSOR_ARCHITECTURE
x86
AMD64

ProgramFiles=
C:\Program Files (x86)
C:\Program Files

PROMPT
nil
$P$G
https://t.me/FarManager — Telegram чат
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Import environment — загрузка *.env файлов

Post by Yegor »

Что скажете, если сделать список исключений?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Import environment — загрузка *.env файлов

Post by John Doe »

Проверяйте. Особенно интересно как в Linux.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7246
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

Import environment — загрузка *.env файлов

Post by Shmuel »

C:\Today>env:<1.bat
'1.bat' is not recognized as an internal or external command,
operable program or batch file.

Я что-то делаю не так?

P.S. Надо в скрипте вызывать far.ConvertPath, тогда сработает.
Last edited by Shmuel on Thu 22 Aug, 2024 16:19, edited 1 time in total.
Post Reply

Return to “Обсуждение макросов”