Ignore:
Timestamp:
Sep 21, 2013, 7:53:22 PM (10 years ago)
Author:
mbarry
Message:

Shepherd::Configure: Attempt to create symlink to tv_grab_au both in regular --configure and --configure-mythtv modes, not just the latter. Since it's not really MythTV-specific.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/references/Shepherd/Configure.pm

    r1465 r1472  
    22package Shepherd::Configure;
    33
    4 my $version = '0.32';
     4my $version = '0.40';
    55
    66use strict;
     
    122122    &::write_channels_file;
    123123    &update_mythtv_channels($mchans) if ($mchans);
     124    &create_symlink();
    124125
    125126    print "\nMythTV Integration\n\n".
     
    9991000}
    10001001
     1002sub create_symlink
     1003{
     1004    # 1. Check existence of symlink
     1005
     1006    my $me = "$::CWD/applications/shepherd/shepherd";
     1007
     1008    my $mapped = 0;
     1009    my $symlink;
     1010    my @delete_me;
     1011    foreach my $path (split/:/, $ENV{PATH})
     1012    {
     1013        my $tv_grab_au = "$path/tv_grab_au";
     1014
     1015        # Figure out an appropriate symlink.
     1016        # (We'll use /usr/bin/tv_grab_au, but only if
     1017        # /usr/bin/ is in PATH.)
     1018        $symlink = $tv_grab_au unless ($symlink && $symlink eq '/usr/bin/tv_grab_au');
     1019
     1020        if (-e $tv_grab_au)
     1021        {
     1022            if (-l $tv_grab_au)
     1023            {
     1024                my $link = readlink($tv_grab_au);
     1025                if ($link and $link eq $me)
     1026                {
     1027                    &::log("Symlink $tv_grab_au is correctly mapped to $me.\n");
     1028                    $mapped = $tv_grab_au;
     1029                    last;
     1030                }
     1031            }
     1032            push @delete_me, $tv_grab_au;
     1033        }
     1034    }
     1035
     1036    &::log("\n");
     1037
     1038    if (!$mapped or @delete_me)
     1039    {
     1040        if (@delete_me)
     1041        {
     1042            &::log("\nShepherd would like to DELETE the following file(s):\n\n");
     1043            system ("ls -l @delete_me");
     1044            &::log("\n");
     1045        }
     1046        if (!$mapped)
     1047        {
     1048            &::log("Shepherd would like to CREATE the following symlink:\n\n".
     1049                " $symlink -> $me\n\n");
     1050        }
     1051
     1052        my $response = &XMLTV::Ask::ask_boolean(
     1053            ucfirst(
     1054                ($mapped ? '' : ( 'create symlink ' . (@delete_me ? 'and ' : ''))) .
     1055                (@delete_me ? 'delete ' . scalar(@delete_me) . ' file(s)' : '')) .
     1056            '?', 1);
     1057        unless ($response)
     1058        {
     1059            &::log("Aborting.\n");
     1060            return;
     1061        }
     1062
     1063        system("sudo rm @delete_me") if (@delete_me);
     1064        system("sudo ln -s $me $symlink") unless ($mapped);
     1065    }
     1066
     1067    &::log("Symlink established:\n");
     1068    system("ls -l `which tv_grab_au`");
     1069
     1070}
     1071
    10011072# ------------------------------
    10021073# -   MythTV Integration       -
     
    10171088    # 1. Check existence of symlink
    10181089
    1019     my $me = "$::CWD/applications/shepherd/shepherd";
    1020 
    10211090    &::log("Step 1: Setting up symlink...\n".
    1022            "------\n");
    1023 
    1024     my $mapped = 0;
    1025     my $symlink;
    1026     my @delete_me;
    1027     foreach my $path (split/:/, $ENV{PATH})
    1028     {
    1029         my $tv_grab_au = "$path/tv_grab_au";
    1030 
    1031         # Figure out an appropriate symlink.
    1032         # (We'll use /usr/bin/tv_grab_au, but only if
    1033         # /usr/bin/ is in PATH.)
    1034         $symlink = $tv_grab_au unless ($symlink && $symlink eq '/usr/bin/tv_grab_au');
    1035 
    1036         if (-e $tv_grab_au)
    1037         {
    1038             if (-l $tv_grab_au)
    1039             {
    1040                 my $link = readlink($tv_grab_au);
    1041                 if ($link and $link eq $me)
    1042                 {
    1043                     &::log("Symlink $tv_grab_au is correctly mapped to $me.\n");
    1044                     $mapped = $tv_grab_au;
    1045                     last;
    1046                 }
    1047             }
    1048             push @delete_me, $tv_grab_au;
    1049         }
    1050     }
    1051 
    1052     &::log("\n");
    1053 
    1054     if (!$mapped or @delete_me)
    1055     {
    1056         if (@delete_me)
    1057         {
    1058             &::log("\nShepherd would like to DELETE the following file(s):\n\n");
    1059             system ("ls -l @delete_me");
    1060             &::log("\n");
    1061         }
    1062         if (!$mapped)
    1063         {
    1064             &::log("Shepherd would like to CREATE the following symlink:\n\n".
    1065                 " $symlink -> $me\n\n");
    1066         }
    1067 
    1068         my $response = &XMLTV::Ask::ask_boolean(
    1069             ucfirst(
    1070                 ($mapped ? '' : ( 'create symlink ' . (@delete_me ? 'and ' : ''))) .
    1071                 (@delete_me ? 'delete ' . scalar(@delete_me) . ' file(s)' : '')) .
    1072             '?', 1);
    1073         unless ($response)
    1074         {
    1075             &::log("Aborting.\n");
    1076             return;
    1077         }
    1078 
    1079         system("sudo rm @delete_me") if (@delete_me);
    1080         system("sudo ln -s $me $symlink") unless ($mapped);
    1081     }
    1082 
    1083     &::log("Symlink established:\n");
    1084     system("ls -l `which tv_grab_au`");
     1091           "------\n");
     1092    &create_symlink();
    10851093
    10861094    # 2. Insert 'tv_grab_au' into mythconverg -> videosource
Note: See TracChangeset for help on using the changeset viewer.