Version calculator based on source code.
sver
is small cli command for calculate version based on source code of git repository.
Calculate repository root.
$ sver calc .
ef5d3d3db6d5
Calculate sub directory in the repository.
$ sver calc testdata/service1/
3f1bec06015e
Calculate multiple directory and output toml format.
$ sver calc testdata/service1/ testdata/service2/ --output toml
[[versions]]
repository_root = "/home/mitoma/src/github.com/mitoma/sver/"
path = "testdata/service1"
version = "3f1bec06015e"
[[versions]]
repository_root = "/home/mitoma/src/github.com/mitoma/sver/"
path = "testdata/service2"
version = "fd0053eab4b8"
name | value |
---|---|
--length | hash length. short=12, long=64 |
--output | output format. version-only, toml, json |
$ sver list testdata/service2
testdata/lib1/.gitkeep
testdata/lib2/sver.toml
testdata/service1/sver.toml
testdata/service2/sver.toml
...
$ sver validate
[OK] /sver.toml:[default]
[OK] testdata/cyclic1/sver.toml:[default]
[OK] testdata/cyclic2/sver.toml:[default]
[Fail] testdata/invalid_config1/sver.toml:[default]
invalid_dependency:["unknown/path"]
invalid_exclude:[]
[Fail] testdata/invalid_config2/sver.toml:[default]
invalid_dependency:[]
invalid_exclude:["target"]
[OK] testdata/lib2/sver.toml:[default]
[OK] testdata/service1/sver.toml:[default]
[OK] testdata/service2/sver.toml:[default]
$ sver list src:prof1
src/sver.toml
src/test1.txt
$ sver export src:prof1
export-dir: /tmp/sver-export-018ae55f-59a7-76e5-b836-619928cd0c8
$ tree /tmp/sver-export-018ae55f-59a7-76e5-b836-619928cd0c8
/tmp/sver-export-018ae55f-59a7-76e5-b836-619928cd0c8
└── src
├── sver.toml
└── test1.txt
Lists which files on the Git repository were referenced by a command when it was executed.
This command is experimental for Linux only.
$ sver inspect -- cargo fmt --all
Cargo.toml
src/cli/args.rs
src/cli/mod.rs
src/cli/outputs.rs
src/filemode.rs
src/inspect.rs
src/lib.rs
src/main.rs
src/sver_config.rs
src/sver_repository.rs
tests/integration_test.rs
tests/test_tool.rs
By placing a sver.toml
file, you can add dependent directories and files to the directory to be calculated.
sver.toml
is a configuration file for defining directory dependencies.
key | notes |
---|---|
<profile> | Profile. default value is "default". |
<profile>.dependencies[] | Dependency files of directories. Set relative path from repository root. |
<profile>.excludes[] | Exclude files of directories. Set relative path from target directory |
example1
service1 depends on lib1 directory.
.
├── README.md
├── libs1
│ └── lib.rs
└── service1
├── main.rs
└── sver.toml (1)
sver.toml (1)
[default]
# path from the root
dependencies = [
"lib1",
]
excludes = []
example2
service1 ignore service1/doc directory.
.
├── README.md
├── libs1
│ └── lib.rs
└── service1
├── main.rs
├── sver.toml (2)
└── doc
└── design.md
sver.toml (2)
[default]
dependencies = [
"lib1",
]
# path from the service1 directory
excludes = [
"doc",
]
If you want to switch between multiple source sets in version calculations, you can use profiles.
The profile is specified in the <path>:<profile>
format.
ex)
sver calc lib1:build
sver calc .:default .:build
sver list .:test
example3
add build profile for ignore tests.
.
├── README.md
├── src
│ └── lib.rs
├── tests
│ └── test.rs
└── sver.toml (3)
sver.toml (3)
[default]
dependencies = []
[build]
excludes = ["README.md", "tests"]
If you want to use GitHub Actions, you can use sver-actions.