Skip to content

a small Clojure library for managing temporary files

License

Notifications You must be signed in to change notification settings

scicloj/tempfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tempfiles

Clojars Project

This is a small Clojure library for managing temporary files.

The current use

Currently, the library is being used, e.g., in Clay, mostly for managing paths of tempfiles.

The original goal

In the past, the library has been used in Notespace (which is not actively maintained as of 2024) for the following goal.

It allows to create a temporary files with a given extension (e.g., ".csv"), and get not only its path, but a suggested standard route where it can be served relatively to a web app.

By adopting these suggested path & route, various tools such as Notespace can agree with various libraries such as Viz.clj on where temporary files should be placed.

For example, Viz.clj will create a temporary file with some data to be passed for visualization, creating it at the suggested path; Notespace will serve it on its webserver at the suggested route, and Viz.clj will create a Vega specification which knows what route to use for reading the file, so that it can be viewed correctly in Notespace.

Usage

;; Begin with a clean slate.
(cleanup-all-tempdirs!)

;; Get the suggested `path` and `route` for a temprorary CSV file,
;; implicitly creating a temporary directory and remembering it
;; for this session.
(tempfile! ".csv")
;; =>
;; {:path "/tmp/scicloj-files/session-dir-8895124953168565280/file-16811038101563878892.csv",
;;  :route "/scicloj-files/session-dir-8895124953168565280/file-16811038101563878892.csv"}

;; Get the suggested `path` and `route` for a temprorary JSON file,
;; implicitly using the same temporary directory.
(tempfile! ".json")
;; =>
;; {:path "/tmp/scicloj-files/session-dir-8895124953168565280/file-10934288615104587977.json",
;;  :route "/scicloj-files/session-dir-8895124953168565280/file-10934288615104587977.json"}

;; Explicitly ask what the session temporary directory is.
(session-tepmdir!)
;; =>
;; "/tmp/scicloj-files/session-dir-8895124953168565280"

;; Print the tree structure of all temporary directories
;; of all sessions that haven't been cleaned yet
;; (requires a unix shell with the `tree` utility installed).
(print-tempdirs-tree!)
;; /tmp/scicloj-files/
;; └── session-dir-8895124953168565280
;; ├── file-10934288615104587977.json
;; └── file-16811038101563878892.csv

;; 1 directory, 2 files

;; Remove this session's temporary directory and forget about it.
(cleanup-session-tempdir!)

;; Print again.
(print-tempdirs-tree!)
;; /tmp/scicloj-files/

;; 0 directories, 0 files

;; Ask for a temporary file again, implicitly creating a new temporary directory.
(tempfile! ".csv")
;; {:path "/tmp/scicloj-files/session-dir-11643613431195588103/file-4476361447723718604.csv",
;;  :route "/scicloj-files/session-dir-11643613431195588103/file-4476361447723718604.csv"}

License

Copyright © 2021 Scicloj

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.

About

a small Clojure library for managing temporary files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published