Compare commits
2 commits
11eecbf128
...
eff4fa2fe6
Author | SHA1 | Date | |
---|---|---|---|
eff4fa2fe6 | |||
9835924def |
3 changed files with 32 additions and 6 deletions
21
source/app.d
21
source/app.d
|
@ -12,7 +12,20 @@ int main(string[] args)
|
|||
.add(new Command("init", "Initializing the repository for storing snapshots"))
|
||||
.add(new Command("status", "Checking the status of tracked files"))
|
||||
.add(new Command("create", "Create a new backup"))
|
||||
.add(new Command("list", "List of backups"))
|
||||
.add(new Command("list", "List of backups")
|
||||
.add(new Flag("c", "comment", "Show comment")
|
||||
.name("comment")
|
||||
.optional
|
||||
)
|
||||
.add(new Flag("u", "user", "Show user")
|
||||
.name("user")
|
||||
.optional
|
||||
)
|
||||
.add(new Flag("e", "email", "Show email")
|
||||
.name("email")
|
||||
.optional
|
||||
)
|
||||
)
|
||||
.add(new Command("restore", "Restore to the specified snapshot state")
|
||||
.add(new Argument("hash", "hash").required)
|
||||
)
|
||||
|
@ -50,7 +63,11 @@ int main(string[] args)
|
|||
snag.create()
|
||||
)
|
||||
.on("list", list =>
|
||||
snag.list()
|
||||
snag.list(
|
||||
list.flag("comment"),
|
||||
list.flag("user"),
|
||||
list.flag("email")
|
||||
)
|
||||
)
|
||||
.on("restore", restore =>
|
||||
snag.restore(restore.arg("hash"))
|
||||
|
|
|
@ -172,22 +172,31 @@ class Snag {
|
|||
writeln("Backup was created successfully: ", newSnapshot);
|
||||
}
|
||||
|
||||
void list() {
|
||||
void list(bool comment, bool user, bool email) {
|
||||
string currentSnapshot = git(
|
||||
["rev-parse", "--short", "HEAD"],
|
||||
"Failed to retrieve current snapshot information"
|
||||
).output.strip('\n');
|
||||
|
||||
string format = "format:%h\t%ad";
|
||||
|
||||
comment && (format ~= "\t%s");
|
||||
user && (format ~= "\t%an");
|
||||
email && (format ~= "\t%ae");
|
||||
|
||||
git(
|
||||
[
|
||||
"log",
|
||||
"--all",
|
||||
"--date=format:%Y.%m.%d %H:%M",
|
||||
"--pretty=format:%ad\t%h"
|
||||
"--pretty=" ~ format
|
||||
],
|
||||
"Failed to retrieve the list of snapshots"
|
||||
).output.split('\n').map!(line => line.split('\t')).array.each!(e =>
|
||||
writefln("%s\t%s\t%s", currentSnapshot == e[1] ? " >" : "", e[0], e[1])
|
||||
writefln("%s\t%s",
|
||||
currentSnapshot == e[0] ? " >" : "",
|
||||
e.join("\t")
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module snag.version_;
|
||||
|
||||
enum snagVersion = "0.0.6";
|
||||
enum snagVersion = "0.0.7";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue