Port root before_v0.60/*.nu scripts (issue #221) (#837)

This PR is part of porting all old scripts #221 and ports all root
`before_v0.60/*.nu` scripts to `modules/*.nu`
This commit is contained in:
Igor 2024-05-13 17:54:10 +04:00 committed by GitHub
parent bb814f1173
commit a0e69735ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 154 deletions

View File

@ -1,77 +0,0 @@
# bin-utils.nu
def "get bits" [x: int, bits] {
if $x == 0 {
$bits
} else {
let new-x = ($x / 2 | into int)
let bit = if $new-x == ($x / 2 | math ceil | into int) {
0
} else {
1
}
get bits $new-x ($bits | append $bit)
}
}
def "get bits2" [x: int] {
let inp = $in
if $x != 0 {
let new-x = ($x / 2 | into int)
let bit = if $new-x == ($x / 2 | math ceil | into int) {
0
} else {
1
}
$inp | append $bit | get bits2 $new-x
} else {
$inp
}
}
export def "into bits" [] {
let inp = $in
let span = (metadata $inp).span
let type = ($inp | describe)
if "list" in $type {
$inp | each {
$it | into bits
}
} else if "int" in $type {
[] | get bits2 $inp
} else {
error make {
msg: "Cannot convert to bits",
label: {
text: "This value cannot be converted to bits"
start: $span.start
end: $span.end
}
}
}
}
export def "bits into int" [] {
reverse | reduce -f 0 { 2 * $it.acc + $it.item }
}
export def "test bits" [] {
0..4 | each {
let bits = ($it | into bits)
let res = ($bits | bits into int)
let span = (metadata $res).span
if $it == 1 {
error make {
msg: "Test mismatch",
label: {
text: $"Expected: ($it), bits: ($bits | str collect ''), result: ($res)"
start: $span.start
end: $span.end
}
}
}
} | compact
}

View File

@ -1,64 +0,0 @@
#!/usr/bin/env nu
#
# ~/.fehbg.nu
#
# This script selects a random image from a directory and sets it as a
# wallpaper. An additional feature is that it draws the path of the image in
# the lower left corner which makes it easier to find the image later.
#
# The procedure is as follows::
# * Select a random image from a directory (recursively entering all
# subdirectories)
# * Print the path of the image as an overlay on top of the selected image
# * Save the result in a temporary file
# * Set the temporary image as a wallpaper.
#
# !! Requires `WALLPAPER_DIR` and `TMP_DIR` environment variables to be set !!
# (or just hardcode your own paths below)
#
# You can set this script to run on desktop startup, e.g., by adding it to
# xinitrc.
#
# Dependencies;
# * nu version >=0.32.0 (tested on 0.36.0)
# * feh
# * imagemagick
# Path definitions
let img_dir = $nu.env.WALLPAPER_DIR
let tmp_image = (echo [ $nu.env.TMP_DIR "wallpaper.jpg" ] | path join)
# Monitor resolution
let resolution_y = 1440
# Position of the caption
let pos_x = 5
let pos_y = 0.995 * $resolution_y
# Helper commands
def select_random [] { shuffle | first }
# List all images in a directory and all its subdirectories
def list_images [dir] {
ls (build-string $dir /**/*) | where type == File | where name =~ jpg or name =~ jpeg or name =~ tif or name =~ tiff
}
# Set the caption text (just filename for now)
def caption [img_f] {
echo $img_f
}
# Build the argument for the '-draw' command of the 'convert' utility
def draw_str [img_f] {
build-string 'text ' $pos_x ',' $pos_y ' "' (caption $img_f) '" '
}
# Select random image
let img_name = (list_images $img_dir | select_random | get name)
# Resize the image to the monitor height, draw the caption and save it
let res_str = (build-string 'x' $resolution_y)
convert -resize $res_str -pointsize 15 -fill 'rgb(255,200,150)' -draw (draw_str $img_name) $img_name $tmp_image
# Set the created image as a background
feh --no-fehbg --bg-max $tmp_image

View File

@ -3,14 +3,14 @@
# - 1.0.1 is a valid directory name.
# - yeah_whatever_linter is not a valid directory name.
def ls-incorrect-dirs [] {
ls | where type == 'Dir' and name != 'scripts'| match -v name '(\d+\.){2,}\d$'
ls | where type == dir and name != 'scripts' | find --invert --regex '(\d+\.){2,}\d$' --columns [name]
}
let incorrect_count = (ls-incorrect-dirs | length);
if $incorrect_count > 0 {
# echo `The following directories are named incorrectly: {{(char newline)}}`
$"The following directories are named incorrectly: (char newline)"
ls-incorrect-dirs
exit 1
} {
exit 0
print $"The following directories are named incorrectly: (char newline)"
print (ls-incorrect-dirs)
exit 1
} else {
exit 0
}

View File

@ -12,9 +12,7 @@ let m_table = (
]
)
let now = (date now)
$m_table | update time {
each { |name|
$now | date to-timezone ($name | get tz) | date format '%c'
}
$m_table | update time {|row|
$now | date to-timezone ($row | get tz) | format date '%c'
}

View File

@ -17,14 +17,14 @@ let nu_table = ($nu_files |
let cat = ($it.File | path dirname)
if $cat == "" {
"not assigned yet"
} {
} else {
$cat
}
} | where Category !~ ".git" | select Category File | sort-by Category)
# Let's fix the file now
let nu_table = ($nu_table | update File { |it|
let file_path = ($it.File | into string | str find-replace '\\' '/')
let file_path = ($it.File | into string | str replace '\' '/' --all)
let file_name = ($file_path | path basename)
$"[($file_name)](char lparen)./($file_path)(char rparen)"
})