Skip to content

Instantly share code, notes, and snippets.

Avatar

Timothy Jones TimothyJones

  • Melbourne, Australia
View GitHub Profile
@TimothyJones
TimothyJones / semver-from-git.sh
Created May 8, 2020
Short bash script that figures out the semver from your git tags, plus some useful context when not on a tag
View semver-from-git.sh
#!/bin/bash -eu
# This script prints out git metadata information for a given commit (or head by default)
# It assumes tags of the form `v1.2.3`, and will print prerelease versions when
# not on an exact tag.
#
# It is intended to be used like so:
#
# cd <some-git-repo>
# $(../semver-from-git.sh)
@TimothyJones
TimothyJones / getDecryptedEnv.js
Last active Sep 30, 2020
A javascript module that demonstrates decrypting some KMS-encrypted environment variables
View getDecryptedEnv.js
const AWS = require('aws-sdk');
const encryptedEnvironmentVariableNames = ['SOME_VARIABLE', 'SOME_OTHER_VARIABLE'];
// This module exports a function that returns a promise for obtaining
// a decrypted copy of the environnment.
//
// Configure it by putting the name of each environment variable you would like to
// decrypt above.
//
@TimothyJones
TimothyJones / ssm-kms-put-parameter.sh
Created Aug 30, 2019
Example script for putting KMS-encrypted parameters into SSM as plain strings
View ssm-kms-put-parameter.sh
#!/bin/bash -eu
# (C) Timothy Jones
# This function prints the usage
function usage {
{
echo "Usage:"
echo " ${BASH_SOURCE[0]} <NAME> <VALUE> <KEY_ID>"
echo " NAME - the name of the SSM variable"
@TimothyJones
TimothyJones / KMS-decrypt-example.js
Created Aug 30, 2019
Example showing a simple promisified decryption of a KMS encrypted string
View KMS-decrypt-example.js
const decrypt = data =>
new Promise((resolve, reject) =>
kms.decrypt(
{
CiphertextBlob: Buffer.from(data, 'base64')
},
(err, data) => {
if (err) {
reject(err);
} else {
@TimothyJones
TimothyJones / getSsmConfig.js
Created Aug 28, 2019
Example showing a promisified SSM config reader for SecureString parameters
View getSsmConfig.js
const AWS = require('aws-sdk');
const ssm = new AWS.SSM();
const configFeatures = {
'/path/to/your/config/option': 'someOption',
'/path/to/your/config/something_else': 'somethingElse'
};
const getConfig = () =>
@TimothyJones
TimothyJones / robust-bash.sh
Last active May 7, 2020
These are (currently) the only functions I recommend porting around when writing bash scripts
View robust-bash.sh
#!/bin/bash -eu
if [ -z "${LIB_ROBUST_BASH_SH:-}" ]; then
LIB_ROBUST_BASH_SH=included
function error {
echo "Error: ${1:-}"
}
# Check to see that we have a required binary on the path
function require_binary {
@TimothyJones
TimothyJones / safe_mode.sh
Last active Aug 13, 2019
Bash script safe mode
View safe_mode.sh
# start your script with
#!/bin/bash -eu
# Or
#!/usr/bin/env bash
set -o errexit
set -o nounset
@TimothyJones
TimothyJones / pact-dsl-pitch.md
Last active Nov 4, 2019
Proposal to improve the Pact-JS DSL
View pact-dsl-pitch.md

Improving the Pact-JS DSL

(Thanks to Andras Bubics and Matt Fellows for many discussions leading to this proposal)

Test frameworks for Javascript are diverse - some run in parallel by default, some have different testing styles or expectations (eg BDD), and they all have different ways to configure and instrument the test framework.

The Pact workflow also includes a number of (necessary) assumptions and expectations - such as the need to keep

@TimothyJones
TimothyJones / gist:ff3fa2e5a04ab75743bc30a9425ae1d0
Last active Aug 25, 2017
Trying to get nice console formatting
View gist:ff3fa2e5a04ab75743bc30a9425ae1d0

With bash

git clone "<your-project-url>"
$ git clone "<your-project-url>"
Cloning into "'<your-project>'"...

With console

@TimothyJones
TimothyJones / handy_commands.md
Last active May 20, 2019
Tim's awesome command cheatsheet
View handy_commands.md

Prettier

Format all files in src:

prettier --config .prettierrc --write "src/**/*.js"

Or, more generally:

prettier --config <path-to-config> --write "<source-path>/**/*.js"
You can’t perform that action at this time.