Skip to content

Instantly share code, notes, and snippets.

@grncdr
grncdr / data.csv
Created June 17, 2015 22:29
Demo of importing a CSV file into a Contentful space
first name last name age
Stephen Sugden 31
Tom Reznik 29
Justin Thomas 30
@grncdr
grncdr / 00-Readme.md
Last active October 6, 2025 20:19
Delete unused assets

Delete unused assets

This is an example script for deleting assets that aren't linked in your content model. It does this by walking through all assets and checking for any links back to them.

WARNING: This script does not take into account assets that are only linked inside of Text fields. If you primarily embed images directly using the markdown editor, this will very likely delete assets you depend on.

You must fill in your own CMA access token & space ID at the top before running

Usage

@grncdr
grncdr / foo.pl
Created February 13, 2016 09:55
Script for cleaning up old homebrew deps
#!/usr/bin/env perl
use strict;
sub main {
my $keep = {};
loop($keep);
}
sub loop {
@grncdr
grncdr / typescript.vim
Created March 6, 2016 09:17
Load tsconfig.json and add extra syntastic args if found
function! LoadTsConfig()
let search_depth = 20
let dirname = fnamemodify(expand('%'), ":p:h")
while search_depth > 0 && dirname != "/"
let search_depth = search_depth - 1
let filename = dirname . "/tsconfig.json"
" while filename
if filereadable(filename)
let b:tsconfig_path = filename
let tsconfig = jsondecode(join(readfile(filename)))
@grncdr
grncdr / find-runscope-errors.js
Created August 1, 2016 12:18
Find errors from runscope
#!/usr/bin/env node
const https = require('https')
const accessToken = 'ACCESS_TOKEN'
const bucket = 'BUCKET_KEY'
const testId = 'TEST_ID'
function formatLink (result) {
const start = new Date(result.started_at * 1000).toISOString()
@grncdr
grncdr / fix-id-sequences.sql
Created December 15, 2016 21:58
Found myself needing this today to fix a bunch of broken ID sequences in a Rails DB that it been incorrectly restored from a backup.
DO $$
var rows = plv8.execute("select tablename, pg_get_serial_sequence(tablename, 'id') seqname from " +
"(select tablename from pg_tables where schemaname = 'public' and tablename != 'schema_migrations') blah"
)
rows.forEach(function (row) {
plv8.execute("select setval('" + row.seqname + "', (select max(id) from " + row.tablename + ")+1, false)")
})
$$ LANGUAGE plv8;

Keybase proof

I hereby claim:

  • I am grncdr on github.
  • I am grncdr (https://keybase.io/grncdr) on keybase.
  • I have a public key ASDwB6kzUc-wV7jvW5RtkoQvY9KyPtA5q-7TqkxwERwkEAo

To claim this, I am signing this object:

@grncdr
grncdr / git-stash-review
Created June 5, 2018 09:56
shell script for reviewing your git stashes
#!/bin/bash
RETAINED_STASHES="0"
REMAINING_STASHES=$(git stash list | wc -l)
while true; do
if [ "$REMAINING_STASHES" == "0" ]; then
echo "All done"
break
fi
@grncdr
grncdr / set-retention-policies.sh
Created January 29, 2019 10:04
One liner for setting retention policy on a set of cloudwatch log groups
#!/bin/sh
PATTERN="my-app-production"
RETENTION_IN_DAYS="30"
for group_name in $(aws logs describe-log-groups | jq -r '.logGroups[]|.logGroupName' | grep $PATTERN); do
aws logs put-retention-policy --log-group-name $group_name --retention-in-days $RETENTION_IN_DAYS;
done
@grncdr
grncdr / machine.js
Last active August 6, 2019 15:46
Generated by XState Viz: https://xstate.js.org/viz
const invoiceMachine = Machine({
id: 'invoice',
initial: 'open',
states: {
open: {
on: {
CLOSE: {
target: 'closed',
actions: [
'open_next_invoice',