Skip to content

Utility library to aid writing script-like programs in D.

License

Notifications You must be signed in to change notification settings

tstaehli/scriptlike

 
 

Repository files navigation

Scriptlike

Utility to aid in writing script-like programs in the D Programming Language.

This library has no external dependencies.

Since this is intended for script-like programs, the focus is on making such scripts easier and more convenient to write. Optimal performance is secondary to that goal (most scripts are more IO-bound or process-bound anyway), so when necessary this library may accept minor internal inefficiencies for the sake of the primary goal. That said, this IS the D Programming Language, so things aren't exactly likely to be slow overall anyway.

Tested with DMD 2.064.2 and 2.065.

Importing

import scriptlike;

Features

  • A thin wrapper over std.path and std.file that provides a dedicated Path type specifically designed for managing file paths in a simple, reliable, cross-platform way. No more dealing with slashes, paths-with-spaces, calling buildPath, normalizing, or getting paths mixed up with ordinary strings.
  • Easy user-input prompts with interact module.
  • Optionally enable automatic command echoing (including shell commands, changing/creating directories and deleting/copying/moving/linking/renaming both directories and files) by setting one simple flag: bool scriptlikeEcho
  • Most typical Phobos modules automatically imported. Who needs rows and rows of standard lib imports for a mere script?
  • Less-pedantic filesystem operations for when you don't care whether it exists or not: existsAsFile, existsAsDir, existsAsSymlink, tryRename, trySymlink, tryCopy, tryMkdir, tryMkdirRecurse, tryRmdir, tryRmdirRecurse, tryRemove: All check whether the source path exists and return WITHOUT throwing if there's nothing to do.
  • One simple call, run, to run a shell command script-style (ie, synchronously with forwarded stdout/in/err) from any working directory. (Also automatically works around DMD #10863 without waiting for v2.066.)
  • run automatically throws if a process exits with a non-zero exit code. Or use tryRun to ignore or handle the error level yourself.
  • One simple function, fail(string msg), to help you exit with an error message in an exception-safe way. (No longer requires any boilerplate in your main()!)
  • More to come!

About

Utility library to aid writing script-like programs in D.

Resources

License

Stars

Watchers

Forks

Packages

No packages published