mirror of
https://github.com/nushell/nu_scripts.git
synced 2024-08-16 08:50:31 +03:00
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:
parent
bb814f1173
commit
a0e69735ed
@ -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
|
||||
}
|
@ -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
|
@ -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
|
||||
}
|
@ -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'
|
||||
}
|
||||
|
@ -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)"
|
||||
})
|
Loading…
Reference in New Issue
Block a user