@n1kk/git-count
v0.1.7
Published
Cli util to print to console changed line count split to categories fo the current diff.
Downloads
14
Readme
Analyzes git diff
files and separates them into categories that you specify. Produces colorized output for console.
Usage
JavaScript
// count-lines.js
const countLines = require("git-count");
const testConfig = {
source: {
code: {
include: {
code: /(src|styles|public)\/.*\.(jsx?|tsx?|[sp]?css|vue|html)/
},
exclude: {
specs: /\.specs?\./,
tests: /\s*tests\//
}
},
tests: {
include: {
specs: /\.specs?\./,
tests: /\s*tests\//
}
}
},
configs: {
include: {
dotFiles: /^\..*|\/\..*/,
dotConfig: /.*\.config\..*/,
configExts: /\.(json|yml|cgf|rc|toml|ini|properties)/
},
exclude: {
packageLock: /package-lock\.json|yarn\.lock/
}
}
}
(async () => {
try {
const output = await countLines.countLines({
config: testConfig,
verbose: true,
categories: [] // prints all categories
// categories: ["source"], // will print both source subcats
// categories: ["source:code"], // will print only code subcat
});
console.log(output);
}
catch (e) {
console.error(e);
}
})();
TypeScript
// count-lines.ts
import { CategoriesConfig, countLines } from "git-count";
const testConfig: CategoriesConfig = {
source: {
code: {
include: {
code: /(src|styles|public)\/.*\.(jsx?|tsx?|[sp]?css|vue|html)/
},
exclude: {
specs: /\.specs?\./,
tests: /\s*tests\//
}
},
tests: {
include: {
specs: /\.specs?\./,
tests: /\s*tests\//
}
}
},
configs: {
include: {
dotFiles: /^\..*|\/\..*/,
dotConfig: /.*\.config\..*/,
configExts: /\.(json|yml|cgf|rc|toml|ini|properties)/
},
exclude: {
packageLock: /package-lock\.json|yarn\.lock/
}
}
};
async function main() {
try {
const verb = process.argv.includes("--verb")
const cats = process.argv.slice(2).filter(arg => !arg.startsWith("--"))
const output = await countLines({
config: testConfig,
verbose: verb,
categories: cats
})
console.log(output)
} catch (e) {
console.error(e)
}
}
main()
You can add your scipt to git aliases for quick access
git config --local alias.count "!node count-lines.js"
git config --local alias.count "!ts-node count-lines.ts"
$ git count
source:code #8 +183 -234 417 (-51)
source:tests #2 +2 -2 4 (0)
configs #10 +71 -254 325 (-183)
scripts #9 +674 -83 757 (+591)
text #2 +11 -11 22 (0)
assets #0 0 0 0 (0)
docs #2 +47 -32 79 (+15)
uncategorized #3 +2621 -385 3006 (+2236)
Total: 36 files changed, 3602 insertions(+), 1001 deletions(-)
$ git count source
source:code #8 +183 -234 417 (-51)
source:tests #2 +2 -2 4 (0)
Total: 36 files changed, 3610 insertions(+), 1001 deletions(-)
$ git count source --verb
source:code #8 +183 -234 417 (-51)
public/index.html code 0 -1 1 (-1)
src/Application.ts code +3 -1 4 (+2)
src/main.ts code +68 -26 94 (+42)
src/worker.ts code +51 -37 88 (+14)
src/cache.ts code +52 -29 81 (+23)
src/shims-global.d.ts code +2 -1 3 (+1)
src/views/Main.view.scss code +5 -107 112 (-102)
src/views/Main.view.ts code +2 -32 34 (-30)
source:tests #2 +2 -2 4 (0)
src/LifeGuard.spec.ts specs +1 -1 2 (0)
src/gService.spec.ts specs +1 -1 2 (0)
Total: 36 files changed, 3609 insertions(+), 1001 deletions(-)