npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dirgen

v1.0.2

Published

Generate folders and files with an indented template file

Downloads

14

Readme

Dirgen logo Dirgen

Npm Version Build Status License

Overview:

Generate files and folders from a template file.

Purpose:

Use this module when:

  • Generating repetitive boilerplate project structures
  • Writing unit tests with file and folder operations

Installation:

npm install dirgen -g

Development:

# Development should be done by getting this module's
# full content from git repository

# Use webpack to watch files
npm run watch

# Run the build command for 'dirgen-cli-entry.js'
# to be generated before running dirgen
npm run build

Example:

Create a text file with the following contents and give it a name of 'the-template-file.txt':

Template:

gsdf
  afsd
//sd,ss
dfg
  jj
  ygvhg
    dsd
  ygvhg
/fsfa
/fsfa

Command Line Usage:

dirgen g 'the-template-file.txt' '/where-you-want-output-folder'

'Require' Usage:

The following is an equivalent to the above but is required as a module in a JavaScript file

import dirgen from 'dirgen';

dirgen({
  template: '/location-of/the-template-file.txt',
  output: '/folder-location-for-generated-files-or-folders'
  /*
  options: {
    // The following two keys in the 'option' key below are optional
    // and are command options which
    // have values opposite of the settings default

    hideMessages: true,
    forceOverwrite: false,
  },

  // 'on' is also optional and it allows
  // for informational callbacks to execute with 'done' or 'line'
  on: {

    // 'done' is called when all files and folder are finished generating
    // or when there is an early return with an error condition
    done: (results, logOutput) => {

      // Example format of 'results'
      // Errors and warnings will contain a collection
      // of error and warning message strings respectively
      // {
      //   errors: [],
      //   warnings: []
      // }

      // Example format of 'logOutput'
      // {
      //   generated: 1,
      //   notGenerated: 0,
      //   repeats: [],
      //   skipped: 0,
      //   overwritten: {
      //    file: 0,
      //    folder: 0
      //   }
      // }
    },

    // 'line' gets called on every content line processed
    line: (stat) => {

      // Example format of 'stat'
      // Generated:    Line #1 (File): <line-content>
    }
  }

  */
});

Console output:

 Warning: Line #3: '//sd,ss', has illegal characters which has been
  replaced, resulting in 'sd,ss'.

 Warning: Line #8: 'ygvhg', of file type is a repeated line and was
 not generated. First appearance of sibling is on line #6.

 Warning: Line #10: '/fsfa', of folder type is a repeated line and
 was not generated . First appearance of sibling is on line #9.

 Template info: 10 total lines (10 content, 0 blanks)
 Template read: 0 errors and 3 warnings
 Creation count: 8 generated, 2 not generated, 0 skipped
 Generation failures: 0 write errors
 Write time: 35262057 nanoseconds

Details:

Template file:

Template files provide the hierarchy of structure which explains the nesting of files and folders. These files are plain textual files.

Indentation: Determines what file or folder types should be on the same folder level. Same indentation level between two lines means that the lines are siblings assuming that the two have the same parent.

White space characters such as tabs or spaces define the indentations. However, only one type of white space character can be used at any one time in a single template file.

Lines: All non-blank lines will be counted towards the generation if the line is valid for generation.

Structure Type: File: A content line without a folder marker (forward slash) will be identified as a file line and if it has not been skipped.

Example:
  a-file
  a-file-with-an-extension.someextension

Folder: A content line with a folder marker (forward slash) at the beginning of the line will be identified as a folder type. A folder line can also signify having a later line with a greater indent than the folder line.

It might be desirable to use the explicit 'slash'
syntax to intend for an empty folder to be created
among all the files that are created at the same level.

Example:
  /a-folder

  or

  a-folder
    child-with-greater-indentation

Terminologies:

Template info:

Content:
  Lines that have characters which are non-white space. These lines
  may or may not be generated.

Blanks:
  Lines that are white-space only characters or have no characters
  at all. These lines are never generated.

Template read:

Errors:
  Upon one or more errors, there will be no
  generated file or folders.

Warnings:
  Warning lines that are correctable such as having non-permissible
  characters can be sanitized and generated, but incorrect lines
  such as duplicated line content will be not be generated.

Creation count:

Generated:
  Lines that were read and were successfully created

Not generated:
  Lines that produced a warning that may or may
  not have been generated.

Skipped:
  Lines that were skipped because they already exists. By default,
  existing files and folders are not overwritten to prevent data lost.

'Generated', 'Not generated', and 'Skipped counts' add up to the
total line count of the template file.

Generation failures: Failures occur when a valid line creation attempt did not go through. The generation failures count towards the "Skipped" of "Creation count".

Write time: The time taken to write all the files and folders. Will yield "0" when at least one error has occurred on reading the template file because nothing will be generated.

Demo:

For a demo of Dirgen, run 'dirgen demo' on the command line and look at the output in the 'demo/example-output' folder under the root of the Dirgen module folder.

CLI Usage:

dirgen [command] [command parameters] [options]

Command and Parameters:

generate (g | gen)

[template] (required)

The text file provided for generation
Ex: "/some-directory/my-file-template.txt"

[output directory] (required)

The destination path for where the generated files or
folder should go.

Ex: dirgen g [template] [output directory]

demo

Shows an example of how a template file is used
to generate files and folders inside the /demo folder
of the Dirgen NPM module.

Ex: dirgen demo

version (v)

Displays what is the edition of this module.

Ex: dirgen v

help (h)

Displays general information for this module.

Ex: dirgen h

Options:

-f

Overwrite files and directories even if they already exist. Default behavior is to not use this option as a safety measure.

-s

Suppress the actual warnings and errors messages from showing up in the console. The count of warnings and errors will still be shown in the generation output information.

License

MIT