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("init", "Initializing the repository for storing snapshots"))
|
||||||
.add(new Command("status", "Checking the status of tracked files"))
|
.add(new Command("status", "Checking the status of tracked files"))
|
||||||
.add(new Command("create", "Create a new backup"))
|
.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 Command("restore", "Restore to the specified snapshot state")
|
||||||
.add(new Argument("hash", "hash").required)
|
.add(new Argument("hash", "hash").required)
|
||||||
)
|
)
|
||||||
|
@ -50,7 +63,11 @@ int main(string[] args)
|
||||||
snag.create()
|
snag.create()
|
||||||
)
|
)
|
||||||
.on("list", list =>
|
.on("list", list =>
|
||||||
snag.list()
|
snag.list(
|
||||||
|
list.flag("comment"),
|
||||||
|
list.flag("user"),
|
||||||
|
list.flag("email")
|
||||||
|
)
|
||||||
)
|
)
|
||||||
.on("restore", restore =>
|
.on("restore", restore =>
|
||||||
snag.restore(restore.arg("hash"))
|
snag.restore(restore.arg("hash"))
|
||||||
|
|
|
@ -172,22 +172,31 @@ class Snag {
|
||||||
writeln("Backup was created successfully: ", newSnapshot);
|
writeln("Backup was created successfully: ", newSnapshot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void list() {
|
void list(bool comment, bool user, bool email) {
|
||||||
string currentSnapshot = git(
|
string currentSnapshot = git(
|
||||||
["rev-parse", "--short", "HEAD"],
|
["rev-parse", "--short", "HEAD"],
|
||||||
"Failed to retrieve current snapshot information"
|
"Failed to retrieve current snapshot information"
|
||||||
).output.strip('\n');
|
).output.strip('\n');
|
||||||
|
|
||||||
|
string format = "format:%h\t%ad";
|
||||||
|
|
||||||
|
comment && (format ~= "\t%s");
|
||||||
|
user && (format ~= "\t%an");
|
||||||
|
email && (format ~= "\t%ae");
|
||||||
|
|
||||||
git(
|
git(
|
||||||
[
|
[
|
||||||
"log",
|
"log",
|
||||||
"--all",
|
"--all",
|
||||||
"--date=format:%Y.%m.%d %H:%M",
|
"--date=format:%Y.%m.%d %H:%M",
|
||||||
"--pretty=format:%ad\t%h"
|
"--pretty=" ~ format
|
||||||
],
|
],
|
||||||
"Failed to retrieve the list of snapshots"
|
"Failed to retrieve the list of snapshots"
|
||||||
).output.split('\n').map!(line => line.split('\t')).array.each!(e =>
|
).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_;
|
module snag.version_;
|
||||||
|
|
||||||
enum snagVersion = "0.0.6";
|
enum snagVersion = "0.0.7";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue