исправлены находки ревью проектной стороны

- манифест читается так, как записан: решётка внутри строки не открывает
  комментарий, скобка внутри комментария не закрывает массив, имя внутри
  комментария не становится подпиской; новый ключ встаёт после массива,
  а не внутрь него
- всё записываемое проходит через manifest.Quote — обратный слэш в пути
  делал файл, который инструмент сам не читает
- маркер локальной части переехал в doc и пропускает огороженные блоки:
  процитированный в примере маркер больше не считается границей, а копия
  без маркера не перезаписывается молча
- лишний позиционный аргумент отсекается: flag прекращал разбор и прятал
  флаги после себя, из-за чего pull, list и check игнорировали --for
- заведены тесты проверок копий, включая молчание на исправной копии
This commit is contained in:
av
2026-07-27 21:16:29 +03:00
parent 23d88c4048
commit b6b0976c19
19 changed files with 904 additions and 197 deletions
+6 -10
View File
@@ -41,12 +41,9 @@ func runAdd(env Env, args []string) ExitCode {
}
topic = *topicFlag
}
if rest := fs.Args(); len(rest) > 0 {
if topic != "" && topic != rest[0] {
fmt.Fprintf(env.Err, "the topic is named twice and differently: %q and %q\n", topic, rest[0])
return Usage
}
topic = rest[0]
if left := fs.Args(); len(left) > 0 {
fmt.Fprintf(env.Err, "convy add takes one topic, and %q came after it as well\n", left[0])
return Usage
}
o, code := openProject(env, *root)
@@ -70,12 +67,11 @@ func runAdd(env Env, args []string) ExitCode {
fmt.Fprintln(env.Err, "convy add without arguments asks which topic, and there is no terminal to ask on; name the topic as an argument")
return Usage
}
answer, err := newDialogue(env).ask(topicField(o, c))
if err != nil {
fmt.Fprintln(env.Err, "\ninterrupted, nothing was written")
given := map[string]string{}
if err := askAll(env, []Field{topicField(o, c)}, given); err != nil {
return Usage
}
topic = answer
topic = given["topic"]
}
if !o.Suite.Manifest.TopicLive(topic) {