Хотел описать проблему в заголовке, чтобы было понятно, но столкнулся с ограничением по длине.
Собственно ситуация:
Написал утилиту на haskell для работы с api малоизвестного сайта. Все замечательно, но есть две проблемы, которые хотелось бы решить.
- Ключи для api хранить в исходниках, если они открыты не очень хорошо. Как можно красиво и идиоматично подставлять их перед компиляцией? Сейчас я компилирую просто stack build, и мне кажется что писать какой-то внешний скрипт, который будет подставлять ключи в код, а потом уже запускать stack build это ужасный костыль.
- Хочется собирать пакеты для разных дистрибутивов при компиляции сразу. (желательно, конечно по дополнительной опции) Опять же, как это «правильно» делать?
Сейчас build-type: Simple в cabal файле. Я думал сделать custom и написать соответственно код в Setup.hs который все это делает внутри. Но смущает, что нигде нет ни мануалов, ни примеров, ни вообще упоминаний что это будет работать cо stack.
Есть например https://hackage.haskell.org/package/cabal-debian - но это внешняя утилита, как я понял.
Еще есть shake. Его стоит использовать? И если да, то как?
- Как нечто внешнее, что буду использовать в итоге вместо stack test/build/install? Т.е. сначала подставить ключи в шаблоны, потом скомпилировать вызвав stack, а потом собрав пакеты мне нужные?
- Или его можно встроить в Setup.hs?
Во первом случае смущает, что другому человеку будет трудно все скомпилять, увидев велосипед вместо стандартного stack install. Во втором, я вообще не уверен что это возможно так если честно. Иначе почему так никто не делает?
В общем я вижу много вариантов, какие-то из них возможно наивны и/или сложны, но хочется узнать именно как правильно и почему это правильно. Совсем здорово если с ссылками на примеры.