OSDN Git Service

add color support for tput
[pinky-bar/pinky-bar.git] / set.pl
1 # 11/01/2016
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
7
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
16 # MA 02110-1301, USA.
17
18 use strict;
19 use warnings;
20
21 use File::Copy;
22 use Term::ANSIColor qw(:constants);
23 use List::Util qw(any);
24
25 sub re_read {
26   my ($filename) = @_;
27   my $derefs = $$filename;
28   my $fh;
29
30   open($fh, '<:encoding(UTF-8)', $derefs)
31     or die "Could not open file '$derefs' $!";
32   local $/ = undef; # <--- slurp mode
33   my $concatArr = <$fh>;
34   close($fh);
35
36   return \$concatArr;
37 }
38
39 sub re_write {
40   my ($filename,$concatArr) = @_;
41   my $derefs = $$filename;
42   my $fh;
43
44   open($fh, '>:encoding(UTF-8)', $derefs) 
45     or die "Could not open file '$derefs' $!";
46
47   print $fh $$concatArr;
48   close($fh);
49   return;
50 }
51
52 sub reflace_configure {
53   my ($new) = @_;
54   my $filename = "configure.ac";
55   my @arr = split("\n",${re_read(\$filename)});
56
57   if ($arr[9]) {
58     $arr[9] = $$new;
59   }
60   my $concatArr = join("\n", @arr);
61
62   re_write(\$filename,\$concatArr);
63   return;
64 }
65
66 sub reflace_many {
67   my ($arr,$filename) = @_;
68   my $derefFilename = $$filename;
69   my @arr2 = @$arr;
70   my ($x,$arrLen) = (0,$#arr2);
71   my $derefs = ${re_read(\$derefFilename)};
72
73   for (; $x <= $arrLen; $x++) {
74     $derefs =~ s/${$arr2[$x][0]}/${$arr2[$x][1]}/g;
75   }
76   re_write(\$derefFilename,\$derefs);
77   return;
78 }
79
80 sub reflace_single {
81   my ($ag1,$ag2,$filename) = @_;
82   my $derefFilename = $$filename;
83   my $derefs = ${re_read(\$derefFilename)};
84
85   $derefs =~ s/$$ag1/$$ag2/g;
86   re_write(\$derefFilename,\$derefs);
87   return;
88 }
89
90
91 {
92
93   if (-1 == $#ARGV) {
94     die "No OS/Distro supplied.";
95   }
96
97   my $osEntered = uc $ARGV[0];
98   my @osArr = (
99     "PALDO","DRAGORA","GUIXSD",
100     "SLITAZ","TINYCORELINUX","NIXOS",
101     "ARCHLINUX","DEBIAN","ALPINELINUX",
102     "GENTOO","SLACKWARE","CRUX",
103     "RHEL","FRUGALWARE","VOIDLINUX",
104     "ANGSTROM","FREEBSD","OPENBSD"
105   );
106   my $hasMatch = any { $_ eq $osEntered } @osArr;
107   if ($hasMatch eq "") {
108     print GREEN, "Pick one base: ", BRIGHT_BLUE, "@osArr\n", RESET;
109     die RED, "Invalid \"", YELLOW, $osEntered, RED, "\" - OS/Distro supplied.", RESET;
110   }
111
112   my $srcMake = "src/Makefile.am";
113   my $defTits = "m4_define([cuRos],[$osEntered])";
114   my $bsdCF = "-D_DEFAULT_SOURCE -L/usr/local/lib";
115   my $posixCF = "-D_POSIX_C_SOURCE=200112L";
116   my ($amStr, $srcStr, $bsdStr) = ("{amCF}","{srcFiles}","{bzdlibs}");
117   my ($amCF, $srcToAppend, $bsdLibs) = ("", "", "");
118
119   if ($osEntered eq "FREEBSD") {
120     $bsdLibs = "-largp -ldevstat";
121     $amCF = \$bsdCF;
122     $defTits = "$defTits m4_define([FREEBZD], [tits])";
123     $srcToAppend = "freebsd_functions.c include/freebzd.h";
124   }
125   elsif ($osEntered eq "OPENBSD") {
126     $bsdLibs = "-largp -lossaudio";
127     $amCF = \$bsdCF;
128     $defTits = "$defTits m4_define([OPENBZD], [forSure])";
129     $srcToAppend = "openbsd_functions.c include/openbzd.h";
130   }
131   else {
132     $amCF = \$posixCF;
133     $defTits = "$defTits m4_define([LINUKS], [cryMeAriver])";
134     $srcToAppend = "linux_functions.c";
135   }
136
137   copy("src/Makefail.skel",$srcMake)
138     or die "Could not copy src/Makefail.skel $!";
139   print "Copying src/Makefail.skel as $srcMake ... ", GREEN, "OK\n", RESET;
140
141   reflace_configure(\$defTits);
142   print "Replacing variables in configure.ac ... ", GREEN, "OK\n", RESET;
143
144   my @hugeArr = (
145     [\$amStr, \$$amCF],
146     [\$srcStr, \$srcToAppend],
147     [\$bsdStr, \$bsdLibs]
148   );
149   reflace_many(\@hugeArr,\$srcMake);
150   print "Replacing variables in $srcMake ... ", GREEN, "OK\n", RESET;
151
152   print "Setting up $osEntered ... ", GREEN, "OK\n", RESET;
153 }