Почему sbt-native-packager создает жестко заданный родительский каталог верхнего уровня в пакетах распространения?

Например, в Archives.scala:

def makeZip(target: File, name: String, mappings: Seq[(File, String)]): File = {
  ...
  val m2 = mappings map { case (f, p) => f -> (name +"/"+p) }

def makeTarball(compressor: File => File, ext: String)(target: File, name: String, mappings: Seq[(File, String)]): File = {
  ...
  val m2 = mappings map { case (f, p) => f -> (rdir / name / p) }

Я пытаюсь понять, почему это дополнительное «имя» каталога должно быть жестко запрограммировано внутри этих функций. В старых дистрибутивах (до sbt-native-packager) я не верю, что этот дополнительный уровень каталогов присутствовал. Мы пытаемся использовать sbt-native-packager для создания некоторых дистрибутивов zip/tgz, в которых этого нет, и на данный момент скопировали и взломали код внутри Archives.scala, чтобы сопоставления: Seq[(File, String) ] соответствуют непосредственно структуре внутри дистрибутивных пакетов, а не дополнительной директории «name», но очевидно, что это не идеально. Возможно, кто-то, знакомый с этим доменом, может пролить свет на это? (@jsuereth, я смотрю на тебя :))


person omnilinguist    schedule 21.11.2013    source источник


Ответы (1)


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

person Community    schedule 14.12.2013
comment
Что ж, я предлагаю, чтобы сохранить универсальность этих функций, а не настраивать это с помощью флага, жесткое кодирование каталога «имя» верхнего уровня должно быть полностью исключено. Я утверждаю, что любой, кто вызывает эту функцию, сочтет тривиальным добавить «имя» в начало всех отображений, если он/она сочтет нужным. Ты согласен? - person omnilinguist; 14.12.2013
comment
Но просто из любопытства, о каких ожиданиях вы говорите? Как указывалось выше, система упаковки pre-(sbt-native-packager) не включала эти каталоги «имя» верхнего уровня, поэтому я не уверен, что может быть целью этого. - person omnilinguist; 14.12.2013
comment
Да, это ожидания от, например. скачиваем tar.gz. файл некоторого программного обеспечения OSS linux-y. Почти любой дистрибутив программного обеспечения, которое вы загружаете, находится в именованном каталоге в zip-архиве, поэтому мы сделали это таким образом, чтобы вам было удобно. Это не ожидания от игрового сообщества. Я считаю, что нативный упаковщик пытается сделать сообщество JVM более совместимым с внешним миром. Тем не менее, это должно быть полностью настраиваемым. Если вы откроете ошибку, я доберусь до нее, когда смогу. Извините, если это вызвало путаницу/проблемы. - person jsuereth; 16.12.2013