chickadee » install

install

Description

A Scheme implementation of the Unix utility install.

Documentation

install-file FILES TARGET #!key OWNER GROUP (MODE 755) PRESERVE-TIMEprocedure

File(s) are copied to the target file or directory. If the destination is a directory, then the file is copied into the directory with its original filename. If the target file already exists, it is overwritten if permissions allow. install-file attempts to prevent installing a file onto itself. Installing /dev/null (nul on Windows) creates an empty file. mode must be expressed in octal notation; mode, owner and group are ignored on Windows. The return value is unspecified.

install-dir DIRECTORIES #!key OWNER GROUP (MODE 755)procedure

Create all components of the given directory(ies). mode must be expressed in octal notation; mode, owner and group are ignored on Windows. The return value is unspecified.

(install [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC DST)syntax
(install [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC ... DIR)syntax
(install [-g GROUP] [-m MODE] [-o OWNER] -d DIR ...)syntax

Handy command-line-like syntax around install-file and install-directory.

file=? FILE1 FILE2procedure

Determine whether two paths represents the same file.

Examples

(use install)

(install -?)
(install -d "/tmp/tests")
(install -d "C:\\tmp\\tests")
(install -d "C:/tmp/tests")
(install -d "/tmp/tests/a" "/tmp/tests/b")
(install -d -m 644 "/tmp/tests")

(install -m 644 "file1" "/tmp/tests")
(install -m 644 "file1" "file2")
(install -m 644 "file1" "file2" "/tmp/tests")
(install -o "mikele" -m 644 "file1" "/tmp/tests")
(install -m 644 -p "file1" "/tmp/tests")
(install "/dev/null" "/usr/bin/empty")
(install "nul" "C:/bin/empty")

(install-file "file1" "/tmp/tests")
(install-file '("file1") "/tmp/tests")
(install-file '("file1" "file2") "/tmp/tests")
(install-file (glob "file*") "/tmp/tests")
(install-file "file1" "/tmp/tests" mode: 644)

(install-directory "/tmp/tests")
(install-directory '("/tmp/tests"))
(install-directory '("/tmp/tests/a" "/tmp/tests/b"))
(install-directory "/tmp/tests" group: 0 owner: "mikele")

(begin (create-symbolic-link "vi" "emacs")
       (file=? "emacs" "vi"))                                ;; #t
(begin (change-directory "C:\\Windows")
       (file=? "C:\\Windows\\notepad.exe" "notepad.exe"))    ;; #t

Requirements

None. Windows (mingw32) users need to build CHICKEN from git (or a stability version > 4.9.0.1).

Installation

$ chicken-install install

Optionally a command-line utility (instll) is also available.

$ chicken-install install -D install-cmd
$ instll
Usage:

  instll [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC DST
  instll [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC ... DIR
  instll      [-g GROUP] [-m MODE] [-o OWNER] -d DIR ...

  -g      Set group ownership, instead of process' current group.

  -m      Set permission mode instead of rwxr-xr-x (755). The mode must
          be expressed in octal notation.

  -o      Set ownership (super-user only).

  -p      Preserve timestamps. Apply modification time of SRC files to
          corresponding destination files.

About this egg

The source code is hosted at Bitbucket. Feel free to send pull requests or open an issue there. Alternatively, send an e-mail to the chicken-users mailing list for information or requests.

Version History

1.0.1
Initial release

Author

Michele La Monaca

Contents »