Socket
Socket
Sign inDemoInstall

watskeburt

Package Overview
Dependencies
0
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    watskeburt

List files changed since a git revision


Version published
Maintainers
1
Install size
15.5 kB
Created

Readme

Source

watskeburt

Get changed files & their statuses since any git revision

:construction_worker: usage

:scroll: API

import { list, getSHA } from "watskeburt";

// print the SHA1 of the current HEAD
console.log(await getSHA());

// list all files that differ between 'main' and the current revision (including
// files not staged for commit and files not under revision control)
/** @type {import('watskeburt').IChange[]} */
const lChangedFiles = await list({ oldRevision: "main" });

// list all files that differ between 'v0.6.1' and 'v0.7.1' (by definition
// won't include files staged for commit and/ or not under revision control)
/** @type {import('watskeburt').IChange[]} */
const lChangedFiles = await list({
  oldRevision: "v0.6.1",
  newRevision: "v0.7.1",
});

// list all files that differ between 'main' and the current revision
// (excluding files not staged for commit)
/** @type {import('watskeburt').IChange[]|string} */
const lChangedFiles = await list({
  oldRevision: "main",
  trackedOnly: false, // when set to true leaves out files not under revision control
  outputType: "json", // options: "object", "json" and "regex"
});

The array of changes this returns looks like this:

[
  {
    name: "doc/cli.md",
    type: "modified",
  },
  {
    name: "test/thing.spec.mjs",
    type: "renamed",
    oldName: "test/old-thing.spec.mjs",
  },
  {
    name: "src/not-tracked-yet.mjs",
    type: "untracked",
  },
];

:shell: cli

Works with node >=18.11

# list all JavaScript-ish files changed since main in a regular expression
$ npx watskeburt main
^(src/cli[.]mjs|src/formatters/regex[.]mjs|src/version[.]mjs)$

This emits a regex that contains all changed files that could be source files in the JavaScript ecosystem (.js, .mjs, .ts, .tsx ...). It can be used in e.g. dependency-cruiser's --focus and --reaches filters.

The JSON output (= the array above, serialized) also contains other extensions.

Usage: watskeburt [options] [old-revision] [new-revision]

lists files & their statuses since [old-revision] or between [old-revision] and [new-revision].

-> When you don't pass a revision old-revision defaults to the current one.

Options:
  -T, --outputType <type>  what format to emit (choices: "json", "regex", default: "regex")
  --trackedOnly            only take tracked files into account (default: false)
  -V, --version            output the version number
  -h, --help               display help for command

why?

I needed something robust to support caching in dependency-cruiser and to run standalone to use in combination with dependency-cruiser.

A few specialized packages like this existed, but they had fallen out of maintenance. More generic packages still were maintained, but for my use case they were overkill.

🇳🇱 what does 'watskeburt' mean?

Wazzup.

watskeburt is a fast pronunciation of the Dutch "wat is er gebeurd?" (what has happened?) or "wat er is gebeurd" (what has happened).

Keywords

FAQs

Last updated on 13 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc