Coder Social home page Coder Social logo

styleguide-sh's Introduction

rodrigobdz's Shell Style Guide

Opinionated guide on how to organize scripts and which rules to follow while writing them.

Motivation

Usage

File Naming Convention

We follow a modified version of github/scripts-to-rule-them-all:

  • utils.sh - shared functions and variables
  • script/bootstrap - installs all dependencies
  • script/setup - sets up a project to be used for the first time
  • script/update - updates a project to run at its current version
  • script/build - builds package
  • script/up - starts app
  • script/test - runs tests
  • script/console - opens a console for your application.
  • script/cibuild - invoked by continuous integration servers to run tests

If script targets a specific OS version, add it to the filename after a hyphen. We like hyphens.

Example: script/bootstrap-mac or script/bootstrap-centos

File Extensions

Executables should have no extension.

Libraries must have a .sh extension and should not be executable.

Source: Google's Shell Style Guide

Code Style

  • Google Shell Style Guide - Set of best practices, additional to linter use.

    Only modifications are:

    • Shebang: #!/usr/bin/env bash

    • Shell Options:

      shopt -s inherit_errexit
      set -o errexit # Abort script at first error
      set -o pipefail # Return last non-zero status in pipeline
      set -o nounset # Exit if any variable is undefined
      # Optional
      set -o verbose # Print commands before executing them
    • Source Filenames: We prefer hyphens instead of underscores.

  • ShellCheck - Linter

Example

#!/usr/bin/env bash
#
# Install all project dependencies.

shopt -s inherit_errexit
set -o errexit
set -o pipefail
set -o nounset

License

MIT © rodrigobdz

styleguide-sh's People

Contributors

rodrigobdz avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.