Skip to content

Instantly share code, notes, and snippets.

@ajchemist
Last active January 26, 2022 15:03
Show Gist options
  • Select an option

  • Save ajchemist/c6a170afee5305c9211d4b3f9ce7282f to your computer and use it in GitHub Desktop.

Select an option

Save ajchemist/c6a170afee5305c9211d4b3f9ce7282f to your computer and use it in GitHub Desktop.

Revisions

  1. ajchemist revised this gist Jan 26, 2022. 1 changed file with 38 additions and 1 deletion.
    39 changes: 38 additions & 1 deletion rename_module_filename.clj
    Original file line number Diff line number Diff line change
    @@ -1 +1,38 @@
    ‎‎​
    (ns build
    (:require
    [clojure.java.io :as jio]
    [clojure.string :as str]
    [buddy.core.codecs :as codecs]
    [buddy.core.hash :as hash]
    ))


    (set! *warn-on-reflection* true)


    (defn module-hash-name
    [module]
    (subs (str/upper-case (codecs/bytes->hex (hash/md5 (jio/input-stream module)))) 0 8))


    (defn rename-file
    [a b]
    (.renameTo (jio/file a) (jio/file b)))


    (defn rename-module-filename
    [f]
    {:pre [(.isFile (jio/file f))]
    :post [(.isFile (jio/file %))]}
    (let [file (jio/file f)
    parent (.getParent file)
    name (.getName file)
    idx (str/last-index-of name ".")
    target (jio/file parent (str (subs name 0 idx) "." (module-hash-name file) (subs name idx)))]
    (rename-file file target)
    target))


    (comment
    (rename-module-filename "/tmp/out.css")
    )
  2. ajchemist created this gist Jan 26, 2022.
    1 change: 1 addition & 0 deletions rename_module_filename.clj
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    ‎‎​