Compare commits

...

2 commits

3 changed files with 32 additions and 6 deletions

View file

@ -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"))

View file

@ -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")
)
); );
} }

View file

@ -1,3 +1,3 @@
module snag.version_; module snag.version_;
enum snagVersion = "0.0.6"; enum snagVersion = "0.0.7";