Provided by: rex_1.6.0-1_all bug

NAME

       Rex::Commands::Fs - Filesystem commands

DESCRIPTION

       With this module you can do file system tasks like creating a directory, deleting files,
       moving files, and more.

SYNOPSIS

        my @files = list_files "/etc";

        unlink("/tmp/file");

        rmdir("/tmp");
        mkdir("/tmp");

        my %stat = stat("/etc/passwd");

        my $link = readlink("/path/to/a/link");
        symlink("/source", "/dest");

        rename("oldname", "newname");

        chdir("/tmp");

        is_file("/etc/passwd");
        is_dir("/etc");
        is_writeable("/tmp");
        is_writable("/tmp");

        chmod 755, "/tmp";
        chown "user", "/tmp";
        chgrp "group", "/tmp";

EXPORTED FUNCTIONS

   list_files("/path");
       This function list all entries (files, directories, ...) in a given directory and returns
       a array.

        task "ls-etc", "server01", sub {
          my @tmp_files = grep { /\.tmp$/ } list_files("/etc");
        };

       This command will not be reported.

   ls($path)
       Just an alias for list_files

   symlink($from, $to)
       This function will create a symlink from $from to $to.

        task "symlink", "server01", sub {
          symlink("/var/www/versions/1.0.0", "/var/www/html");
        };

   ln($from, $to)
       ln is an alias for symlink

   unlink($file)
       This function will remove the given file.

        task "unlink", "server01", sub {
          unlink("/tmp/testfile");
        };

   rm($file)
       This is an alias for unlink.

   rmdir($dir)
       This function will remove the given directory.

        task "rmdir", "server01", sub {
          rmdir("/tmp");
        };

       Since: 0.45 Please use the file() resource instead.

        task "prepare", sub {
          file "/tmp",
            ensure => "absent";
        };

   mkdir($newdir)
       This function will create a new directory.

       Since: 0.45 Please use the file() resource instead.

        task "prepare", sub {
          file "/tmp",
            ensure => "directory",
            owner  => "root",
            group  => "root",
            mode   => 1777;
        };

        task "mkdir", "server01", sub {
          mkdir "/tmp";

          mkdir "/tmp",
            owner => "root",
            group => "root",
            mode => 1777;
        };

   chown($owner, $file)
       Change the owner of a file or a directory.

        chown "www-data", "/var/www/html";

        chown "www-data", "/var/www/html",
                       recursive => 1;

       This command will not be reported.

       If you want to use reports, please use the file() resource instead.

   chgrp($group, $file)
       Change the group of a file or a directory.

        chgrp "nogroup", "/var/www/html";

        chgrp "nogroup", "/var/www/html",
                     recursive => 1;

       This command will not be reported.

       If you want to use reports, please use the file() resource instead.

   chmod($mode, $file)
       Change the permissions of a file or a directory.

        chmod 755, "/var/www/html";

        chmod 755, "/var/www/html",
                 recursive => 1;

       This command will not be reported.

       If you want to use reports, please use the file() resource instead.

   stat($file)
       This function will return a hash with the following information about a file or directory.

       mode
       size
       uid
       gid
       atime
       mtime

        task "stat", "server01", sub {
          my %file_stat = stat("/etc/passwd");
        };

       This command will not be reported.

   is_file($file)
       This function tests if $file is a file. Returns 1 if true. 0 if false.

        task "isfile", "server01", sub {
          if( is_file("/etc/passwd") ) {
            say "it is a file.";
          }
          else {
            say "hm, this is not a file.";
          }
        };

       This command will not be reported.

   is_dir($dir)
       This function tests if $dir is a directory. Returns 1 if true. 0 if false.

        task "isdir", "server01", sub {
          if( is_dir("/etc") ) {
            say "it is a directory.";
          }
          else {
            say "hm, this is not a directory.";
          }
        };

       This command will not be reported.

   is_symlink($file)
       This function tests if $file is a symlink. Returns 1 if true. 0 if false.

        task "issym", "server01", sub {
          if( is_symlink("/etc/foo.txt") ) {
            say "it is a symlink.";
          }
          else {
            say "hm, this is not a symlink.";
          }
        };

       This command will not be reported.

   is_readable($file)
       This function tests if $file is readable. It returns 1 if true. 0 if false.

        task "readable", "server01", sub {
          if( is_readable("/etc/passwd") ) {
            say "passwd is readable";
          }
          else {
            say "not readable.";
          }
        };

       This command will not be reported.

   is_writable($file)
       This function tests if $file is writable. It returns 1 if true. 0 if false.

        task "writable", "server01", sub {
          if( is_writable("/etc/passwd") ) {
            say "passwd is writable";
          }
          else {
            say "not writable.";
          }
        };

       This command will not be reported.

   is_writeable($file)
       This is only an alias for is_writable.

       This command will not be reported.

   readlink($link)
       This function returns the link endpoint if $link is a symlink. If $link is not a symlink
       it will die.

        task "islink", "server01", sub {
          my $link;
          eval {
            $link = readlink("/tmp/testlink");
          };

          say "this is a link" if($link);
        };

       This command will not be reported.

   rename($old, $new)
       This function will rename $old to $new. Will return 1 on success and 0 on failure.

        task "rename", "server01", sub {
          rename("/tmp/old", "/tmp/new");
        };

   mv($old, $new)
       mv is an alias for rename.

   chdir($newdir)
       This function will change the current workdirectory to $newdir. This function currently
       only works local.

        task "chdir", "server01", sub {
          chdir("/tmp");
        };

       This command will not be reported.

   cd($newdir)
       This is an alias of chdir.

   df([$device])
       This function returns a hashRef reflecting the output of df

        task "df", "server01", sub {
           my $df = df();
           my $df_on_sda1 = df("/dev/sda1");
        };

       This command will not be reported.

   du($path)
       Returns the disk usage of $path.

        task "du", "server01", sub {
          say "size of /var/www: " . du("/var/www");
        };

       This command will not be reported.

   cp($source, $destination)
       cp will copy $source to $destination (it is recursive)

        task "cp", "server01", sub {
           cp("/var/www", "/var/www.old");
        };

   mount($device, $mount_point, @options)
       Mount devices.

        task "mount", "server01", sub {
          mount "/dev/sda5", "/tmp";
          mount "/dev/sda6", "/mnt/sda6",
                 ensure    => "present",
                 type      => "ext3",
                 options   => [qw/noatime async/],
                 on_change => sub { say "device mounted"; };
          #
          # mount persistent with entry in /etc/fstab

          mount "/dev/sda6", "/mnt/sda6",
                 ensure     => "persistent",
                 type       => "ext3",
                 options    => [qw/noatime async/],
                 on_change  => sub { say "device mounted"; };

          # to umount a device
          mount "/dev/sda6", "/mnt/sda6",
                 ensure => "absent";

        };

       In order to be more aligned with `mount` terminology, the previously used `fs` option has
       been deprecated in favor of the `type` option. The `fs` option is still supported and
       works as previously, but Rex prints a warning if it is being used. There's also a warning
       if both `fs` and `type` options are specified, and in this case `type` will be used.

   umount($mount_point)
       Unmount device.

        task "umount", "server01", sub {
          umount "/tmp";
        };

   glob($glob)
        task "glob", "server1", sub {
          my @files_with_p = grep { is_file($_) } glob("/etc/p*");
        };

       This command will not be reported.