nix: Migrate scripts

They're a bit slower to start :(.
Hopefully this is something that flakes will help with,
otherwise I'll find another way.
This commit is contained in:
Geoffrey Frogeye 2023-11-26 21:04:58 +01:00
parent 33945f865f
commit 1f61ceb395
Signed by: geoffrey
GPG key ID: C72403E7F82E6AD8
93 changed files with 178 additions and 478 deletions

View file

@ -16,7 +16,6 @@ let
YARN_CACHE_FOLDER = "${config.xdg.cacheHome}/yarn";
# TODO Some of that stuff is not really relavant any more
};
dotfilesPath = "$HOME/.dotfiles"; # FIXME I think we want it in ~/.config/dotfiles, also, should be an option
in
{
@ -133,6 +132,18 @@ in
diff = "diff --color=auto";
dmesg = "dmesg --ctime";
wget = "wget --hsts-file ${config.xdg.cacheHome}/wget-hsts";
# Imported from scripts
rms = ''${pkgs.findutils}/bin/find . -name "*.sync-conflict-*" -delete''; # Remove syncthing conflict files
pw = ''${pkgs.pwgen}/bin/pwgen 32 -y''; # Generate passwords. ln((26*2+10)**32)/ln(2) ≅ 190 bits of entropy
newestFile = ''${pkgs.findutils}/bin/find -type f -printf '%T+ %p\n' | sort | tail'';
oldestFile = ''${pkgs.findutils}/bin/find -type f -printf '%T+ %p\n' | sort | head'';
tracefiles = ''${pkgs.strace}/bin/strace -f -t -e trace=file'';
} // lib.optionalAttrs config.frogeye.desktop.xorg {
noise = ''${pkgs.sox}/bin/play -c 2 -n synth $'' + ''{1}noise'';
beep = ''${pkgs.sox}/bin/play -n synth sine E5 sine A4 remix 1-2 fade 0.5 1.2 0.5 2> /dev/null'';
# FIXME ALSA lib dlmisc.c:337:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_pulse.so (/nix/store/9b06fxbvm07iy9f9dvi5vk2iy9pk8hyz-alsa-lib-1.2.8/lib/alsa-lib/libasound_module_pcm_pulse.so: cannot open shared object file: No such file or directory)
} // lib.attrsets.mergeAttrsList (map (p: { "${p}" = "HOME=${config.xdg.cacheHome}/junkhome ${p}"; }) treatsHomeAsJunk);
# TODO Maybe make nixpkg wrapper instead? So it also works from dmenu
# Could also accept my fate... Home-manager doesn't necessarily make it easy to put things out of the home directory
@ -279,10 +290,10 @@ in
ff = "only";
};
} // lib.optionalAttrs config.frogeye.desktop.xorg {
diff.tool = "meld";
difftool.prompt = false;
"difftool \"meld\"".cmd = "${pkgs.meld}/bin/meld \"$LOCAL\" \"$REMOTE\"";
# This escapes quotes, which isn't the case in the original, hoping this isn't an issue.
diff.tool = "meld";
difftool.prompt = false;
"difftool \"meld\"".cmd = "${pkgs.meld}/bin/meld \"$LOCAL\" \"$REMOTE\"";
# This escapes quotes, which isn't the case in the original, hoping this isn't an issue.
};
# TODO Delta syntax highlighter... and other cool-looking options?
};
@ -399,6 +410,7 @@ in
wget
curl
python3Packages.pip
rename
# shell
zsh-completions
@ -425,9 +437,6 @@ in
ncdu
jdupes
duperemove
optipng
libjpeg
# FIXME reflac not available (but also a dumb shell script)
# local monitoring
htop
@ -490,9 +499,9 @@ in
} // direnv;
# TODO Session variables only get reloaded on login I think.
sessionPath = [
"$HOME/.local/bin"
"${config.home.homeDirectory}/.local/bin"
"${config.home.sessionVariables.GOPATH}"
"${dotfilesPath}/config/scripts"
"${config.frogeye.dotfiles.path}/config/nix/scripts"
];
};
}

View file

@ -605,7 +605,6 @@
twemoji-color-font
gnome.gedit
feh
zathura
zbar
zathura
meld

View file

@ -1,4 +1,4 @@
{ lib, ... }:
{ lib, config, ... }:
{
options.frogeye = {
extra = lib.mkEnableOption "Big software";
@ -13,6 +13,13 @@
fpga = lib.mkEnableOption "FPGA dev stuff";
python = lib.mkEnableOption "Python dev stuff";
};
dotfiles = {
path = lib.mkOption {
type = lib.types.str;
default = "${config.home.homeDirectory}/.dotfiles"; # FIXME I think we want it in ~/.config/dotfiles
# FIXME References to this use config/nix subfolder, which we might want to make root
};
};
};
config = {

View file

@ -54,7 +54,7 @@
chrony = {
enable = true;
servers = map (n: "${toString n}.europe.pool.ntp.org") (lib.lists.range 0 3);
extraConfig = "rtcsync";
extraConfig = "rtcsync"; # See 23.11 release notes
};
# Prevent power button from shutting down the computer.

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs
import argparse
import logging

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash openssh coreutils gawk gnused
# TODO More integrated with current config

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash
#! nix-shell -p bash pass libnotify
# TODO Password changed?

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs
"""
Same as picture_name_date

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash findutils git gnumake
# Removes files that can be regenerated
# from a dev environment

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.progressbar2 ffmpeg
import datetime
import hashlib

View file

@ -1,5 +1,7 @@
#!/usr/bin/env bash
# FIXME
if [ "$(cat /etc/hostname)" = "curacao.geoffrey.frogeye.fr" ]
then
echo 10000 | sudo tee /sys/class/backlight/intel_backlight/brightness

View file

@ -1,4 +1,6 @@
#!/usr/bin/env sh
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash docker gnugrep coreutils
# Find the dependent child image from an image

View file

@ -1,4 +1,7 @@
#!/usr/bin/env sh
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash docker
docker unpause $(docker ps -q)
docker kill $(docker ps -q)
docker container prune -f

View file

@ -1,4 +1,6 @@
#!/usr/bin/bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash tree coreutils
# Remplace le contenu d'un dossier par un fichier texte
# relatant son arborescense

View file

@ -0,0 +1,19 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash
# Clears everything it can to save space
rm -rf $HOME/.cache
if command -v pacman > /dev/null; then
sudo pacman -Scc
fi
if command -v apt-get > /dev/null; then
sudo apt-get clean
fi
if command -v nix-store > /dev/null; then
sudo journalctl --vacuum-size=100M
fi
if command -v journalctl > /dev/null; then
sudo journalctl --vacuum-size=100M
fi

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash git gnugrep coreutils findutils
# From https://stackoverflow.com/a/2083563

View file

@ -1,4 +1,6 @@
#!/usr/bin/bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash coreutils git gnused
# Replace git folders with a placeholder containing the remote and the commit

View file

@ -1,5 +1,7 @@
#!/usr/bin/env bash
# FIXME
if [ "$(cat /etc/hostname)" = "curacao.geoffrey.frogeye.fr" ]
then
echo 40000 | sudo tee /sys/class/backlight/intel_backlight/brightness

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3
import random
import sys

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3
import random
import sys

View file

@ -1,4 +1,6 @@
#!/usr/bin/env sh
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash jq curl findutils coreutils
set -euo pipefail

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash
# Generates Lorem Ipsum

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs ffmpeg
import logging
import os

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3
"""
Small script to convert music files in the form:

View file

@ -1,5 +1,7 @@
#!/usr/bin/env bash
# FIXME
if [ "$(cat /etc/hostname)" = "curacao.geoffrey.frogeye.fr" ]
then
echo 1 | sudo tee /sys/class/backlight/intel_backlight/brightness

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3
#! nix-shell -p python3 python3Packages.magic xdg-utils feh zathura
# pylint: disable=C0103
"""

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash coreutils imagemagick libjpeg optipng ffmpeg diffutils
# Optimizes everything the script can find in a folder,
@ -11,6 +13,7 @@
# TODO Lots of dupplicated code there
# TODO Maybe replace part with https://github.com/toy/image_optim?
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
dir=${1:-$PWD}
total=$(mktemp)
echo -n 0 > $total
@ -148,20 +151,18 @@ do
done <<< "$(find "$dir/" -type f -iname "*.png")"
# FLAC (requires reflac)
# FLAC (requires ffmpeg)
while read music
do
if [ -z "$music" ]; then continue; fi
echo Processing $music
temp_dir=$(mktemp --directory)
temp="$temp_dir/to_optimize.flac"
temp=$(mktemp --suffix .flac)
cp "$music" "$temp"
reflac --best "$temp_dir"
ffmpeg -8 -o "$temp"
echo "→ Optimize done"
replace "$temp" "$music"
rm -rf "$temp_dir"
done <<< "$(find "$dir/" -type f -iname "*.flac")"
@ -186,6 +187,6 @@ done <<< "$(find "$dir/" -type f -iname "*.flac")"
# - I might want to keep editor data and/or ids for some of them
# So rather use scour explicitely when needed
cleandev
${SCRIPT_DIR}/cleandev
showtotal

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash pdftk inkscape gnused coreutils file
# Utility to write over a PDF file pages

View file

@ -1,4 +1,6 @@
#!/usr/bin/bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash pdftk gnugrep gawk
# From https://stackoverflow.com/a/14736593
for FILE in "$@"

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash pdftk coreutils
# Change the title of a PDF file

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.exifread
import argparse
import datetime

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.pulsectl python3Packages.xlib
import sys

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs
"""
Same as picture_name_date

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash coreutils
# Moves a file to another place and put a symbolic link in place

View file

@ -1,4 +1,8 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.r128gain
# TODO r128gain is not maintainted anymore
# Normalisation is done at the default of each program,
# which is usually -89.0 dB

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.progressbar2
# Handles sync-conflict files

View file

@ -1,4 +1,7 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.configargparse python3Packages.filelock python3Packages.filelock python3Packages.requests python3Packages.yt-dlp ffmpeg
# Also needs mpv but if I put it there it's not using the configured one
"""

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3
#! nix-shell -p python3 python3Packages.colorama python3Packages.configargparse
import base64
import datetime

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3
import random
import sys

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3
import os
import shutil

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.piexif
import os
import sys

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3
import sys
from math import inf

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.magic unzip p7zip unrar gnutar gzip
import logging
import os

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 python3Packages.coloredlogs python3Packages.progresbar2 ffmpeg
# pylint: disable=C0103
import logging

View file

@ -1,4 +1,6 @@
#!/usr/bin/env python3
#!/usr/bin/env nix-shell
#! nix-shell -i python3 --pure
#! nix-shell -p python3 ffmpeg
# Compress a video to make it fit under a certain size.
# Usage: videoQuota SIZE SRC DST

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#!/usr/bin/env nix-shell
#! nix-shell -i bash --pure
#! nix-shell -p bash curl ncurses
# change Paris to your default location
request="v2.wttr.in/${1-Amsterdam}"

View file

@ -1,4 +1,6 @@
#!/usr/bin/env bash
#! nix-shell -i bash --pure
#! nix-shell -p bash
# Removes CRLF (^M or \r) from a file

View file

@ -1,21 +0,0 @@
#!/usr/bin/env bash
set -e
if [ $USER != root ]
then
echo "This script should be run as root."
exit 1
fi
if ! pacman -Qq pacman-mirrorlist &> /dev/null
then
pacman -S pacman-mirrorlist
fi
if [ ! -f /etc/pacman.d/mirrorlist.pacnew ]
then
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.pacnew
fi
egrep -o 'Server = .+' /etc/pacman.d/mirrorlist.pacnew | /usr/bin/rankmirrors -n 6 - > /etc/pacman.d/mirrorlist

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
cd ~/.dotfiles/config/automatrop
if [ -f ~/.config/automatrop/self_name ]
then
hostname=$(cat ~/.config/automatrop/self_name)
else
hostname="$HOSTNAME"
fi
ansible-playbook --diff playbooks/default.yml --limit $hostname --connection local "$@"

View file

@ -1,3 +0,0 @@
#!/usr/bin/env sh
play -n synth sine E5 sine A4 remix 1-2 fade 0.5 1.2 0.5 2> /dev/null
# echo 

View file

@ -1,190 +0,0 @@
#!/usr/bin/env bash
# Handles dotfiles
# Yes there are tons of similar scipts yet I wanted no more nor less than what I needed
# Config
if [ -z "$DOTHOME" ]; then
DOTHOME="$HOME"
fi
if [ -z "$DOTREPO" ]; then
DOTREPO="$HOME/.dotfiles"
fi
# Common functions
# From http://stackoverflow.com/a/12498485
function relativePath {
# both $1 and $2 are absolute paths beginning with /
# returns relative path to $2/$target from $1/$source
source=$1
target=$2
common_part=$source # for now
result="" # for now
while [[ "${target#$common_part}" == "${target}" ]]; do
# no match, means that candidate common part is not correct
# go up one level (reduce common part)
common_part="$(dirname $common_part)"
# and record that we went back, with correct / handling
if [[ -z $result ]]; then
result=".."
else
result="../$result"
fi
done
if [[ $common_part == "/" ]]; then
# special case for root (no common path)
result="$result/"
fi
# since we now have identified the common part,
# compute the non-common part
forward_part="${target#$common_part}"
# and now stick all parts together
if [[ -n $result ]] && [[ -n $forward_part ]]; then
result="$result$forward_part"
elif [[ -n $forward_part ]]; then
# extra slash removal
# result="${forward_part:1}" # Removes the . in the beginning...
result="${forward_part#/}"
fi
echo "$result"
}
# Script common functions
function _dotfiles-install-dir { # dir
local dir
local absSource
local absTarget
local relTarget
dir="${1%/}"
dir="${dir#/}"
ls -A "$DOTREPO/$dir" | while read file; do
if [[ -z "$dir" && $(echo $file | grep '^\(\.\|LICENSE\|README\)') ]]; then
continue
fi
if [[ $(echo $file | grep '^.dfrecur$') ]]; then
continue
fi
if [ -z "$dir" ]; then
absSource="$DOTHOME/.$file"
absTarget="$DOTREPO/$file"
else
absSource="$DOTHOME/.$dir/$file"
absTarget="$DOTREPO/$dir/$file"
fi
relTarget="$(relativePath "$DOTHOME/$dir" "$absTarget")"
recurIndicator="$absTarget/.dfrecur"
if [[ -h "$absTarget" ]]; then
if [ -e "$absSource" ]; then
if [ -h "$absSource" ]; then
cmd="cp --no-dereference --force $absTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
yes | $cmd
fi
else
echo "[ERROR] $absSource already exists, but is not a link"
fi
else
cmd="cp --no-dereference --force $absTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
yes | $cmd
fi
fi
elif [[ -f "$absTarget" || ( -d $absTarget && ! -f $recurIndicator ) ]]; then
if [ -e "$absSource" ]; then
if [ -h "$absSource" ]; then
cmd="ln --symbolic --no-dereference --force $relTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
$cmd
fi
else
echo "[ERROR] $absSource already exists, but is not a symbolic link"
fi
else
cmd="ln --symbolic --no-dereference $relTarget $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
$cmd
fi
fi
elif [[ -d "$absTarget" && -f $recurIndicator ]]; then
if [ -e "$absSource" ]; then
if [ -d "$absSource" ]; then
# echo "Directory $absSource already exists"
_dotfiles-install-dir $dir/$file
else
echo "[ERROR] $absSource already exists, but is not a directory"
fi
else
cmd="mkdir $absSource"
if [ $DRY_RUN ]; then
echo $cmd
else
$cmd
fi
_dotfiles-install-dir $dir/$file
fi
else
echo "[WARNING] Skipped $absTarget"
fi
done
}
# Script functions
function dotfiles_install {
_dotfiles-install-dir /
}
function dotfiles_help {
command="$1"
if [ -n "$command" ]; then
if type "dotfiles_${command}_help" &> /dev/null; then
shift
"dotfiles_${command}_help" "$@"
return $?
fi
fi
echo "Usage: $0 COMMAND"
echo
echo "Commands:"
echo " install Install dotfiles from repository"
echo " help Get help with commands"
echo
echo "Environment variables:"
echo " DOTHOME Where to install dotfiles"
echo " DOTREPO Where do the dotfiles comes from"
return 0
}
# MAIN
command="$1"
shift
if type "dotfiles_$command" &> /dev/null; then
"dotfiles_$command" "$@"
else
dotfiles_help
fi

View file

@ -1,13 +0,0 @@
#!/usr/bin/env bash
# Clears everything it can to save space
rm -rf $HOME/.cache
if which pacman &> /dev/null; then
sudo pacman -Scc
elif which apt-get &> /deb/null; then
sudo apt-get clean
fi
if which journalctl &> /dev/null; then
sudo journalctl --vacuum-size=100M
fi

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
# Return a list of packages sorted by size
(echo PACKAGE SIZE; \
for A in /var/lib/pacman/local/*/desc; do
(sed -n 2p $A; (grep '^%SIZE%$' $A -A1 | tail -1)) | tr '\n' ' '; echo
done \
| sort -nrk2) \
| column -t

View file

@ -1,2 +0,0 @@
#!/usr/bin/env bash
find -type f -printf '%T+ %p\n' | sort | tail "$@"

View file

@ -1,3 +0,0 @@
#!/usr/bin/env bash
play -c 2 -n synth ${1}noise

View file

@ -1,2 +0,0 @@
#!/usr/bin/env bash
find -type f -printf '%T+ %p\n' | sort | head "$@"

View file

@ -1,62 +0,0 @@
#!/usr/bin/env python3
import argparse
import json
import logging
import os
import urllib.request
from pprint import pprint
import coloredlogs
import ovh
import xdg.BaseDirectory
coloredlogs.install(level="DEBUG", fmt="%(levelname)s %(message)s")
log = logging.getLogger()
debug = None
class OvhCli:
ROOT = "https://api.ovh.com/1.0?null"
def __init__(self):
self.cacheDir = os.path.join(xdg.BaseDirectory.xdg_cache_home, "ovhcli")
# TODO Corner cases: links, cache dir not done, configurable cache
if not os.path.isdir(self.cacheDir):
assert not os.path.exists(self.cacheDir)
os.makedirs(self.cacheDir)
def updateCache(self):
log.info("Downloading the API description")
rootJsonPath = os.path.join(self.cacheDir, "root.json")
log.debug(f"{self.ROOT} -> {rootJsonPath}")
urllib.request.urlretrieve(self.ROOT, rootJsonPath)
with open(rootJsonPath, "rt") as rootJson:
root = json.load(rootJson)
basePath = root["basePath"]
for apiRoot in root["apis"]:
fmt = "json"
assert fmt in apiRoot["format"]
path = apiRoot["path"]
schema = apiRoot["schema"].format(format=fmt, path=path)
apiJsonPath = os.path.join(self.cacheDir, schema[1:])
apiJsonUrl = basePath + schema
log.debug(f"{apiJsonUrl} -> {apiJsonPath}")
apiJsonPathDir = os.path.dirname(apiJsonPath)
if not os.path.isdir(apiJsonPathDir):
os.makedirs(apiJsonPathDir)
urllib.request.urlretrieve(apiJsonUrl, apiJsonPath)
def createParser(self):
parser = argparse.ArgumentParser(description="Access the OVH API")
return parser
if __name__ == "__main__":
cli = OvhCli()
# cli.updateCache()
parser = cli.createParser()
args = parser.parse_args()
print(args)

View file

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# Generate strong enough password(s)
# This generates a password with ln((26*2+10)**32)/ln(2) ≅ 190 bits of entropy,
# which is a bit above the recommended standars (128 bits) while still having
# a 0 probability that the service will break because of incompatible character
pwgen 32 -y

View file

@ -1,7 +0,0 @@
coloredlogs>=10.0<11
progressbar2>=3.47.0<4
yt-dlp>=2021.10.22
ConfigArgParse>=1.5<2
asyncinotify
ffmpeg
r128gain

View file

@ -1,2 +0,0 @@
#!/usr/bin/env bash
find . -name "*.sync-conflict-*" -delete

View file

@ -1,47 +0,0 @@
#!/usr/bin/env bash
# Rename a list of files with a sed pattern
usage() {
echo "Usage: $0 PATTERN [-d] < filelist"
echo
echo "Arguments:"
echo " PATTERN Sed pattern to apply"
echo
echo "Options:"
echo " -d Dry run"
exit 1
}
if [[ -z "$1" ]]; then
usage
fi
pattern="$1"
dry=1
if [[ -n "$2" ]]; then
if [[ "$2" = '-d' ]]; then
dry=0
else
usage
fi
fi
while read src
do
dst="$(echo "$src" | sed "$pattern")"
if [[ $? != 0 ]]; then
echo "ERREUR Invalid sed pattern"
exit 2
fi
if [[ $dry == 0 ]]; then
echo "$src" → "$dst"
else
mv -- "$src" "$dst"
fi
done

View file

@ -1,2 +0,0 @@
#!/usr/bin/env sh
strace -f -t -e trace=file $@

View file

@ -1,20 +0,0 @@
#!/usr/bin/env sh
if [ $# -eq 0 ]
then
echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
return 1
fi
tmpfile=$( mktemp -t transferXXX )
if tty -s
then
basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile
else
curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile
fi
cat $tmpfile
rm -f $tmpfile

View file

@ -1,18 +0,0 @@
#!/usr/bin/env python3
# Compresses video using FFMPEG using
# FFMPEG's reasonable default settings
import os
import subprocess
import sys
files = sys.argv[1:]
remove = False
if "-r" in files:
files.remove("-r")
remove = True
for f in files:
print(os.path.splitext(f))