Linksaver (l2)
Save, organize and document your project links, licenses and dependencies.
Linksaver is a command-line tool for developers who want to keep track of external resources used in their projects.
The CLI command is:
l2
Linksaver stores all information in a structured linksaver.json file and can generate Markdown and TXT documentation containing:
- Project links
- Credits
- Licenses
- License files
- Package dependencies
- Cargo dependencies
- Git submodules
Features
✅ Save project links
✅ Store author and license information
✅ Generate Markdown documentation
✅ Generate TXT license reports
✅ Import npm dependencies from package-lock.json
✅ Import Rust dependencies from Cargo.lock
✅ Manage Git submodules
✅ Open saved links in your browser
✅ JSON based configuration
✅ Cross-platform support
Supported platforms:
- Windows
- Linux
- macOS
Installation
Install from PyPI:
pip install linksaver
After installation:
l2 help
should work.
Quick Start
Initialize Linksaver in your project:
l2 init
Example:
Init Linksaver
Projectname: MyProject
Created config at linksaver.json
Your project now contains:
MyProject/
│
├── linksaver.json
└── .samengine/
├── links.info.md
└── links.info.txt
Basic Usage
Add a link
l2 add
Example:
Name:
SDL2
Author:
SDL Team
License:
zlib
New Link:
https://github.com/libsdl-org/SDL
Description:
Cross platform multimedia library
List saved links
l2 list
Example:
"SDL2"
https://github.com/libsdl-org/SDL
by SDL Team
licensed under zlib
Generate documentation
Generate Markdown:
l2 view
Creates:
.samengine/links.md
Generate TXT:
l2 viewx
Creates:
.samengine/links.txt
Dependency Tracking
npm / Node.js
Import dependencies from:
package-lock.json
Run:
l2 addpkg
Linksaver collects:
- Package name
- Version
- License
- npm URL
- Date
Example:
{
"name": "typescript",
"version": "5.x",
"license": "Apache-2.0"
}
Rust / Cargo
Import dependencies from:
Cargo.lock
Run:
l2 addcargo
Requires:
cargo fetch
Linksaver collects:
- Crate name
- Version
- License
- crates.io URL
Git Submodules
Linksaver can store and clone external repositories.
Add a submodule:
l2 addsubmodule
Clone all saved repositories:
l2 clonesubm
Example:
Cloning dependencies
wxWidgets source
Cloned wxWidgets successfully!
Finished cloning every submodule!
Configuration
The main configuration file:
linksaver.json
Example:
{
"projectname": "Example",
"pretty": true,
"links": [],
"linkspkglock": [],
"linkscargolock": [],
"settings": {
"selectmenu": false
},
"git": {
"submodules": []
}
}
Interactive Menu
Enable the menu system:
{
"settings": {
"selectmenu": true
}
}
Now running:
l2
opens an interactive menu.
Commands
| Command | Description |
|---|---|
help |
Show help |
init |
Create configuration |
add |
Add link |
add2 |
Add text entry |
add3 |
Add license file |
view |
Generate Markdown |
viewx |
Generate TXT |
list |
Show credits |
addpkg |
Import npm dependencies |
addcargo |
Import Cargo dependencies |
open |
Open all links |
addsubmodule |
Add Git submodule |
clonesubm |
Clone Git submodules |
Why Linksaver?
Many projects use external libraries, assets and tools but often forget to document them.
Linksaver helps with:
- Open source compliance
- Creating credits pages
- License documentation
- Dependency tracking
- Project maintenance
Development
Linksaver is written in:
Python
Main technologies:
- Python Dataclasses
- JSON
- pathlib
- subprocess
- Git integration
License
Linksaver is licensed under:
Apache License 2.0
Copyright:
ShadowDara 2026
Links
Documentation:
https://shadowdara.github.io/docs/#/linksaver
Version
Current version:
3.0.0
Made with ❤️ by ShadowDara
Release files for linksaver 3.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| linksaver-3.0.3.tar.gz | 17.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| linksaver-3.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.1 kB
Release files / linksaver-3.0.3.tar.gz
| Download URL | linksaver-3.0.3.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
89f28728cb4a6ceb02488357f4c68336cf3e7df7c054a13c37ef260907676336
|
|
BLAKE2b-256 checksum How to use checksums |
97cbd5a89cdad53b15d59c81859719b981eeda7c7883619374706d7c03e999ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.2
|
Release files / linksaver-3.0.3-py3-none-any.whl
| Download URL | linksaver-3.0.3-py3-none-any.whl |
|---|---|
| Size | 18.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a12a391b5abbc9365d77ef0cd955a37d89c13c725148662dba8bc40f1d08585
|
|
BLAKE2b-256 checksum How to use checksums |
80b3603967418b5f81618a1620f3af9af54f32f625798fd416b6651efff926cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.2
|