113 Commits

Author SHA1 Message Date
Sybren A. Stüvel
e2123f8090 Path rewriting for sequences seems to be working too. 2018-03-06 16:41:16 +01:00
Sybren A. Stüvel
71dd5bc11b Path rewriting when packing.
Doesn't work with sequences, nor with split dirname/basename fields.
2018-03-06 16:06:36 +01:00
Sybren A. Stüvel
433ad8f16a Moved packer code into separate class, in preparation for smarter behaviour 2018-03-06 11:58:38 +01:00
Sybren A. Stüvel
92f91b42cf Added test case for Windows-style paths 2018-03-06 11:45:35 +01:00
Sybren A. Stüvel
39474548d2 Pack: Made project path explicit 2018-03-06 11:41:28 +01:00
Sybren A. Stüvel
6d1cae1225 Tracer: don't warn about missing expanders for LI and DATA blocks 2018-03-06 11:40:56 +01:00
Sybren A. Stüvel
9b2254a302 Included radon in requirements
This is mostly used to keep an eye on cyclomatic complexity using
`radon cc blender_asset_tracer -s --min C`
2018-03-02 18:04:55 +01:00
Sybren A. Stüvel
5c8e074c68 Implemented simple 'bat pack' CLI command
No path rewriting yet, just simply copying the dependencies. They are
copied to the target directory + the path relative to the current working
directory. For example:

bat pack scenes/05-barber/05_02_C-agent_focused/05_02_C.lighting.blend /tmp/packer

will write to
/tmp/packer/scenes/05-barber/05_02_C-agent_focused/05_02_C.lighting.blend
and will copy ./path/to/file → /tmp/packer/path/to/file
2018-03-02 17:59:04 +01:00
Sybren A. Stüvel
f2694df602 Don't warn about missing readers in blend2asserts
It's still logged at debug level, but it's aimed at developers and not
artists/end users.
2018-03-02 15:45:26 +01:00
Sybren A. Stüvel
8009ff1e47 Added block expansion
The expansion process follows pointers and library links to construct
the full set of actually-used data blocks. This set consists of all data
blocks in the initial blend file, and all *actually linked-to* data
blocks in linked blend files.

I've also removed non-recursive dependency listing.
2018-03-02 15:44:07 +01:00
Sybren A. Stüvel
677d388a15 Convert BlendPath to pathlib.Path using local filesystem encoding
UTF-8 is tried first, and if that fails the local filesystem encoding is
used.
2018-03-02 13:42:49 +01:00
Sybren A. Stüvel
8bb130d336 Moved cdefs one module up 2018-03-02 13:36:08 +01:00
Sybren A. Stüvel
7167d51730 Added BlendFileBlock.id_name property
Evaluated only once, so safe to call multiple times without producing
excessive disk I/O. Returns None instead of raising KeyError when there is
no (b'id', b'name') field.
2018-03-02 11:26:02 +01:00
Sybren A. Stüvel
2bb9cffa49 Renamed block_walkers to blocks2assets 2018-03-02 10:06:41 +01:00
Sybren A. Stüvel
f46e761f09 Removed base_index parameter in favour of explicit array handling
The `base_index` parameter is confusing and only works in a limited number
of cases. Having explicit functions to deal with those cases is preferred.
2018-03-01 12:50:22 +01:00
Sybren A. Stüvel
2c0cc6003d Updated block_walkers docstring 2018-03-01 10:35:51 +01:00
Sybren A. Stüvel
d93516d34f Better naming of functions in block_walkers.py 2018-03-01 10:31:41 +01:00
Sybren A. Stüvel
204626b671 Fix issue when library blend file does not exist 2018-02-28 17:23:43 +01:00
Sybren A. Stüvel
6252b041d5 Implemented JSON dependency logging output 2018-02-28 17:18:18 +01:00
Sybren A. Stüvel
a7706f21b6 Nicer CLI listing of dependencies 2018-02-28 17:02:34 +01:00
Sybren A. Stüvel
2af8d94cb9 Perform recursion after handling all blocks of current file
This way file access isn't interleaved and all dependencies of one file are
reported before moving to the next.
2018-02-28 17:02:19 +01:00
Sybren A. Stüvel
55302004ee Test BlockUsage.files() 2018-02-28 16:51:27 +01:00
Sybren A. Stüvel
ca964181fe Beginning of CLI interface + protection against infinite recursion. 2018-02-28 16:47:13 +01:00
Sybren A. Stüvel
8ae400acbe Support particle simulation point cache data
Also see https://developer.blender.org/T53562
2018-02-28 14:11:48 +01:00
Sybren A. Stüvel
86af05e823 Added recursion into library blend files. 2018-02-28 12:42:27 +01:00
Sybren A. Stüvel
cb5eff2dcb Some docstrings 2018-02-28 11:56:41 +01:00
Sybren A. Stüvel
7541922b74 Also report library blocks.
Those are needed for recursive tracing of dependencies.
2018-02-28 11:55:10 +01:00
Sybren A. Stüvel
0d7bbb34f0 Reduced cyclomatic complexity of BlockUsage.__init__() 2018-02-28 11:17:27 +01:00
Sybren A. Stüvel
a5bc52523d Some more comments 2018-02-28 11:16:58 +01:00
Sybren A. Stüvel
65b690e998 Added block walker implementations + tests 2018-02-27 17:30:28 +01:00
Sybren A. Stüvel
6b9c0a3f95 Support slash notation for BlendPath
This mimicks the slash notation of pathlib.Path
2018-02-27 17:29:44 +01:00
Sybren A. Stüvel
15cd74cda4 Start of dependency tracer work. 2018-02-26 18:16:15 +01:00
Sybren A. Stüvel
59c0b6df4c Allow block.get() to return the dna.Field
This is needed by the upcoming dependency tracer.
2018-02-26 18:15:14 +01:00
Sybren A. Stüvel
a56e985cdc Unify behaviour of block[path] and block.get(path) 2018-02-26 18:14:23 +01:00
Sybren A. Stüvel
127f357e49 Marked set() as ported 2018-02-23 15:54:13 +01:00
Sybren A. Stüvel
bce5f4b670 Ported get_file_offset() and renamed to abs_offset() 2018-02-23 15:53:26 +01:00
Sybren A. Stüvel
aed1827ff7 Moved pad_up_4() to inner function as it's only used there. 2018-02-23 15:44:57 +01:00
Sybren A. Stüvel
55075c09b6 Ported get_data_hash() and renamed to hash() 2018-02-23 15:42:48 +01:00
Sybren A. Stüvel
db14cc5074 Test segfault 2018-02-23 14:46:47 +01:00
Sybren A. Stüvel
49d0f41b40 Test using BlendFile as context 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
9750a91571 Fixed file leak when opening corrupted file. 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
eb8281ea82 Fix leaking file object when loading non-blend file 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
8e0b135eb3 Fixed recompressing after modification 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
67751d9a3e Fixed loading compressed files 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
b42a090f32 Support for modifying string/bytes fields. 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
efc60f437b Improved BFB.set() a bit, not yet tested at all. 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
934a8e210e Clarified type refinement, simplified API, custom exception for get_pointer
Type refinement is now only done with BlendFileBlock.refine_type(), and
no longer with sdna_index_refine parameters to various functions. This
simplifies the API at the expense of having to call two simple functions
instead of one more complex one.
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
9c8766a28c str → repr 2018-02-23 12:24:50 +01:00
Sybren A. Stüvel
42413c4d99 Added some TODOs 2018-02-23 12:24:50 +01:00
Sybren A. Stüvel
74ef3877c6 Renamed internal func and removed an iteration over self.blocks 2018-02-23 12:24:50 +01:00