#!/usr/bin/env perl use strict; use v5.18; use utf8; use warnings; =head1 SYNOPSIS perl Emplace-XDG-dirs =cut use Carp qw(carp croak); use Try::Tiny; use File::XDG 1.00; use File::Path qw(mkpath); use File::Basename; my ($appName, $XDGUser, $XDGData, $XDGCache); $appName = 'vim'; my $xdgEmp = File::XDG->new( name => $appName , api => 1 ); $XDGUser = $xdgEmp->config_home; $XDGData = $xdgEmp->data_home; $XDGCache = $xdgEmp->cache_home; say <## #!/usr/bin/env perl # Last modified: Tue May 27 2025 03:02:52 PM -04:00 [EDT] use strict; use v5.18; use utf8; use warnings; =head1 SYNOPSIS perl Emplace-XDG-dirs =cut use File::XDG 1.00; use File::Spec; use File::Path qw(mkpath rmtree); use subs qw/tellMe/; my ($XDGUser, $XDGData, $XDGCache); my $appName = 'vim'; my $xdgEmp = File::XDG->new( name => $appName , api => 1 ); $XDGUser = $xdgEmp->config_home; $XDGData = $xdgEmp->data_home; $XDGCache = $xdgEmp->cache_home; my @branches = (File::Spec->catdir($XDGData => 'backups'), File::Spec->catdir($XDGData => 'swapfiles')); say "We could make these dirs for you:"; say join qq[\n]=>@branches, ''; if (tellMe("making those dirs for $appName")) { mkpath (@branches, {verbose => 'true', mode => 0775}); } else { say "No? OK, aborting now"; } =head2 Vim settings Put in our .vimrc config file: set backup set backupcopy=auto set backupdir= ... (dir created by script) set directory= ... (dir created by script) =cut sub tellMe { my $gummy = $_[0]; my $ans = "Y"; printf "Do you want proceed with: %s? [Y/n]\n", $gummy; chomp ($ans = ); if ($ans =~/Y|y/) { return 1; } elsif ($ans eq '') { return 1; } else { return 0; } } # vim: ft=perl et sw=4 ts=4 :