ChanServ changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.29.0 | Fund Crystal's development: http://is.gd/X7PRtI | GH: https://github.com/crystal-lang/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Gitter: https://gitter.im/crystal-lang/crystal
<FromGitter> <watzon> Libgen can't be used on C files huh? Only headers?
<FromGitter> <watzon> That's unfortunate when I have a library with no header files
<FromGitter> <tenebrousedge> can you generate the header?
<FromGitter> <watzon> Just tried using makeheaders, but the output header isn't complete for some reason. Doesn't include `#includes` or other things that are necessary.
<FromGitter> <tenebrousedge> this page seems to imply that it can do that ⏎ https://www.hwaci.com/sw/mkhdr/makeheaders.html
<FromGitter> <watzon> I tried. For some reason it's not, and it doesn't have any flags
alex``` has quit [Ping timeout: 258 seconds]
alex``` has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
alex``` has quit [Ping timeout: 272 seconds]
alex``` has joined #crystal-lang
<FromGitter> <sam0x17> is anyone familiar with overriding the default startup message in Kemal? I found https://github.com/kemalcr/kemal/pull/291 however doing `Kemal.run { "custom message" }` does not override the default startup message
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
_whitelogger has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
<FromGitter> <watzon> @sam0x17 what is the default message?
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
wymillerlinux_ has joined #crystal-lang
wymillerlinux has quit [Ping timeout: 248 seconds]
wymillerlinux_ is now known as wymillerlinux
<Groogy> Morning! o/
ashirase has quit [Ping timeout: 246 seconds]
<FromGitter> <bew> Hi Groogy! o/
ashirase has joined #crystal-lang
rohitpaulk has joined #crystal-lang
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
blassin has quit [Quit: The Lounge - https://thelounge.chat]
blassin has joined #crystal-lang
alex``` has quit [Ping timeout: 268 seconds]
alex``` has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 272 seconds]
rohitpaulk has joined #crystal-lang
<FromGitter> <Blacksmoke16> @sam0x17 try overloading https://github.com/kemalcr/kemal/blob/master/src/kemal.cr#L68-L71
rohitpaulk has quit [Ping timeout: 258 seconds]
lucasb has joined #crystal-lang
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
rohitpaulk has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 246 seconds]
wymillerlinux has quit [Read error: Connection reset by peer]
wymillerlinux has joined #crystal-lang
laaron has quit [Quit: ZNC 1.7.1 - https://znc.in]
laaron has joined #crystal-lang
<alex```> is there a method to list all directories directly?
<alex```> or I have to .select and test whether the entry is a dir
<FromGitter> <Blacksmoke16> recursively?
<alex```> yes
<alex```> starting non recursively is fine to start too
<alex```> I want to implement specs by using files
<FromGitter> <Blacksmoke16> hm?
<alex```> example/{command,stdin,stdout}
<alex```> to test usage of a program
<FromGitter> <Blacksmoke16> i.e. `spec/command_spec.cr` etc?
rohitpaulk has joined #crystal-lang
<alex```> spec/batch_spec.cr, running all tests 'map/', 'editor/', etc.
<alex```> each directory contains a 'command', 'stdin', 'stdout' file
<FromGitter> <Blacksmoke16> `crystal spec` already runs all specs under `spec/` tho?
<alex```> yes but my tests are not Crystal specs
<alex```> let me show you an example
<alex```> something similar to it
<alex```> I have a shell script to run the tests but maybe a crystal impl could help to only care about the tests themselves
<alex```> it looks like this in shell
<FromGitter> <Blacksmoke16> so like running your code then this asserts it did what it was supposed to?
<alex```> yes
<FromGitter> <Blacksmoke16> hm
<alex```> crystal impl could be more terse because I don’t have to deal with colored output, count failures, etc.
<FromGitter> <Blacksmoke16> whats your thing do? that would prob help
<alex```> it collects directories, then in a loop, cd into it, test if whether the directory hold a valid test (contains stdin, stdout files), then run the test using ./batch < stdin > stdout; if stdout != expectation, it is an error
<FromGitter> <Blacksmoke16> i mean your actual code that this tets
<FromGitter> <Blacksmoke16> still dont know what it does
<FromGitter> <Blacksmoke16> like rename a bunch of files or?
<alex```> yep
<FromGitter> <Blacksmoke16> could you use the tmp dir
<FromGitter> <Blacksmoke16> setup the files, run your spec, clear the files
<FromGitter> <Blacksmoke16> could have a method that does it, yields to your block, then cleans up
<FromGitter> <Blacksmoke16> something like
<FromGitter> <Blacksmoke16> ``````
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfbdfb3f3a60a79a476de83]
<alex```> it looks like this black https://asciinema.org/a/nK6uAOaeTuz4KQApDn7WMs3UN
<FromGitter> <Blacksmoke16> neat
siery has joined #crystal-lang
laaron has quit [Remote host closed the connection]
laaron has joined #crystal-lang
<FromGitter> <nsuchy> Neat little setup script I wrote for quickly bootstrapping a Crystal Development Environment ⏎ https://gitlab.lunorian.is/nsuchy/crdevsetupscript/tree/master
<FromGitter> <nsuchy> I work with temporary VMs to debug and write apps to avoid whatever I was last working on from affecting my new app (e.g. broken database/etc configs, env vars, etc), doing all the stuff by hand is a lot of googling each time around, this script takes less than 2 minutes to prepare everything
<FromGitter> <nsuchy> working on integrations with Hetzner Cloud next
<FromGitter> <nsuchy> So it can automatically create a virtual machine and ssh you into an environment after the script does the install
lucasb has quit [Quit: Connection closed for inactivity]
<FromGitter> <sam0x17> @Blacksmoke16 is there a way I could "monkey-patch" that method? I need to replace the "Kemal is ready to lead" part
<FromGitter> <Blacksmoke16> thats what i said
<FromGitter> <sam0x17> oh cool didn't know crystal could do that
<FromGitter> <Blacksmoke16> like just do
<FromGitter> <Blacksmoke16> ``` def Kemal.display_startup_message(config, server) ⏎ end``` [https://gitter.im/crystal-lang/crystal?at=5cfbf05a3dcdab4003109c9c]
<FromGitter> <Blacksmoke16> that should work
<FromGitter> <sam0x17> oh wow nice kk thx
<FromGitter> <Blacksmoke16> ofc do it after requireing kemal
<FromGitter> <sam0x17> thanks that worked!
<FromGitter> <Blacksmoke16> np
<FromGitter> <j8r> why does Crystal need g++?
<FromGitter> <j8r> the compiler
<FromGitter> <j8r> hum that's to do `g++ -c -o src/llvm/ext/llvm_ext.o src/llvm/ext/llvm_ext.cc -I/usr/lib/llvm5/include -Os -fomit-frame-pointer -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++1y -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -ffunction-sections -fdata-sections -Os
<FromGitter> ... -fomit-frame-pointer -Os -DNDEBUG -fno-exceptions -DLLVM_BUILD_GLOBAL_ISEL -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS`
laaron has quit [Remote host closed the connection]
<FromGitter> <vladfaust> Can anyone explain why this line (https://github.com/onyxframework/http/pull/80/files#diff-755b21aa037a89b43e39e21d8de6bc4dR2) broke on 0.29 release? Literally the same code fails with "can't find file" on switching from 0.28.0 to 0.29.0?
laaron has joined #crystal-lang
<FromGitter> <j8r> due to https://github.com/crystal-lang/crystal/pull/7582 @vladfaust
<FromGitter> <j8r> nvm, wrong line
<FromGitter> <vladfaust> Yep, wrong one
<FromGitter> <j8r> you should avoid backward requires BTW
<FromGitter> <j8r> harder to know which module depends on which one, this can even easily lead to circle dependence
<FromGitter> <vladfaust> Never been a problem for me
<FromGitter> <vladfaust> That's a mystery then
<FromGitter> <j8r> that's harder for people to figure out the project tree if everything depends on everything
<FromGitter> <j8r> I guess that was a bug
<FromGitter> <vladfaust> It worked on 0.28.0
<FromGitter> <j8r> but it was not a correct path? there is no `view` in `ext`
<FromGitter> <vladfaust> Wow, nice catch, @j8r. Thank you!
<alex```> Dir.entries can remove "." and ".."?
<FromGitter> <Blacksmoke16> Probably does automatically iirc
<alex```> nope
<alex```> it includes "." and ".."
<FromGitter> <Blacksmoke16> https://crystal-lang.org/api/master/Dir.html#each_child%28%26block%29%3ANil-instance-method
<FromGitter> <Blacksmoke16> this one does
<FromGitter> <Blacksmoke16> https://crystal-lang.org/api/master/Dir.html#children%3AArray%28String%29-instance-method
<FromGitter> <Blacksmoke16> so does this one
<FromGitter> <bew> alex, try `Dir.childs` or `each_child` i don't remember
<FromGitter> <bew> Or `Dir.children` (not childs ^^)
<FromGitter> <bew> Yeah that one https://crystal-lang.org/api/0.29.0/Dir.html#children%3AArray%28String%29-instance-method
<alex```> maybe Dir.glob("*") to ignore dotfiles?
<FromGitter> <bew> Gnn didn't see you msgs @Maroo-b
<FromGitter> <bew> Grr @Blacksmoke16
<FromGitter> <Blacksmoke16> :p
<FromGitter> <bew> Gitter.... Android.
<FromGitter> <bew> ...
<FromGitter> <bew> -_-
<FromGitter> <alexherbo2> is there something more terse but still readable than
<FromGitter> <alexherbo2> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfbfd2afaac643934616484]
<FromGitter> <alexherbo2> I have some default arg, and pass extra arguments from examples/test-name/arguments.json, and pass to Process.run
<alex```> the whole file looks like this : https://gist.github.com/3733e52b4612f803a9e9793413abc5b3
rohitpaulk has quit [Ping timeout: 244 seconds]
<FromGitter> <Blacksmoke16> hmm
<FromGitter> <Blacksmoke16> i mean could just do `arguments = Array(String).from_json(File.read("arguments.json")) + ["--no-confirm", "--editor", %(cp file "${@}")]`?
<FromGitter> <Blacksmoke16> and drop default/extra args
<FromGitter> <Blacksmoke16> or even save default args to a const
<FromGitter> <vladfaust> Hey, Onyx::SQL is broken on 0.29.0. See https://github.com/onyxframework/sql/issues/106. Any clues?
<FromGitter> <nsuchy> @vladfaust Happened with Granite too
<FromGitter> <nsuchy> The JSON serializer had a change that broke things
<FromGitter> <nsuchy> Something like https://github.com/amberframework/granite/issues/337#issuecomment-499577411 probably happened
<FromGitter> <vladfaust> Thanks, @nsuchy
<FromGitter> <Blacksmoke16> @vladfaust you have to make sure you define all initializers at the same level, otherwise the initializers of the subclass will override those of the parent.
<FromGitter> <vladfaust> But it's `protected`...
<FromGitter> <Blacksmoke16> :shrug:
<FromGitter> <vladfaust> Well, it's broken. Hope someone would come with a simple solution then
<FromGitter> <Blacksmoke16> 😬
<FromGitter> <nsuchy> @vladfaust I don't think there is one, the change makes sense from a technical standpoint, but I'd opt for a warning rather than breaking the constructors
<FromGitter> <nsuchy> A bunch of stuff is broken right now without a patch
<FromGitter> <Blacksmoke16> indeed, granite serialization is broken, since apparently it was implemented on the basis of a bug
<FromGitter> <vladfaust> I'll wait for what granite comes to then
<FromGitter> <Blacksmoke16> i dont know how to fix it
<FromGitter> <Blacksmoke16> managed a workaround using the mapping macros, but then something caused invalid memory access
<FromGitter> <nsuchy> Team at Ulayer is at a loss
<FromGitter> <nsuchy> (to be fair, we're fairly new to crystal ecosystem)
<FromGitter> <Blacksmoke16> @vladfaust you know it better than i do, but try defining all your intializers within a like macro included
<FromGitter> <vladfaust> That's not modular
<FromGitter> <Blacksmoke16> i mean just to see if that fixes it
<FromGitter> <Blacksmoke16> as thats what is going on, a level lower defines a diff initializer which overrides the parent
<FromGitter> <Blacksmoke16> could also just redefine the initializers on the lower level and just call super
<FromGitter> <Blacksmoke16> that would prob do it as well
<FromGitter> <vladfaust> But I do need both initializers
<FromGitter> <vladfaust> Damn
<FromGitter> <Blacksmoke16> all specs passed after i moved ` include Onyx::SQL::Serializable` to outside the macro included
<FromGitter> <Blacksmoke16> :shrug:/
<FromGitter> <vladfaust> Nope, try running db specs
<FromGitter> <vladfaust> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfc13d0702b7e5e7650af8a]
<FromGitter> <vladfaust> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfc13e4cea82952791635d3]
<FromGitter> <vladfaust> It's a module and module inclusion doesn't include static methods
<FromGitter> <vladfaust> And `Serializable`'s `macro included` is not run if moving `Serializable` away from `macro included` in `Model`
<FromGitter> <Blacksmoke16> hmm
<FromGitter> <vladfaust> I can't make `Serializable` a class or struct, because it would apply constraints. And `Serializable` objects aren't necessarily classes, for example, they could be just non-mutable business objects, ideal for stack memory
<FromGitter> <vladfaust> I had great composition model and now it's breakingly broken
<FromGitter> <vladfaust> So Serializable can be a module only. And modules don't allow class methods... But serializable objects must be, um, deserializable, i.e. instantiate-able from some payloads
<FromGitter> <vladfaust> If I could change Crystal, I'd made class methods included as well. So many times I faced issues with it
<FromGitter> <watzon> Sameeee
<FromGitter> <watzon> One of the biggest pains in the ass
<FromGitter> <Blacksmoke16> @vladfaust move your `def initialize(**values : **T) : self forall T` inside the macro included
<FromGitter> <Blacksmoke16> wrapped in a `{% verbatim do %}`
<FromGitter> <Blacksmoke16> and try that, crystal and sqlite passed
<FromGitter> <watzon> That's what I've had to do anytime I need to include class methods as well
<FromGitter> <watzon> Can anyone tell me why this is failing? I'm at a loss. https://carc.in/#/r/71ry
<FromGitter> <vladfaust> You're the hero, @Blacksmoke16. It works!
<FromGitter> <Blacksmoke16> 👍
<FromGitter> <vladfaust> You're officially a macro professor
<FromGitter> <vladfaust> Would try integration tests to see if it works
<FromGitter> <Blacksmoke16> yea i dont have anything setup
<FromGitter> <Blacksmoke16> id be interested in seeing if it works when including like json serializable within a model
<FromGitter> <Blacksmoke16> or if that kills the other initializers
<FromGitter> <vladfaust> Not my case, though. Onyx::SQL doesn't allow other serializables to be included yet
<FromGitter> <Blacksmoke16> really?
<FromGitter> <vladfaust> BTW, the change also works with 0.28.0, no breaking changes then 🎉
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfc1804702b7e5e7650c44f]
<FromGitter> <Blacksmoke16> i was doing this and was working fine
<FromGitter> <vladfaust> Yes, the explicit approach works, but `schema` one may be tricky
<FromGitter> <Blacksmoke16> ah, who needs that :P
<FromGitter> <Blacksmoke16> i was looking at it tho, was surprised adding the annotation above the type macro didnt work
<FromGitter> <Blacksmoke16> since it defines the property as the first thing
<FromGitter> <watzon> For some reason `yield self` isn't working. It gives me `wrong number of block arguments (given 1, expected 0)`
<FromGitter> <Blacksmoke16> so in theory when it expands the annotation would be on the right property
<FromGitter> <vladfaust> Yep, I thought about that too. Maybe at some point I (or *somebody* else 😉) would make it work with schema =)
<FromGitter> <Blacksmoke16> :shifty_eyes:
<FromGitter> <vladfaust> @watzon Chris, don't rely on `delegate`
<FromGitter> <vladfaust> Just expand it yourself with explicit block arguments
<FromGitter> <watzon> Even without delegate it doesn't work
<FromGitter> <Blacksmoke16> have you thought about having something to make querying easier?
<FromGitter> <watzon> https://carc.in/#/r/71sb
<FromGitter> <watzon> This one is calling from Node directly
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfc1903e41fe15e75357863]
<FromGitter> <vladfaust> @watzon try adding block args to line 24
<FromGitter> <Blacksmoke16> in the mean time was just going to define some module that abstracts the querying to give a more simple interface
<FromGitter> <watzon> @vladfaust you mean like `&block : Nil -> Node`?
<FromGitter> <vladfaust> @Blacksmoke16, it can be reduced to ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5cfc197a9b50f63935a512c6]
<FromGitter> <Blacksmoke16> hmm
<FromGitter> <vladfaust> @watzon you have `|n|`, which is clearly not `Nil`
<FromGitter> <vladfaust> `&block : Node ->` maybe
<FromGitter> <watzon> Whoops, wrong direction
<FromGitter> <vladfaust> @Blacksmoke16 I'm pleased with the fact that someone actually uses Onyx::SQL on such a low level. I've spent much time on designing and documenting the low-lvl API, and `schema` is just a newbie sweet wrapper :D
<FromGitter> <watzon> Ok I think I got it kinda working https://carc.in/#/r/71sg
<FromGitter> <watzon> Not an ideal solution, but oh well
<FromGitter> <Blacksmoke16> just wanted an ORM i could add my annotations to :P
<FromGitter> <Blacksmoke16> that i could also convert to/from json
<FromGitter> <Blacksmoke16> also, im assuming the nilability of your properties doesnt matter?
<FromGitter> <Blacksmoke16> ``` @[Onyx::SQL::Field(not_null: true)] ⏎ property! corporation_id : Int32``` [https://gitter.im/crystal-lang/crystal?at=5cfc1aba4dfb424004a12d21]
<FromGitter> <Blacksmoke16> like any reason why you cant determine its not nil via the type of the property?
<FromGitter> <vladfaust> As far as I remember, yes, it doesn't matter. But for most of cases, when you do arbitrary queries which would have absent columns, `schema` defines a nilable property
<FromGitter> <vladfaust> It's just more natural than `user.name?` and runtime exceptions
<FromGitter> <Blacksmoke16> no i mean, make it so you dont need the `not_null: true`
<FromGitter> <Blacksmoke16> if your type if `Int32`
<FromGitter> <Blacksmoke16> but `Int32?` would be same as `not_null: false`
<FromGitter> <Blacksmoke16> something like `ivar.type.nilable?`
<FromGitter> <vladfaust> Ah, sorry, I've misread it. Well, again, an arbitrary query can return an absent column (you just don't `select` it), therefore a value would be `nil`
<FromGitter> <vladfaust> So it's natural to have nilable types in a model, which doesn't say anything about the DB column
<FromGitter> <Blacksmoke16> orm we use at work just returns an associative array when you do that, could use a namped tuple in crystal case?
<FromGitter> <Blacksmoke16> but yea, makes sense
<FromGitter> <vladfaust> I've put many thought in returning a strict type from a query, but haven't come to a solution yet
<FromGitter> <vladfaust> You can have `Serializable` objects, though. They can be initiailized from a model query as well
<FromGitter> <Blacksmoke16> id imagine you would have access to the types of the columns selected
<FromGitter> <Blacksmoke16> then could be like `NamedTuple(col1: String, col2: Int32).from hash_from_rs`
<FromGitter> <Blacksmoke16> all good
<FromGitter> <vladfaust> https://api.onyxframework.org/sql/Onyx/SQL/Serializable.html ⏎ `rs = db.query("SELECT id, popularity ...")` -- you can put any query into it, even a model one (e.g. `Character.one.select(:name)`)
<FromGitter> <vladfaust> There is also https://github.com/onyxframework/sql/issues/74 to make it work better
<FromGitter> <Blacksmoke16> gotcha
<FromGitter> <vladfaust> @Blacksmoke16 good news, integration tests with CrystalWorld passed. You may want to test the ORM @ https://github.com/onyxframework/sql/tree/development
<FromGitter> <Blacksmoke16> already did, my single model still works :p
<FromGitter> <Blacksmoke16> works on that branch*
<FromGitter> <Blacksmoke16> could also fix https://github.com/onyxframework/sql/issues/105 while you're in there 😉
<FromGitter> <vladfaust> I think we haven't come to a solution yet
<FromGitter> <Blacksmoke16> fair
<FromGitter> <vladfaust> Not every model field/reference should be annotated
<FromGitter> <vladfaust> Which is similar to other serializables
<FromGitter> <Blacksmoke16> how would that work with ivars from other shards tho?
<FromGitter> <Blacksmoke16> i could just reopen and add the ignore annotation i guess
<FromGitter> <vladfaust> The same as with `JSON::Serializable`. If you want a var to be ignored in JSON, you explicitly add an ignore to it
<FromGitter> <Blacksmoke16> that at least has a common way to do that
<FromGitter> <vladfaust> Ignoring is not trivial, as I have lots of places where ivars are iterated. I can't work on it right now, but I keep it in mind
<FromGitter> <Blacksmoke16> hmm, ill see if i can work around it then
<FromGitter> <Blacksmoke16> rip `Cannot implicitly read field EveShoppingApi::Character@validator : (CrSerializer::Validator | Nil) from a DB::ResultSet at key "validator", because its type is not <= DB::Any. Consider applying a converter to EveShoppingApi::Character@validator to make it work ⏎ `
<FromGitter> <vladfaust> Damn, I see
<FromGitter> <Blacksmoke16> yea, is assuming every ivar is a column atm
<FromGitter> <vladfaust> I'll try to fix it tomorrow if it doesn't bring new bugs :)
<FromGitter> <Blacksmoke16> 👍
<FromGitter> <Blacksmoke16> cheers
<FromGitter> <vladfaust> Yeah :) Thanks for the bugfix! And good night
<FromGitter> <Blacksmoke16> np o/
<FromGitter> <watzon> Why is it that ` Bytes` is an alias to `Slice(UInt8)`, but `String#bytes` returns an `Array(UInt8)`? Shouldn't it be returning a `Slice`?
<FromGitter> <watzon> Should I create an issue for that? Because I feel like it's a glaring inconsistency.
<FromGitter> <nsuchy> anyone here familar with oauth2
<FromGitter> <nsuchy> and gitlab api
<FromGitter> <Blacksmoke16> Oauth2 yes, gitlab API no
<FromGitter> <watzon> Same
<FromGitter> <watzon> I could tell you pretty much anything about the Github API thought
<FromGitter> <Blacksmoke16> What's the error?
<FromGitter> <Blacksmoke16> cant imagine it being complicated tho
<FromGitter> <nsuchy> Like
<FromGitter> <nsuchy> GitLab's docs don't list the urls to pass the provider
<FromGitter> <Blacksmoke16> sure they just dont use the defaults?
<FromGitter> <nsuchy> No idea
<FromGitter> <nsuchy> I don't know what the defaults are
<FromGitter> <Blacksmoke16> https://crystal-lang.org/api/master/OAuth2/Client.html#new%28host%3AString%2Cclient_id%3AString%2Cclient_secret%3AString%2Cport%3AInt32%3F%3Dnil%2Cscheme%3D%26quot%3Bhttps%26quot%3B%2Cauthorize_uri%3D%26quot%3B%2Foauth2%2Fauthorize%26quot%3B%2Ctoken_uri%3D%26quot%3B%2Foauth2%2Ftoken%26quot%3B%2Credirect_uri%3AString%3F%3Dnil%29-class-method
<FromGitter> <nsuchy> looks like that's a thing
<FromGitter> <Blacksmoke16> yea then `oauth/token`
<FromGitter> <nsuchy> thanks
ua has quit [Excess Flood]
ua has joined #crystal-lang
rkeene has joined #crystal-lang
<rkeene> Has anyone used the package "duktape.cr" ? I'm trying to use it and it appears to be pretty much completely undocumented
<FromGitter> <watzon> rkeene nfortunately a lot of people don't document their code. May be a good project for you to go in, figure out what things are doing, document, and pull request
<rkeene> In this case (and probably most cases) it's easier for me to just use something else -- I just wanted to make sure I wasn't missing the documentation somewhere
<FromGitter> <watzon> Is there something else in Crystal that you can use in place of duktape? I don't think anyone has added bindings for v8 yet.
<rkeene> I mean use something different like Go
<FromGitter> <tenebrousedge> D:
<FromGitter> <watzon> Ohh, well that's sad making
<FromGitter> <watzon> Duktape doesn't look too terribly undocumented
<FromGitter> <watzon> What are you trying to do?