PowerShellFar — PowerShell host и автоматизация Far Manager

Здесь можно обсудить ваш любимый плагин.
User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by Px »

Latest post of the previous page:

Если дашь всё в собранном виде+объяснишь что проверять, могу запустить на XP x64 и 7 x64
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by NightRoman »

Px
Большое спасибо. Вот только подготовить и выложить куда-нибудь (или послать?) все смогу только завтра.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by NightRoman »

Px
Может ты не в курсе, но одних плагинов FarNet + PowerShellFar не достаточно,
первый требует .NET 2.0, второй требует PowerShell v2 CTP3. Если у тебя этого
нет, не стоит ставить всю эту кухню только для того, чтобы протестировать. Ну
разве что ты все равно планируешь в перспективе использовать PowerShell.

На семерке-то все уже стоит, конечно, "прямо из коробки", но она-то как раз
пока менее практически интересна, я ее пока не использую. Интересует Vista 64
(в первую очередь, ибо у меня рабочая машина такова), ну или XP 64 на худой
конец.

Спасибо за предложение помочь, но перенапрягать тебя не хочется. Надеюсь,
кто-нибудь еще отликнется. Скажи, готовить ли эту тест-сборку для тебя с учетом
этой дополнительной инфы или лучше подождем.
User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by Px »

.NET 3.5 SP1 у меня стоит, PowerShell в XP x64 не установлен, да, но не думаю, что он будет мне мешать :)
Висты установленной под руками нет, только тестовая семёрка
Ждать/не ждать - как хочешь :)
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by NightRoman »

Px
Прикрепил.

Шаги
- распаковать на х64 машине и запустить Фар из распакованной папки
- нажать F11 - меню плагинов - должно быть 2 пункта .NET и .NET PowerShellFar
- выбрать пункт .NET PowerShellFar

Результат
- если все ок, то появится меню PowerShellFar, что-то около дюжины пунктов (этого мне достаточно знать)
- если не ок, то появится диалог с сообщением "PowerShell engine is not initialized..." и там будут кнопки [View Info] [Copy Info], можно нажать на [Copy Info] и прислать текст сообщения о проблеме, что там в буфер скопируется
- если какое-то иное поведение будет - это тоже интересно, конечно.

EDIT так, аттачмент не прошел, великоват, что ли? Щас подумаю.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by NightRoman »

Px
Послал на адрес, что нашел на твоем сайте. Спасибо заранее.
User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by Px »

XP x64

Code: Select all

╔══════════════ N:\TFar ═══════════════╗╔══════════════ N:\TFar ═══════════19:57
║n      Name       │       Name        ║║n      Name       │       Name        ║
║..                │                   ║║..                │                   ║
║Lib               │                   ║║Lib               │                   ║
║Plugins           │                                       │                   ║
║Plugins.NET       │     ╔══════ PowerShellFar ══════╗     │                   ║
║Far.exe           │     ║  1. Invoke input code...  ║     │                   ║
║Far.exe.config    │     ║  2. Invoke selected code  ║     │                   ║
║FarCze.lng        │     ║  3. Background jobs...    ║     │                   ║
║FarEng.hlf        │     ║  4. Command history...    ║     │                   ║
║FarEng.lng        │     ║  5. Editor console        ║     │                   ║
║FarGer.lng        │     ║  6. Power panel...        ║     │                   ║
║FarRus.hlf        │     ║  7. TabExpansion          ║     │                   ║
║FarRus.lng        │     ║  8. Snap-ins...           ║     │                   ║
║File_id.diz       │     ║  0. Errors...             ║     │                   ║
║                  │     ╟───────────────────────────╢     │                   ║
║                  │     ║  -. User menu...          ║     │                   ║
║                  │     ║  =. User code             ║     │                   ║
║                  │     ╚═══════════════════════════╝     │                   ║
║                  │                                       │                   ║
╟──────────────────┴───────────────────╢╟──────────────────┴───────────────────╢
║..                 Up   05.03.09 19:54║║..                 Up   05.03.09 19:54║
╚═════ 1 849 686 bytes in 9 files ═════╝╚═════ 1 849 686 bytes in 9 files ═════╝
N:\TFar>
1Help   2UserMn 3View   4Edit   5Copy   6RenMov 7MkFold 8Delete 9ConfMn 10Quit
7-ка будет позже, она у меня не основная :)
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by NightRoman »

Px
Спасибо, это уже хорошая новость. Про 7-ку тоже полезно будет знать.

Чертова Виста. Однако появляется слабая надежда, что раз в принципе оно работает на х64, то может и придумаю костыль какой.
User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by Px »

NightRoman wrote:Про 7-ку тоже полезно будет знать.
Поведение аналогичное, даже при запуске без прав администратора
User avatar
Mors
Posts: 6
Joined: Sun 01 Feb, 2009 11:44
Location: Екатеринбург

Re: PowerShellFar — выполнение команд PowerShell в единой сессии

Post by Mors »

NightRoman wrote:Кто-нибудь пробовал запустить всю обычную х86 связку Far + FarNet + PowerShellFar на х64 машине? У меня повершелл не стартует, и я пытаюсь тиранить разработчиков из МС на эту тему (глядишь им еще и Фар приглянется, LOL). Но вдруг простая мысль пришла в голову - может, это только у меня проблемы? Откликнитесь, кто пробовал, или попробуйте, пожалуйста и напишите о любом результате - вдруг да и работает у кого? Ну я еще добавлю, что у меня Виста х64, но результат для любой х64 машины пока важен.
NightRoman wrote: Шаги
- нажать F11 - меню плагинов - должно быть 2 пункта .NET и .NET PowerShellFar
- выбрать пункт .NET PowerShellFar
Проверил на Vista x64 SP1 с установленными:
.NET Framework (из дистрибутива Vista с накаченными апдейтами)
Microsoft Visual C++ 2008 SP1 Redistributable Package x86
Microsoft Visual C++ 2008 SP1 Redistributable Package x64
PowerShell v2 CTP3 x64
Far 2.0.816 x86
FarNet.4.0.4
PowerShellFar.2.0.4

Результат:
Все работает :) , появляется меню PowerShellFar, как в панелях так и в едиторе.

Прилагаю дампы консоли, выполненные при помощи ConMan.
На дампе панелей видно какие плагины стоят, кроме стандартных.
Attachments
ConEmuReqTabs1156.7z
Панели
(1.25 KiB) Downloaded 214 times
ConEmuReqTabs944.7z
Едитор
(1006 Bytes) Downloaded 297 times
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar - PowerShell host и автоматизация Far Manager

Post by NightRoman »

Px и Mors
Спасибо за помощь и за хорошие новости, значит, оно-таки работает в принципе, даже на Висте 64. Буду разбираться со своими проблемами. Сапожник без сапог..
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar - PowerShell host и автоматизация Far Manager

Post by NightRoman »

Супер-макросы и механизм для тестирования Far и плагинов с помощью PowerShell

FarNet 4.0.5 + PowerShellFar 2.0.5 предоставляют работоспособный механизм для тестирования функциональности Far Manager и его плагинов (не только .NET плагинов) с помощью особых PowerShell скриптов (step sequences или, иначе говоря, супер-макросов, то есть сочетаний макросов и скрипт-блоков). Скрупулезность и вариации супер-макросов или тестов зависят только от фантазии их автора. Некоторые ограничения, которые остались, представляются несущественными. Идея механизма – одни шаги запускают что-то, другие эмулируют какие-то действия пользователя, третьи проверяют результат действий и выбрасывают ошибку, если он неверен.

Строго говоря, этот механизм разработан давно и успешно используется для юнит-тестов самой связки FarNet + PowerShellFar. Однако, до последнего времени существовало серьезное ограничение – последовательность операций не могла прерываться модальными элементами, диалогом, например, или модальным редактором. Это обходилось засылкой макроса до запуска чего-то модального и проверкой результатов на выходе из модального режима. Но все равно это было криво, засылаемый макрос был монолитным и внутри самого модального режима тестировать по шагам было нельзя. Поэтому принципиально подход такого тестирования особо не пропагандировался. Теперь это ограничение снято и подход предлагается для продвинутых юнит-тестов интерфейсов и функциональности, на заметку фартиму, в том числе.

В силу специфики реализации (внутренне через меню плагинов) ограничение все еще существует для тех областей, где недоступно меню плагинов (например, Фар меню), но этих областей не так много и они достаточно тривиальны сами по себе, то есть тестировать-то там особо и нечего, в некотором смысле. Впрочем, как и раньше, ограничение легко обходится засылкой макроса перед запуском (для выбора нужного пункта в меню, например).

Чтобы понять, как все работает, лучше всего позапускать и изучить код тестового скрипта Test-Stepper-.ps1. В последней версии в него также добавлены шаги для модальных режимов, например, модальный редактор и два типа модальных диалогов – запускаемый клавиатурно и программно. По умолчанию скрипт запускается в пошаговом режиме, наглядно показывая перед каждым шагом скрипт блок или макрос, который будет выполнен следующим. По умолчанию включена и демка диалога с пользователем – в авто-тестах такого быть не должно, но это вполне возможно в не тестовых супер-макросах. В реально тестовых целях этот скрипт запускается с ключом –Auto – никакой пошаговости, никаких диалогов с пользователем – все тестируется молча и либо отрабатывает, если все ок, либо выбрасывает ошибку.

Организовать эту кухню несколько сложнее, чем просто макросы или просто скрипты, комбинированная и пошаговая специфика программирования заметно сложней линейной. Однако, комбинация макросов и скриптов позволяет гораздо больше, чем они могут порознь. Все детали и нюансы сразу излагать не буду, может, все и так понятно. Пробуйте, спрашивайте. Критикуйте тоже.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar - PowerShell host и автоматизация Far Manager

Post by NightRoman »

Keith Hill, знакомый виртуально по PowerShell сообществу, намедни выпустил бесплатную книгу (PDF), где собрал всякие интересные практические советы. Некоторое время он публиковал их по кусочкам в своем блоге и мне они очень нравились. Теперь они подредактированы и собраны вместе. Книга на английском.
http://keithhill.spaces.live.com/blog/c ... 6930.entry
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar - PowerShell host и автоматизация Far Manager

Post by NightRoman »

В последней версии (2.0.6), как можно видеть из анонса, можно поиграться с точками останова уже с помощью UI, что конечно удобнее, особенно для строковых БП при вызове меню прямо из редактора скрипта. Это первая версия, но джентельменский набор для отладки теперь реализован в полной мере (сам отладчик работает уже давно, но до UI точек останова не доходили руки, был только вспомогательный скрипт).

Кроме обычных точек останова, которые останавливают выполнение и открывают отладчик, в PowerShell есть и «необычные», к которым прикреплен кусок кода (вашего). Они поддерживаются и в PowerShellFar. Когда срабатывает такая точка останова, вместо остановки на самом деле просто вызывается этот код в текущем контексте исполнения. С помощью таких БП можно делать очень интересные вещи, причем, не только в целях отладки и при этом не меняя исходный код.
User avatar
NightRoman
Posts: 6225
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 42 times
Been thanked: 62 times
Contact:

Re: PowerShellFar - PowerShell host и автоматизация Far Manager

Post by NightRoman »

NightRoman wrote:Keith Hill, знакомый виртуально по PowerShell сообществу, намедни выпустил бесплатную книгу (PDF), где собрал всякие интересные практические советы. Некоторое время он публиковал их по кусочкам в своем блоге и мне они очень нравились. Теперь они подредактированы и собраны вместе. Книга на английском.
http://keithhill.spaces.live.com/blog/c ... 6930.entry
Теперь есть и переведенный вариант:
http://windowspowershell.ru/public/posh.pdf
User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: PowerShellFar - PowerShell host и автоматизация Far Manager

Post by Александр Кряжев »

NightRoman wrote:О скриптах для обновления. Если у кого стоит PowerShell, то может заинтересует скрипт Update-FarManager.ps1 из поставки плагина PowerShellFar (для самого скрипта ни плагин PowerShellFar, ни FarNet не нужны, только PowerShell). У него есть, на мой взгляд, некоторые достоинства, простота использования в том числе. Если кому что там не нравится, но в принципе подходит, то могу и доработать, обсуждать прошу в тему плагина PowerShellFar.
Ах да, только для Фар 2.
Что-то у меня не запустилось. :( Пишет:

Code: Select all

PS C:\> Update-FarManager.ps1
The term 'Update-FarManager.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program.
 Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:22
+ Update-FarManager.ps1 <<<<
    + CategoryInfo          : ObjectNotFound: (Update-FarManager.ps1:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException


Suggestion [3,General]: The command Update-FarManager.ps1 was not found, but does exist in the current location. Windows
 PowerShell doesn't load commands from the current location by default. If you trust this command, instead type ".\Updat
e-FarManager.ps1". See "get-help about_Command_Precedence" for more details.
PS C:\>

Фар - маргинальный продукт. (c) zg
Post Reply

Return to “Обсуждение плагинов”