about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2024-05-05 09:59:11 -0700
committerFranck Cuny <franck@fcuny.net>2024-05-05 09:59:11 -0700
commitc54422174f2af26d0b204cc155ef9e366baa8a33 (patch)
treea2d09ace5a8b7a72b60c5ff195f2f0b2656d858c
parentsome cleanup for CI (diff)
downloadworld-c54422174f2af26d0b204cc155ef9e366baa8a33.tar.gz
move ipconverter under `src`
-rw-r--r--nix/flake/packages.nix1
-rw-r--r--nix/profiles/home-manager/shell.nix1
-rw-r--r--packages/ipconverter/default.nix29
-rwxr-xr-xpackages/ipconverter/ipconverter.py32
-rw-r--r--pyproject.toml2
-rwxr-xr-xsrc/cli/ipconverter.py25
-rwxr-xr-xsrc/cli/seqstat.py2
7 files changed, 28 insertions, 64 deletions
diff --git a/nix/flake/packages.nix b/nix/flake/packages.nix
index abc12cf..31c1e76 100644
--- a/nix/flake/packages.nix
+++ b/nix/flake/packages.nix
@@ -7,7 +7,6 @@
     packages = {
       git-blame-stats = pkgs.callPackage "${self}/packages/git-blame-stats" { };
       git-broom = pkgs.callPackage "${self}/packages/git-broom" { };
-      ipconverter = pkgs.callPackage "${self}/packages/ipconverter" { };
       robloxenv = pkgs.callPackage "${self}/packages/robloxenv" { };
     };
   };
diff --git a/nix/profiles/home-manager/shell.nix b/nix/profiles/home-manager/shell.nix
index ac41134..2f86232 100644
--- a/nix/profiles/home-manager/shell.nix
+++ b/nix/profiles/home-manager/shell.nix
@@ -30,7 +30,6 @@
     # my own stuff
     self.packages.${pkgs.system}.git-blame-stats
     self.packages.${pkgs.system}.git-broom
-    self.packages.${pkgs.system}.ipconverter
   ];
 
   xdg = {
diff --git a/packages/ipconverter/default.nix b/packages/ipconverter/default.nix
deleted file mode 100644
index 4580396..0000000
--- a/packages/ipconverter/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, python3, stdenvNoCC, pkgs }:
-
-stdenvNoCC.mkDerivation rec {
-  pname = "ipconverter";
-  version = "0.1.0";
-
-  src = ./ipconverter.py;
-
-  buildInputs = with pkgs; [ python3 ];
-  propagatedBuildInputs = with pkgs; [ python3 ];
-
-  dontUnpack = true;
-  dontBuild = true;
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp $src $out/bin/${pname}
-    chmod a+x $out/bin/${pname}
-    ln -s $out/bin/${pname} $out/bin/ip2int
-    ln -s $out/bin/${pname} $out/bin/int2ip
-  '';
-
-  meta = with lib; {
-    description = "Helper script to convert an IP address to an integer.";
-    license = with licenses; [ mit ];
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ fcuny ];
-  };
-}
diff --git a/packages/ipconverter/ipconverter.py b/packages/ipconverter/ipconverter.py
deleted file mode 100755
index 6b01d5d..0000000
--- a/packages/ipconverter/ipconverter.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import ipaddress
-import sys
-
-argp = argparse.ArgumentParser()
-argp.add_argument("infile", nargs="?", type=argparse.FileType("r"), default=sys.stdin)
-args = argp.parse_args()
-
-# read the input, filter out commented lines and remove new line characters
-string_ips = [
-    ip
-    for line in args.infile.readlines()
-    if (ip := line.strip()) and not ip.startswith("#")
-]
-
-# convert entries to int if the string is a numeric value
-ips = list(map(lambda n: int(n) if n.isnumeric() else n, string_ips))
-
-
-def conv(n):
-    """helper function to convert based on the name of the program"""
-    return int(n) if argp.prog == "ip2int" else str(n)
-
-
-for ip in ips:
-    try:
-        r = conv(ipaddress.ip_address(ip))
-        print(f"{ip:15} → {r:15}")
-    except Exception as e:
-        print(f"error: {e}", file=sys.stderr)
diff --git a/pyproject.toml b/pyproject.toml
index 0f3dee5..0c944c3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -68,3 +68,5 @@ known-first-party = ["rbx_nomad"]
 pizza = "cli.pizza:main"
 slocalc = "cli.slocalc:cli"
 seqstat = "cli.seqstat:cli"
+ip2int = "cli.ipconverter:ip2int"
+int2ip = "cli.ipconverter:int2ip"
diff --git a/src/cli/ipconverter.py b/src/cli/ipconverter.py
new file mode 100755
index 0000000..4e6906b
--- /dev/null
+++ b/src/cli/ipconverter.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python3
+
+"""
+Utility to convert an IPv4 address to an int, or an int to an IPv4 address.
+"""
+
+import ipaddress
+
+import click
+
+
+@click.command()
+@click.argument("ips", nargs=-1, type=int)
+def int2ip(ips):
+    for ip in ips:
+        convip = ipaddress.ip_address(ip)
+        print(f"{ip} → {convip}")
+
+
+@click.command()
+@click.argument("ips", nargs=-1, type=str)
+def ip2int(ips):
+    for ip in ips:
+        convip = int(ipaddress.ip_address(ip))
+        print(f"{ip} → {convip}")
diff --git a/src/cli/seqstat.py b/src/cli/seqstat.py
index a9d5e64..196fe56 100755
--- a/src/cli/seqstat.py
+++ b/src/cli/seqstat.py
@@ -17,7 +17,7 @@ def histogram(sequence):
 
 
 @click.command()
-@click.argument('numbers', nargs=-1, type=float)
+@click.argument("numbers", nargs=-1, type=float)
 def cli(numbers):
     h = histogram(numbers)
     print("".join(h))