Похоже, что вы на самом деле пытаетесь изменить пользовательскую спецификацию Perforce. Это супер просто. Если вы используете P4Python, у вас есть хороший API для объектов спецификации:
https://www.perforce.com/perforce/r14.2/manuals/p4script/python.p4.html#python.p4.save_spectype
и может делать такие вещи, как:
user = p4.get_user(name)
# do things
p4.save_user(user)
Если вы хотите создавать сценарии без P4Python, базовая командная строка имеет гораздо лучшие параметры, чем попытки сценария в редакторе. Например:
p4 --field Reviews+=//depot/whatever/... user -o NAME | p4 user -i -f
добавит //depot/whatever/...
в конец поля NAME
Reviews
.
Или, если вам не нравится опция --field
, вы можете самостоятельно проанализировать и изменить спецификацию:
p4 user -o NAME | **REGEX MAGIC** | p4 user -i -f
Если вы действительно хотите написать скрипт, например p4 user
, и не использовать API сценариев или удобные -o
/ -i
/ хуки, которые не позволяют вызывать редактор с временным файлом (другими словами, если вы Вы - мазохист-сценарист, ищущий уникальную задачу), лучше всего переопределить P4EDITOR
и указать на сценарий, который вы написали. Какой бы исполняемый файл не был указан P4EDITOR
, будет вызываться с именем временного файла; измененная спецификация будет загружена (из временного файла), как только P4EDITOR
выйдет.