Лучший интерфейс командной строки - PullRequest
0 голосов
/ 26 апреля 2011

Я разработал приложение, которое кэширует несколько пакетов. Интерфейс CLI для этого приложения выглядит следующим образом

submit -z pkg1.zip -c pkgChecksum1 -t pkgType1 -s pkgSize1 -z pkg2.zip -c pkgChecksum2 -t pkgType2 -s pkgSize2 

Таким образом, это отправляет 2 пакета pkg1.zip и pkg2.zip, которые имеют контрольную сумму pkgChecksum1 и pkgChecksum2 соответственно, тип пакета как pkgType1 и pkgType2, а размер как pkgSize1 и pkgSize2 соответственно.

Мы также предоставляем приложению входные данные на основе XML:

submit --script an.xml

, где an.xml -

<?xml version="1.0" encoding="ISO-8859-1"?>
<packages>
<package name="pkg1.zip" checksum="pkgChecksum1" type="pkgType1" size="pkgSize1" />
<package name="pkg2.zip" checksum="pkgChecksum2" type="pkgType2" size="pkgSize2" />
</packages>

Это функциональный эквивалент первого метода CLI.

Мы планировали сделать это более удобным для пользователя, есть идеи по улучшению?

Ответы [ 4 ]

2 голосов
/ 26 апреля 2011

Требуются ли все опции?Или есть значения по умолчанию для типа, размера и контрольной суммы?Если по умолчанию нет, вы можете избавиться от тегов и просто потребовать аргументы в группах по четыре.

submit pkg1.zip pkg1Cksum pkg1type pkg1sz pkg2.zip pkg2Cksum pkg2type pkg2sz 

Другой вариант в этом случае - использовать теги, но запрашивать у пользователя пропущенные значения.

Если имеются значения по умолчанию (можно ли рассчитать контрольную сумму и размер автоматически?), Разрешите выборочные переопределения:

submit pkg1.zip -t pkg1type pkg2.zip -t pkg2type -s pkg2szOverride

Еще одна полезная опция - -a existingCache, которая добавляет ксуществующий файл (или создающий его, если его нет).Это позволило бы пользователю разбить его на несколько управляемых командных строк

   submit -a mycache pkg1.zip -t pkg1type -s pkg1sz
   submit -a mycache pkg2.zip -t pkg2type -s pkg2sz

Еще одна опция, основанная на комментариях:

  submit -x pkg1.zip:2034 0x232D -y pkg2.zip pkg3.zip:123

, где -x, -y и т. Д. Являются флагамидля разных поддерживаемых «типов».Таким образом, эта строка отправляет pkg1 с размером 2034, типом X и контрольной суммой;pkg2 типа y, без указания размера или контрольной суммы;и pkg3 размером 123 без указания типа или контрольной суммы.

0 голосов
/ 27 апреля 2011

Другой вариант, который мне приходит в голову:

submit pkg1.zip:type:2034:0x232D     pkg2.zip:type2:2034:0x232D

Я думаю, что проблема в том, что submit может управлять несколькими параметрами для каждого параметра, поэтому добавление каждого из них одновременно может упростить интерфейс.Помнить тип, размер и chksum для каждого не должно быть трудным.Ведь кажется, что все параметры обязательны.Таким образом, невозможно связать опции для одного пакета с вариантами для другого.

0 голосов
/ 26 апреля 2011

Трудно сказать, что ты должен делать.Это зависит от того, кто является целевой аудиторией вашего приложения.Два возможных варианта:

  1. Интерфейс GUI, для пользователей, которые не знают / боятся использовать CLI
  2. Интерактивный CLI, подобный этому:
Package name:
> pkg1.zip
Checksum:
> pkgChecksum1
Type:
pkgType1
0 голосов
/ 26 апреля 2011

Вы должны предоставить длинные опции вместе с короткой опцией для различных параметров в CLI.Например

submit --package pkg1.zip --checksum pkgChecksum1 --type pkgType1 --size pkgSize1 --package  pkg2.zip -checksum pkgChecksum2 --type pkgType2 --size pkgSize2
...