Skip to content

Instantly share code, notes, and snippets.

@brutus
brutus / Makefile
Created February 28, 2023 14:47
Makefile & Stuff
# include ARGS dynamically
ifeq (run,$(firstword $(MAKECMDGOALS)))
# use the rest as arguments for "run"
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
# ...and turn them into do-nothing targets
$(eval $(RUN_ARGS):;@:)
endif
# handle ENV file

Keybase proof

I hereby claim:

  • I am brutus on github.
  • I am brutusdmc (https://keybase.io/brutusdmc) on keybase.
  • I have a public key ASCBMtJBtbl2Og0T9r1A_vpvQze_cV7-GVtmlX7RNnNAPAo

To claim this, I am signing this object:

@brutus
brutus / scanmail.sh
Created August 23, 2018 23:41
scan trough qmail queue
#!/bin/bash
header_lines=${1:-10}
base_path=${2:-'/var/qmail-relay'}
for i in $( \
${base_path}/bin/qmail-qread \
| grep -Po '#\d+' \
| cut -c2-
); do
@brutus
brutus / misc-backup.automount
Created July 24, 2018 08:22
systemd automount NFS partitions and icinga disk check
# /etc/systemd/system/misc-backup.automount
[Unit]
Description=Automount for NFS backup share from 'host.domain.com'
Requisite=network-online.target
After=network-online.service
[Automount]
Where=/misc/backup
TimeoutIdleSec=60
@brutus
brutus / Makefile
Created August 16, 2017 13:22
Makefile for Python projects
# Python Project
#
# Some targets to lint your code, run tests, builds and do some cleanup.
# Works fine with tox and Travis, etc.
#
# This setup assumes that you take care of the virtual environment setup
# yourself and that the needed requirements are installed. And also that
# you configure your tools. So edit your own `setup.cfg` or `.tox.ini`
# with the settings needed for the tools.
#
@brutus
brutus / migrate_collation.py
Created June 30, 2017 14:51
Converts the collation and character set of a database using a Django migration.
"""
Converts the *collation* and *character set* of a database using a Django
migration. Data in the tables is converted if needed.
"""
from django.db import migrations
def get_conversion_function(collation, character_set='utf8'):
@brutus
brutus / collection_pipeline.py
Last active June 16, 2017 18:06
Pipeline class to collect items using Scrapy
"""
This pipeline collects yielded items to process them after a crawl finishes.
Overview
========
For each yielded item :meth:`process_item` is called — and handles the storing
of items for later use. After all items are yielded, :meth:`close_spider` is
called and assembles the data from the previously collected items
(:meth:`assemble_collection`) and dumps the results (:meth:`dump_collection`).
@brutus
brutus / tasks.py
Created May 17, 2017 18:25
Collection of invoke tasks to test `dry` setting.
"""
Quick check for `dry` / `ignore_dry` args to ``run``.
An ``invoke undry dry`` should result in::
[undry] Hello World!
[undry] Hello other World!
echo '[isdry] Hello World!'
[isdry] Hello other World!
@brutus
brutus / toast.py
Last active July 3, 2017 16:36
A very basic Ansible module for toast.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
Ansible module to interact with `toast`_.
To use this from Ansible, copy it in your `library`_::
cd path/to/library
git clone https://gist.github.com/brutus/ba3b110c3041777e2e976b61e924b18c toast
@brutus
brutus / add.py
Created October 1, 2015 15:15
Mutagen MP3 Image Error
def add_image(
filenames, image_path, description='Cover', img_type=3, encoding=3
):
"""
Adds an image to MP3 from *filenames*.
Args:
filenames (lits): paths to the MP3
image_path (string): path to image file