allow running sbin scripts from any directory
This commit is contained in:
parent
8206aeaec5
commit
aaa0924dc7
18 changed files with 310 additions and 255 deletions
|
|
@ -10,15 +10,19 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
$|++; # disable output buffering
|
use strict;
|
||||||
our ($webguiRoot, $configFile, $help, $man);
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
$|++; # disable output buffering
|
||||||
|
|
||||||
|
our ($configFile, $help, $man);
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
|
|
|
||||||
|
|
@ -10,16 +10,18 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict;
|
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::User;
|
use WebGUI::User;
|
||||||
use WebGUI::Inbox;
|
use WebGUI::Inbox;
|
||||||
|
|
|
||||||
|
|
@ -10,16 +10,18 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict;
|
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::Asset;
|
use WebGUI::Asset;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,17 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot, @nailable);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
@nailable = qw(jpg jpeg png gif);
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my @nailable = qw(jpg jpeg png gif);
|
||||||
$| = 1;
|
$| = 1;
|
||||||
|
|
||||||
use File::Path;
|
use File::Path;
|
||||||
|
|
@ -27,7 +29,6 @@ use FileHandle;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use POSIX;
|
use POSIX;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict;
|
|
||||||
use WebGUI::Asset::File;
|
use WebGUI::Asset::File;
|
||||||
use WebGUI::Asset::File::Image;
|
use WebGUI::Asset::File::Image;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,17 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
|
||||||
$|=1;
|
|
||||||
use lib '../lib';
|
|
||||||
use strict;
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
|
BEGIN {
|
||||||
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
|
}
|
||||||
|
|
||||||
|
$|=1;
|
||||||
use Carp qw( carp croak );
|
use Carp qw( carp croak );
|
||||||
use File::Find;
|
use File::Find;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,21 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
our $webguiRoot;
|
my $webguiRoot;
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use DBI;
|
use DBI;
|
||||||
use FileHandle;
|
use FileHandle;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict qw(subs vars);
|
no strict 'refs';
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::Asset;
|
use WebGUI::Asset;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
use lib "../lib";
|
|
||||||
use strict;
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
|
BEGIN {
|
||||||
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
|
}
|
||||||
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use WebGUI::Pluggable;
|
use WebGUI::Pluggable;
|
||||||
|
|
|
||||||
|
|
@ -10,17 +10,18 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
our ($webguiRoot);
|
my $webguiRoot;
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict;
|
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
|
|
||||||
my $help;
|
my $help;
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use WebGUI::Config;
|
use WebGUI::Config;
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,20 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$| = 1;
|
$| = 1;
|
||||||
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict;
|
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::Utility;
|
use WebGUI::Utility;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use WebGUI::Asset;
|
use WebGUI::Asset;
|
||||||
use WebGUI::Config;
|
use WebGUI::Config;
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,17 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use strict;
|
|
||||||
use warnings;
|
use warnings;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use POE::Component::IKC::ClientLite;
|
use POE::Component::IKC::ClientLite;
|
||||||
|
|
|
||||||
12
sbin/syncToCdn.pl
Normal file → Executable file
12
sbin/syncToCdn.pl
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
|
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
@ -8,14 +10,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our $webguiRoot;
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift( @INC, $webguiRoot . "/lib" );
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Fcntl ':flock';
|
use Fcntl ':flock';
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,18 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
|
BEGIN {
|
||||||
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
|
}
|
||||||
|
|
||||||
$|=1;
|
$|=1;
|
||||||
|
|
||||||
use strict;
|
|
||||||
use FindBin;
|
use FindBin;
|
||||||
use File::Spec qw[];
|
use File::Spec qw[];
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
|
@ -48,14 +57,13 @@ if (! -e $configFile) {
|
||||||
##Probably given the name of the config file with no path,
|
##Probably given the name of the config file with no path,
|
||||||
##attempt to prepend the path to it.
|
##attempt to prepend the path to it.
|
||||||
warn "Config file $configFile does not exist, assuming that you supplied a bare config and are running from inside the sbin directory\n";
|
warn "Config file $configFile does not exist, assuming that you supplied a bare config and are running from inside the sbin directory\n";
|
||||||
$configFile = File::Spec->canonpath($FindBin::Bin.'/../etc/'.$configFile);
|
$configFile = File::Spec->canonpath($webguiRoot . '/etc/' . $configFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
die "Unable to use $configFile as a WebGUI config file\n"
|
die "Unable to use $configFile as a WebGUI config file\n"
|
||||||
unless(-e $configFile and -f _);
|
unless(-e $configFile and -f _);
|
||||||
|
|
||||||
my (undef, $directories, $file) = File::Spec->splitpath($configFile);
|
my (undef, $directories, $file) = File::Spec->splitpath($configFile);
|
||||||
my $webguiRoot = File::Spec->canonpath(File::Spec->catdir($directories, File::Spec->updir));
|
|
||||||
my $webguiTest = File::Spec->catdir($webguiRoot, 't');
|
my $webguiTest = File::Spec->catdir($webguiRoot, 't');
|
||||||
|
|
||||||
my $prefix = "WEBGUI_CONFIG=".$configFile;
|
my $prefix = "WEBGUI_CONFIG=".$configFile;
|
||||||
|
|
|
||||||
|
|
@ -10,15 +10,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
our $webguiRoot;
|
my $webguiRoot;
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
|
||||||
use CPAN;
|
use CPAN;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,14 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
#-----------------------------------------
|
#-----------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Cwd ();
|
use Cwd ();
|
||||||
use File::Path ();
|
use File::Path ();
|
||||||
use Getopt::Long ();
|
use Getopt::Long ();
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,16 @@
|
||||||
# http://www.plainblack.com info@plainblack.com
|
# http://www.plainblack.com info@plainblack.com
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
our ($webguiRoot);
|
use strict;
|
||||||
|
use File::Basename ();
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
my $webguiRoot;
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$webguiRoot = "..";
|
$webguiRoot = File::Spec->rel2abs(File::Spec->catdir(File::Basename::dirname(__FILE__), File::Spec->updir));
|
||||||
unshift (@INC, $webguiRoot."/lib");
|
unshift @INC, File::Spec->catdir($webguiRoot, 'lib');
|
||||||
}
|
}
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Digest::MD5;
|
use Digest::MD5;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue