]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - make/common.pm
Update copyright headers.
[user/henk/code/inspircd.git] / make / common.pm
index d5a2f06c73c0cb8537fb03a910875d840efe0f7c..7046b878fe10324c3cde6f2b9e0629397393afa5 100644 (file)
@@ -1,7 +1,7 @@
 #
 # InspIRCd -- Internet Relay Chat Daemon
 #
-#   Copyright (C) 2013-2017 Peter Powell <petpow@saberuk.com>
+#   Copyright (C) 2014-2017, 2019-2021 Sadie Powell <sadie@witchery.services>
 #
 # This file is part of InspIRCd.  InspIRCd is free software: you can
 # redistribute it and/or modify it under the terms of the GNU General Public
 #
 
 
-BEGIN {
-       require 5.10.0;
-}
-
 package make::common;
 
-use feature ':5.10';
+use v5.10.0;
 use strict;
 use warnings FATAL => qw(all);
 
@@ -31,11 +27,14 @@ use Exporter              qw(import);
 use File::Path            qw(mkpath);
 use File::Spec::Functions qw(rel2abs);
 
+use make::console;
+
 our @EXPORT = qw(create_directory
+                 execute
                  get_cpu_count
                  get_version
                  read_config_file
-                 module_installed);
+                 write_config_file);
 
 sub create_directory($$) {
        my ($location, $permissions) = @_;
@@ -45,6 +44,11 @@ sub create_directory($$) {
        } // 0;
 }
 
+sub execute(@) {
+       say console_format "<|BOLD \$|> @_";
+       return system @_;
+}
+
 sub get_version {
        state %version;
        return %version if %version;
@@ -57,7 +61,7 @@ sub get_version {
 
        # Attempt to retrieve missing version information from Git
        chomp(my $gr = `git describe --tags 2>/dev/null`);
-       if ($gr =~ /^v([0-9]+)\.([0-9]+)\.([0-9]+)(?:-\d+-g(\w+))?$/) {
+       if ($gr =~ /^v([0-9]+)\.([0-9]+)\.([0-9]+)(?:[a-z]+\d+)?(?:-\d+-g(\w+))?$/) {
                $version{MAJOR} //= $1;
                $version{MINOR} //= $2;
                $version{PATCH} //= $3;
@@ -66,6 +70,7 @@ sub get_version {
 
        # If the user has specified a distribution label then we use it in
        # place of the label from src/version.sh or Git.
+       $version{REAL_LABEL} = $version{LABEL};
        $version{LABEL} = shift // $version{LABEL};
 
        # If any of these fields are missing then the user has deleted the
@@ -87,12 +92,6 @@ sub get_version {
        return %version;
 }
 
-sub module_installed($) {
-       my $module = shift;
-       eval("use $module;");
-       return !$@;
-}
-
 sub get_cpu_count {
        my $count = 1;
        if ($^O =~ /bsd/) {
@@ -121,4 +120,15 @@ sub read_config_file($) {
        return %config;
 }
 
+sub write_config_file($%) {
+       my $path = shift;
+       my %config = @_;
+       open(my $fh, '>', $path) or print_error "unable to write to $path: $!";
+       while (my ($key, $value) = each %config) {
+               $value //= '';
+               say $fh "$key $value";
+       }
+       close $fh;
+}
+
 1;