Skip to content

eikek/elv-modules

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Elvish Modules

Some utilities for life in elvish. I learned a lot from looking here – thanks!

list.elv

Here are some helpers when working with lists and maps.

get

Get some value from a list or a map. When used with a map, allows to recursively get a value from nested maps.

m = [&a=[&b=[&c=42]]]
(list-get a.b.c) $m
42

with

Takes a function and applies it to each element and returns the tuple of argument and result (or adds the result to the list if the argument is a list).

Can be useful to attach information to items:

put *.elv | each (list:with (file:lines))
[csv.elv 138]
[file.elv 100]
[list.elv 184]
[util.elv 17]

contains

Check whether a list contains an element.

(contains [1 3 4 2]) 4
$true

(contains [1 3 4 2]) abc
$false

csv.elv

Tried to implement a simple csv reader. It can transform csv into list or maps, that are then easier to work with.

csv-to-list

echo 'aa,bb,"cc,dd",,,' | each (csv-to-list)
[aa bb 'cc,dd' '' '' '']

csv-to-map

echo "name,number,date\ntest 10,1,2018-11-29\ntest 20,2,2018-12-06"| each (csv-to-map)
[&date=2018-11-29 &name='test 10' &number=1 &index=1]
[&date=2018-12-06 &name='test 20' &number=2 &index=2]

list-to-csv

put [1 2 3] [a b c] | each (list-to-csv)
'1,2,3'
'a,b,c'

map-to-csv

put [&name=test &number=23 &date=2018-02-31] | each (map-to-csv)
'date,name,number'
'2018-02-31,test,23'

file.elv

Some utilities for files and names.

stat

Executes the external stat command and returns the result in a map.

file:stat file.elv
[&last-access-sec=1.544128641e+09 &size=1718 &user=eike &last-mod='2018-12-06 21:37:13.763287004 +0100' &name=file.elv &type='regular file' &group-id=100 &last-mod-sec=1.544128633e+09 &group=users &last-access='2018-12-06 21:37:21.097246328 +0100' &user-id=1000]

nix.elv

Utilities for working with nix/nixos.

Searching packages

The sqlite3 command is required.

First build a database, either using nix-env or a packages.json file on nixos server.

update-db-from-nix-env
Creating statements: 20867/20867 ...
Updating database ...
Done.

Then search for packages:

search jdk
nixos.oraclejdk8psu oraclejdk-8u191 (unfree)
nixos.jdk11_headless openjdk-11.0.1-b13-headless (gpl2) The open-source Java Development Kit
nixos.oraclejdk8 oraclejdk-8u191 (unfree)
nixos.adoptopenjdk-jre-openj9-bin-11 adoptopenjdk-jre-openj9-bin-11.0.1 (gpl2Classpath) AdoptOpenJDK, prebuilt OpenJDK binary
nixos.bazel_jdk11 bazel-0.18.0 (asl20) Build tool that builds code quickly and reliably
nixos.jetbrains.jdk jetbrainsjdk-152b1248.6 (gpl2) An OpenJDK fork to better support Jetbrains's products.
nixos.adoptopenjdk-bin adoptopenjdk-hotspot-bin-11 (gpl2Classpath) AdoptOpenJDK, prebuilt OpenJDK binary
nixos.openjdk openjdk-8u192b26 (gpl2) The open-source Java Development Kit
nixos.openjdk11 openjdk-11.0.1-b13 (gpl2) The open-source Java Development Kit
nixos.bootjdk openjdk-bootstrap ()
nixos.oraclejdk oraclejdk-8u191 (unfree)
nixos.adoptopenjdk-jre-bin adoptopenjdk-jre-hotspot-bin-11 (gpl2Classpath) AdoptOpenJDK, prebuilt OpenJDK binary
nixos.jdk openjdk-8u192b26 (gpl2) The open-source Java Development Kit
nixos.adoptopenjdk-openj9-bin-11 adoptopenjdk-openj9-bin-11.0.1 (gpl2Classpath) AdoptOpenJDK, prebuilt OpenJDK binary
nixos.jdk11 openjdk-11.0.1-b13 (gpl2) The open-source Java Development Kit

completer.elv

Argument completion for some commands:

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published