@gogolang

Страница 1117 из 1630
Dmitry
01.06.2018
15:55:32
это ж есть в os.Args()
типизации нет

Илья
01.06.2018
15:56:38
эмм

так ее и не будет, как вы представляете себе типизацию для проивзольных строк?

https://github.com/spf13/cobra#positional-and-custom-arguments

Google
Илья
01.06.2018
15:57:30
все принимается как строка, дальше типизируйте как хотите, это же делает стандартный NArgs

Aleksandr
01.06.2018
15:58:18
так ее и не будет, как вы представляете себе типизацию для проивзольных строк?
так стандартные флаги и все остальные либы приводят строку к нужному типу. ему это нужно

Dmitry
01.06.2018
15:58:28
как я представляю? выдает ошибки так же если попытаться загнать не тот тип в именованые флаги

Илья
01.06.2018
15:59:16
эм, там именованый параметр f=1 который хелпером можно привести к нужному типу, а нужно получить произвольную неименованые строки, которые как-то валидировать

Dmitry
01.06.2018
15:59:29
так стандартные флаги и все остальные либы приводят строку к нужному типу. ему это нужно
да. я конечно понимаю что это фигня. но писать велосипед для парсинга позиционых параметров в 21-м веке это отвратительно

эм, там именованый параметр f=1 который хелпером можно привести к нужному типу, а нужно получить произвольную неименованые строки, которые как-то валидировать
ну нет никакой разницы в типизации именованых и позиционных параметров технически. что там что там - строки передаваемые и приводимые к нужному типу

Kirill
01.06.2018
16:02:56
а как ты приплёл к чистым os.Args пакет flag? O_o

или я чего-то не помню?

Dmitry
01.06.2018
16:03:45
flag не содержит нужной мне функциональности

Kirill
01.06.2018
16:03:59
воот

я и пытаюсь понять

Dmitry
01.06.2018
16:04:05
os содержит но в зачаточном виде

Google
Kirill
01.06.2018
16:04:40
это сбило с толку %)

Dmitry
01.06.2018
16:04:56
ну я и спрашиваю либу которая делает тоже самое что и flag , только умеет еще дополнительно в позционные параметры

Kirill
01.06.2018
16:05:14
а есть пример того, какая валидация тебе нужна?

Илья
01.06.2018
16:05:51
вам argparse нужен? типо как в пейтоне?

Dmitry
01.06.2018
16:06:09
Илья
01.06.2018
16:06:12
https://github.com/avelino/awesome-go#command-line

кто-то уже пробовал форкать, но я сам не трогал

Dmitry
01.06.2018
16:06:35
Kirill
01.06.2018
16:07:01
учусгеу? :D

type учусгеу interface{}? :D

https://github.com/akamensky/argparse в такое не умеет, случаем?

Dmitry
01.06.2018
16:11:05
https://github.com/akamensky/argparse в такое не умеет, случаем?
по документации неясно, но вроде клон https://github.com/clagraff/argparse умеет

ну тоесть как я понимаю все распространенные пакеты не умеют в позиционные параметры и проще запилить свой велосипед чем тащить в проект однозвездочный пакет

Илья
01.06.2018
16:18:55
Видимо, не самый распространенный кейс, куча неименованных типизированных параметров

Jentry
01.06.2018
16:20:02
имхо, если требуется что-то сложней, чем предоставляет flag, то уже нужно брать viper и конфиги в файлах

Kirill
01.06.2018
16:20:23
Или кобру

Ибо иногда хочется servicename stats -h -a

Dmitry
01.06.2018
16:27:26
запилю пожалуй пакет для парсинга позиционных параметров онли

чувствую взлетит

The
01.06.2018
16:33:56
а в go есть оптимизация хвостовой рекурсии?

Google
The
01.06.2018
16:35:30
а, кажется есть

Илья
01.06.2018
16:37:22
Нет

Kirill
01.06.2018
16:43:19
а, кажется есть
https://github.com/golang/go/issues/15304

The
01.06.2018
16:43:58
я сначала на эту статью наткнулся

https://medium.com/@felipedutratine/iterative-vs-recursive-vs-tail-recursive-in-golang-c196ca5fd489

там товарищ утверждал что есть

Maksim (Ellrion)
01.06.2018
16:47:39
Ибо иногда хочется servicename stats -h -a
subCmd := flag.Args()[0] args := flag.NewFlagSet... args.Parse(flag.Args()[1:])

Maksim (Ellrion)
01.06.2018
16:52:53
Ужас
Аргументированно)

Dmitry
01.06.2018
16:54:12
Аргументированно)
Попробуй два разных набора флагов для двух разных субкоманд

Maksim (Ellrion)
01.06.2018
16:56:01
Попробуй два разных набора флагов для двух разных субкоманд
Изи. Взял подкоманду по мапе или кейсу выбрал функцию запускающую ее. Там и создание флагсета

Dmitry
01.06.2018
17:01:13
Изи. Взял подкоманду по мапе или кейсу выбрал функцию запускающую ее. Там и создание флагсета
Окей, завелосипедить можно все. Зачем тебе flags фообще, сделал мапу и функции

Maksim (Ellrion)
01.06.2018
17:03:39
Окей, завелосипедить можно все. Зачем тебе flags фообще, сделал мапу и функции
Причем тут велосипед? Это стандартная либа. Пара ее простых функций. Они же выполняются и в пакете под капотом, только для дефолтно созданного флагсета. Ляпнул свой "ужас" в пустоту а аргументов 0

Maksim (Ellrion)
01.06.2018
17:12:57
Что я тут переизобрел? Я использовал просто методы стандартной библиотеки. Но видимо я должен был вместо этого тянуть чей то левый пакет. Ага)

Kirill
01.06.2018
17:17:05
subCmd := flag.Args()[0] args := flag.NewFlagSet... args.Parse(flag.Args()[1:])
Ну его в баню. Строить полутораколесные велосипеды с треугольными неравносторонними колёсами из костылей - ну его

Dmitry
01.06.2018
17:19:59
Maksim (Ellrion)
01.06.2018
17:20:50
Окей напиши usage для твоего случая. А теперь посмотри сколько строчек Тебе понадобилось на все
Он автосгенерится так же как и при наборе флагов без подкоманды

Для каждой подкоманды будет стандартный -h

Google
Maksim (Ellrion)
01.06.2018
17:24:04
Ладно я вам доказывать ничего особо не хочу. В го есть стандартные средства я их хотел показать и помочь с быстрым решением без монстров типа кобры. только и всего.

Pawel
01.06.2018
17:55:19
Кто нибудь задавался вопросом - как повесить json-rpc server на вебсокет горилки? Вот умный мужик предлагет https://github.com/powerman/rpc-codec/issues/16#issuecomment-287952309 Интересует практический аспект - насколько этот код prod ready или там есть не очевидные грабли/косяки?

как то сложно там всё. Вот думаю - а не лучше ли забить не вебсокеты и сделать по старинке на хттп?

Dmitry
01.06.2018
18:17:53
я его юзал для первых пет проджектов
а https://github.com/alexflint/go-arg использовал? звездочки зашкаливают, на вид простой как две копейки. для простых скриптиков мне кажется самое то

Admin
ERROR: S client not available

Илья
01.06.2018
18:36:50
Я давно не делал сложных cli, для простого flags хватает за глаза

Dmitry
01.06.2018
18:57:10
Slava
01.06.2018
20:40:34
у меня есть небольшой враппер который генерит флаги для стандартного flags на основе структур

https://github.com/octago/sflags

Мерлин
01.06.2018
20:57:13
https://github.com/octago/sflags
Какая интересная штука, я как раз подумывал начать писать свой велосипед для этого

Alexander
01.06.2018
22:31:10
https://github.com/octago/sflags
Полезно, спасибо! ?

Kirill
01.06.2018
22:32:38
https://github.com/octago/sflags
напоминай об этом народу чаще)

Александр
02.06.2018
04:30:31
чо тут?

Dmitry
02.06.2018
07:46:06
https://github.com/octago/sflags
извини, я тупой и не пойму зачем этот пакет нужен. для поддержки структур как определения аргументов для любой библиотеки что не поддерживает структуры ? а зачем если можно взять библиотеку что поддерживает структуры ?

Daniel
02.06.2018
07:55:46
это кодогенератор

у вас есть структура конфига, и вы нарисовали ей тегов

можете позвать этот кодогенератор, он наделает инициализации для flags (можно и для других парсеров)

это всего-навсего чтобы не писать к своей структуре flag-инициализацию руками (и не править ее при изменении структуры)

Google
Dmitry
02.06.2018
08:14:03
это кодогенератор
кодогенератор? насколько я вижу это враппер.

с одной стороны интересно, с другой лишний слой абстракции

Daniel
02.06.2018
08:17:17
э, нет

тут нет никакой абстракции вообще

тут только собраны в одно место вещи, которые обычно в разных лежат

Dmitry
02.06.2018
08:22:22
тут только собраны в одно место вещи, которые обычно в разных лежат
я пытаююсь все таки понять чем это лучше чем скажем https://github.com/jessevdk/go-flags ?

в чем профит брать sflags + стандартный flag , а не сразу брать другую либу уже понимающую структуры ?

Daniel
02.06.2018
08:23:31
если прям вот нуны преймущества - "это" поддерживает больше одного парсера аргументов

Daniel
02.06.2018
08:25:00
коллега, я лучше пойду позавтракаю

Dmitry
02.06.2018
08:25:16
да пожалуйста

если прям вот нуны преймущества - "это" поддерживает больше одного парсера аргументов
окей, я вижу что это может считаться преимуществом если в процессе разработки обнаружится что текущий парсер не поддерживает хотелки. Хотя возникает вопрос - а sflags то будет поддерживать эти хотелки ?

просто возможность смены парсера без определенной цели в процессе разработки.. ну это по меньшей мере нелогично

Michael
02.06.2018
08:30:31
кто-то Qt под Android собирал?)

с обвязкой для Go

Dmitry
02.06.2018
08:32:26
да я вижу полезность если это действительно кодогенератор, тоесть сгенеренный код может использоваться и без sflags , но нет же.. sflags враппер, и приложения должны запускать его каждый раз

Kirill
02.06.2018
08:48:09
Что ты пытаешься сделать?

Страница 1117 из 1630