Manifest version 2 is deprecated, and support will be removed in 2023. See https://developer.chrome.com/blog/mv2-transition/ for more details.
####
#!/usr/bin/perl
use strict;
use warnings;
# supporting manifest v 3
# https://developer.chrome.com/blog/mv2-transition/
# https://developer.chrome.com/docs/extensions/mv3/migrating_to_service_workers/
# January 2023: The Chrome browser will no longer run Manifest V2 extensions.
# Developers may no longer push updates to existing Manifest V2 extensions.
my $version = 2;
my $folder = $ARGV[0];
my $url = $ARGV[1];
die "$0 Directory_Name URL" unless $ARGV[1];
(my $descr = $folder) =~ s/_+/ /g;
my $longname = 'Perl genarated extension - '.$descr;
mkdir $folder or die "Cannot create $folder: $!";
chdir $folder or die "Cannot enter $folder: $!";
# the manifest
open MANIF, '>', 'manifest.json' or die "Cannot open a file to write in: $!";
my $manifest = '{
"manifest_version": 3,
"description": "'.$descr.'",
"background": {
"service_worker": "background.js"},
"name": "'.$longname.'",
"permissions": [ "contextMenus", "tabs" ],
"version": "1.0"
}';
print MANIF $manifest;
close MANIF;
# the jscript
open JSCRIPT, '>', 'background.js' or die "Cannot open a file to write in: $!";
my $background ='function customfunc(info)
{
var searchstring = info.selectionText;
chrome.tabs.create({url: "'.$url.'" + searchstring})
}
chrome.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId == "'.$descr.'")
});';
print JSCRIPT $background;
close JSCRIPT;
####
16c26
< "manifest_version": 2,
---
> "manifest_version": 3,
19c29
< "scripts": ["background.js"]},
---
> "service_worker": "background.js"},
33c43,47
< chrome.contextMenus.create({title: "'.$descr.'", contexts:["selection"], onclick: customfunc});';
---
>
> chrome.contextMenus.onClicked.addListener(function(info, tab) {
> if (info.menuItemId == "'.$descr.'")
> });';
>
35c49
< close JSCRIPT;
\ No newline at end of file
---
> close JSCRIPT;