Skip to content
User and staff utilities for the Open Computing Facility
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
acct
bin
desktop
makeservices
net
printing
sbin
staff
sys
vendor
.activate.sh
.deactivate.sh
.gitignore
.pre-commit-config.yaml
Jenkinsfile
LICENSE
Makefile
README.md
requirements-dev.txt
shell-lint.sh
tox.ini
update-symlinks

README.md

utils

Build Status

utils is a repository of scripts used by the Open Computing Facility at the University of California, Berkeley.

What belongs here

Scripts for humans do

In general, scripts which might be executed by a person should go here. System scripts (things that go primarily in cronjobs or similar) should go in the ocf/puppet repo instead.

Scripts of all languages are welcome, and should be organized into appropriate directories. Use staff/ for anything that will typically only be executed by staff.

Libraries don't

If your utility is meant to be imported, it should probably go in ocflib instead. If you're writing a script whose functionality might be useful elsewhere, separate that out, put it in ocflib, and call it from a binary in this repo.

General best practices

All languages

  • Executable files should be marked executable, contain a proper shebang, and generally not have a file extension.

Python

  • Use ocflib functionality when it exists, and put reusable code there (and call it from an executable here).
  • When possible, target Python 3.5 and 3.7 (same versions as ocflib)
  • Generally follow PEP8.

Shell/Bash

  • Use /bin/bash over /bin/sh unless your script is for some alien environment where there is no bash. Don't be afraid to use bashisms.
  • Typically add set -euo pipefail, especially for any complicated scripts. This (a) stops on errors, (b) errors on accessing undefined variables, and (c) errors on failures in the middle of a pipeline. Together these make Bash into something resembling a passable programming language.
  • Quote things and otherwise follow best practices.

Other languages

  • Consider writing in Python instead.
You can’t perform that action at this time.