]>
nmode's Git Repositories - Fey/blob - lib/App/Fey.pm
7 our @EXPORT_OK = qw(fey);
11 my ($class, $args) = @_;
12 my $config = do ($ENV{XDG_CONFIG_HOME
} // "$ENV{HOME}/.config") . '/fey/config.pl';
13 my $placeholder = $args->{placeholder
} // $config->{placeholder
} // '//f';
16 contexts
=> $args->{contexts
} // $config->{contexts
} // { default => 1 },
17 placeholder
=> $placeholder,
18 mime_query
=> $args->{mime_query
} // $config->{mime_query
} // "file --brief --mime-type $placeholder",
19 targets
=> $args->{targets
} // $config->{targets
} // {}
26 my ($self, $file_or_uri) = @_;
28 if ($file_or_uri =~ m
|^file
://(.+)|) {
32 my ($mime_or_uri, $targets);
33 if (-e
$file_or_uri) {
34 $mime_or_uri = $self->{mime_query
} =~ s/$self->{placeholder}/"$file_or_uri"/r;
35 $mime_or_uri = `$mime_or_uri`;
37 $mime_or_uri = $file_or_uri;
40 for my $target (@{ $self->{targets} }) {
41 for my $pattern (@{ $target->{patterns} }) {
42 if ($mime_or_uri =~ /$pattern/) {
43 my $associations = $target->{associations};
44 for my $context (keys %{ $associations }) {
45 if ($self->{contexts}->{$context}) {
46 my $command = $associations->{$context};
47 $command =~ s/$self->{placeholder}/"$file_or_uri"/;
58 App
::Fey-
>new($_[1] // {})->launch($_[0] // die 'Error: No file or URI specified.');