Commit Graph

30 Commits

Author SHA1 Message Date
Sebastian Thiel
f83dff672b refactor(config): bring in all required field data
Previously we only knew the type as string, now we have enums and
additional type information, like whether or not it's a POD.

However, borrow-checker doesn't like the current code, will need more
work.
2015-05-12 12:17:36 +02:00
Sebastian Thiel
ef63790422 refactor(CLI): better vector building
Instead of using multiple lines to add vectors up involving iterators,
I just add slices together. This should produce less, and possibly
faster machine code, with less ascii code.

Downloads tested with drive2, and are verified to be working !

Close #97
2015-05-06 11:04:19 +02:00
Sebastian Thiel
96415d17ca feat(CLI): did you mean for struct values
* functionality is cursor-aware, and fixes the actual string the user
  passed in. That way, it is made very clear how the suggested value
  is to be used.
* it's a known weakness of the implementation that it operates on a
  flattened list of field names, and thus may make nonsensical
  suggestions.
* added punctuation to all errors

Fixes #67
[skip ci]
2015-05-02 14:07:28 +02:00
Sebastian Thiel
bd27046cc8 docs(clap): update STRUCT_FLAG and UPLOAD flags
* adjust documentation to resemble actual upload flag semantics. It was
  still using the one previously used in docopt.
* Make -m <mime-type> optional, defaulting to 'application/octet-stream'

Should have been fixed alongside of #81
2015-04-30 13:40:48 +02:00
Sebastian Thiel
b039b38244 fix(clap): update docs and fix calltype handling
* mkdoc docs grammar is now hierarchical, making the command structure
  more obvious and easier to understand. It's a nice addition to the
  auto-generated, hierachical usage of clap.
* UploadProtocol enum is now CallType, to ease handling the different
  ways the Call has to be executed. It looks quite clean, even though
  combining upload protocols and the calltype is a bit hacky.
2015-04-30 10:05:55 +02:00
Sebastian Thiel
7a38f7e4d5 fix(clap): various fixes and improvements
* `--version` now includes the API revision we embody
  (using crate_version())
* Allow multiple scopes to be specified, instead of just one. Previously
  this was problemantic due to argument parsing of docopt being greedy.
  However, this also means we have to specify the `-r` flag for each
  invocation. See https://github.com/kbknapp/clap-rs/issues/89 .
* Adapted to new signature of `Arg::possible_values()` and used the
  previously orphaned `UploadProtocol` enum.
* Deduplicated code a little by adding the new `opt_values()` generator
  function.

 Related to #81
2015-04-30 09:03:11 +02:00
Sebastian Thiel
5320a48e68 fix(clap): tweaks to make youtube3 work
Mainly minor cleanup, and handling of generator branches that
didn't show up in smaller APIs that were used during the first steps.

related to #81
2015-04-29 21:59:06 +02:00
Sebastian Thiel
bac4e1a82f fix(clap): adjust option usage to changed API
Discovery API now builds and seems to work even ! More testing
will have to be done though to be sure.

Related #81
2015-04-29 21:04:50 +02:00
Sebastian Thiel
db4624b467 feat(clap): parse structure and build App
We are currently setting everything up at runtime, and manage to get
nearly all information into it, except for the more complex
`-u (simple|resumable) <file> <mime>` flag.

Fixes #87
Related to #81
2015-04-29 16:49:02 +02:00
Sebastian Thiel
944e04bd12 docs(CLI): filled README.md
All possible documentation was added in a quality sufficient for
a first release. After all, everything there is is documented.

Fixes #50
2015-04-26 11:22:28 +02:00
Sebastian Thiel
c14ef9afc8 feat(CLI): repeated required args
* Seem to work for docopt, mkdocs and code itself
* mkdocs now show type of required params
* some code which deals with converting elements to their
  target types is totally untested right now.

Related to #77
2015-04-22 10:28:13 +02:00
Sebastian Thiel
f7740ad149 refactor(engine): request-value parsing;Default
* Default::default() optimized to use T::default() if possible
* deduplicated special type handling ('Count' strings -> int64)
* put request value parsing into own private function

Fixes #69
[skip ci]
2015-04-21 11:00:40 +02:00
Sebastian Thiel
bf22bef77a fix(CLI): struct access compiles ...
... but currently wouldn't run as we don't initialize the optional sub-
structures at all.
2015-04-16 19:53:15 +02:00
Sebastian Thiel
15b78cd1ff feat(CLI): struct value parsing
This works already for simple request values, but doens't generate
compiling code for structures with Parts in them.
Nonetheless, it's a big step towards finishing the overall issue.

Related to #64
2015-04-16 17:44:30 +02:00
Sebastian Thiel
4b87d909f2 fix(CLI): NULL default values instead of randoms
Instead of generating nonesense random values, we just map defaults
that represent the respective NULL value of a given type.
2015-04-15 18:29:21 +02:00
Sebastian Thiel
c3a9f1e8e5 feat(CLI): interpret output arguments
For now we don't properly handle errors when opening files, but the
code is there.
Will panic in next commit.

Related to #63
2015-04-14 21:18:57 +02:00
Sebastian Thiel
e34e24e049 feat(CLI):required arg parsing + first doit() call
We are parsing required scalar values and handle parse-errors correctly,
to the point were we make a simple, non-upload doit() call.

It shows that we seem to build invalid calls, for now,but that's nothing
we can't fix once the time is ripe.

Next goals will be related to finalizing the argument parsing code.

Fixes #60
2015-04-14 17:17:21 +02:00
Sebastian Thiel
d6919f1eb6 feat(CLI): infrastructure for call and dry-run
Now we are able to cleanly handle our arguments on a per-method basis.
The generated code won't clutter our design as we put the details into
their own methods.

Fixes #59
2015-04-14 15:42:12 +02:00
Sebastian Thiel
be228f1994 feat(CLI): engine checks resource and method args
We are now at a spot where we can actually start parsing arguments.

* ArgumentError -> ClIError - seems more fitting

Fixes #55
2015-04-14 09:41:55 +02:00
Sebastian Thiel
e45eb053d5 fix(CLI): Display for Errors + refactor
* refactored errors into a hierarchy
* implemented `Display` trait for all error types, including some
  'hierarchy-aware' printing.

Fixes #54
2015-04-14 08:34:53 +02:00
Sebastian Thiel
b64722cca8 docs(CLI): random values + cursor information
* Instead of writing pod-types, we generate a random value of the
  required type.
* Fully document how cursors can be set, which is all that's usually
  demonstrated in more complex dynamic structure documentation

Fixes #49
2015-04-13 14:18:32 +02:00
Sebastian Thiel
47f9ca8b20 docs(CLI): absolute top-level cursor + details
* just for show, use absolute cursors in the top-level structure
* indicate you are setting an array or hashmap in the details
2015-04-13 13:50:58 +02:00
Sebastian Thiel
92b1ef7476 docs(CLI):dynamic absolute cursor position example
We build all required -r flags using absolute cursor positions only.
The next step should be to use relative ones, and of course be more
verbose about how this should be interpreted (sequential).
2015-04-13 12:06:52 +02:00
Sebastian Thiel
5b4f18d341 fix(api+cli): improved scope handling; fix CLI
* in APIs, scopes will now be per-method, and if no scope is given,
  we will assume only the API key has to be set. Previously there was
  a wild mix between globally mentioned scopes and method scopes.
* assure CLI generation works so far, for all avaialable APIs

Related to #48
2015-04-13 10:50:19 +02:00
Sebastian Thiel
6d3bbcea57 docs(CLI): upload and output flag
We are already there, except for documenting the request value type,
which definitely deserves a separate issue.

Fixes #45
2015-04-12 20:24:12 +02:00
Sebastian Thiel
c004840d5b docs(CLI): inforamtion about setting structs
For now we just have a 'dum' example, but once we are there, we shall
make the example and documentation based on the actual request value.

This requires some additional work, which fortunately has to be done
in python only.
2015-04-12 18:46:04 +02:00
Sebastian Thiel
c65a8a6bdf docs(CLI): add required scalar arguments 2015-04-12 18:16:53 +02:00
Sebastian Thiel
49c4a4101e docs(scopes): added CLI scope documentation
In addition to that, they can now be set as well.
Unified generation of the 'default' scope.
2015-04-12 17:15:55 +02:00
Sebastian Thiel
310c81f19c feat(cli): generate complete docopts grammar
Grammar is laid out per method, providing general purpose arguments
only as needed/supported.

All details will be contained in the markdown documentation.

Related to #45
2015-04-12 12:23:00 +02:00
Sebastian Thiel
acd42dfccc fix(make): dependencies are now per-program-type
Previously we put cli.py into the common lib folder, which caused the
API to be regenerated and rebuilt whenever we changed code that will
only affect the CLI, causing terrible turnaround times.

Now the dependency is fixed.
2015-04-12 09:55:17 +02:00