Data::Resolver::FromTar - resolver for TAR file
use Data::Resolver::FromTar; my $resolver = Data::Resolver::FromTar->new(root => $path); my @list_of_asset_keys = $resolver->list_asset_keys; say 'have it' if $resolver->has_asset($key); my $asset = $resolver->get($key); my @list_of_sub_resolver_keys = $resolver->list_sub_resolver_keys; say 'have it' if $resolver->has_sub_resolver($srkey); my $sub_resolver = $resolver->get_sub_resolver($srkey);
This class implements a resolver that is fed from a TAR file in the filesystem. It inherits from Data::Resolver::Base and implements the corresponding methods according to the expected semantics.
The class is provided a path to the TAR file in the filesystem and an optional prefix; plain files in the archive will be considered valid assets if they appear at the right level, as well as directory objects will be considere valid starting points for sub-resolvers.
Only files immediately below the provided prefix will be listed, although all will be accessible. E.g. consider the following tree of files inside the archive:
. ├── ciao.txt └── foo ├── bar.txt └── galook └── final.txt
If the prefix is empty, then:
listing of available assets will give back ciao.txt only
ciao.txt
all txt files will be accessible, through keys ciao.txt, foo/bar.txt, and foo/bar/galook/final.txt
txt
foo/bar.txt
foo/bar/galook/final.txt
listing of available sub-resolvers will give back foo only
foo
it's possible to get sub-resolvers for keys foo as well as foo/galook.
foo/galook
This class inherits from Data::Resolver::Base, inheriting all of its methods and overloading the abstract ones, while keeping the expected semantics.
sub get_asset ($self, $key) { ... }
retrieve the file data associated to $key, as a Data::Resolver::Asset.
$key
sub get_sub_resolver ($self, $key) { ... }
retrieve the sub-resolver associated to sub-directory $key, as a new object of class Data::Resolver::FromTar. It is obtained by pointing to the same TAR archive, but setting a different "prefix".
sub has_asset ($self, $key) { ... }
test existence of asset (file) for $key.
sub has_sub_resolver ($self, $key) { ... }
test existence of sub-resolver for sub-directory $key.
sub list_asset_keys ($self) { ... }
return a list of file names available from the resolver.
sub list_sub_resolver_keys ($self) { ... }
return a list of directory names available as sub-resolvers.
my $string = $obj->prefix;
get the prefix used for accessing sub-directories in a TAR archive.
my $dirpath = $obj->root;
The path to the base TAR file used for the resolver.
Flavio Poletti <flavio@polettix.it>
Copyright 2023 by Flavio Poletti <flavio@polettix.it>
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
To install Data::Resolver, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Resolver
CPAN shell
perl -MCPAN -e shell install Data::Resolver
For more information on module installation, please visit the detailed CPAN module installation guide.