Create simplified `flatpak run` script
This commit is contained in:
parent
0563b42684
commit
a2719e8c43
|
@ -0,0 +1,62 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
# Simplify `flatpak run`
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use v5.36;
|
||||||
|
|
||||||
|
my $input = shift(@ARGV) || die("Requires at least 1 argument\n");
|
||||||
|
|
||||||
|
my @list = split(/\n/, `flatpak list`);
|
||||||
|
shift(@list);
|
||||||
|
my %apps;
|
||||||
|
for my $line (@list) {
|
||||||
|
my ($name, $id, $version, $branch) = split(/\t/, $line);
|
||||||
|
next if ($id =~ /\b(Platform|Codecs)\b/);
|
||||||
|
$apps{$name} = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Exact name match first
|
||||||
|
run($apps{$input}, @ARGV) if (defined($apps{$input}));
|
||||||
|
|
||||||
|
# Case-insensitive name match next
|
||||||
|
foreach (keys(%apps)) {
|
||||||
|
print("Case-insensitive name match\n") if ($_ =~ m/^$input$/i);
|
||||||
|
run($apps{$_}, @ARGV) if ($_ =~ m/^$input$/i);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Exact final id stanza next
|
||||||
|
foreach (keys(%apps)) {
|
||||||
|
print("Exact id match\n") if ($apps{$_} =~ m/\.$input$/);
|
||||||
|
run($apps{$_}, @ARGV) if ($apps{$_} =~ m/\.$input$/);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Case-insensitive final id stanza next
|
||||||
|
foreach (keys(%apps)) {
|
||||||
|
print("Case-insensitive id match\n") if ($apps{$_} =~ m/\.$input$/i);
|
||||||
|
run($apps{$_}, @ARGV) if ($apps{$_} =~ m/\.$input$/i);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fuzzy name match
|
||||||
|
foreach (keys(%apps)) {
|
||||||
|
print("Fuzzy name match\n") if ($_ =~ m/$input/i);
|
||||||
|
run($apps{$_}, @ARGV) if ($_ =~ m/$input/i);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fuzzy id match
|
||||||
|
foreach (keys(%apps)) {
|
||||||
|
print("Fuzzy id match\n") if ($apps{$_} =~ m/$input/i);
|
||||||
|
run($apps{$_}, @ARGV) if ($apps{$_} =~ m/$input/i);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub run($id, @args)
|
||||||
|
{
|
||||||
|
printf("Running $id ".join(' ',@args)."\n");
|
||||||
|
my $pid = fork();
|
||||||
|
if ($pid) {
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
system("/usr/bin/flatpak run $id ".join(' ', @args));
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue