@echo " make lint - lint The Sugar System."
@echo " make update - update repository with the current dot files."
@echo " make commit - commit changes to the repository."
- @echo " make install - update the current dot files with the repository."
+ @echo " make install - update current dot files with the repository."
@echo " make import FILES=<FILES>"
- @echo " - import the dot files into the repository."
+ @echo " - import dot files into the repository."
@echo " make import-all"
@echo " - import every uncontrolled dot files, which aren't"
@echo " ignored, into the repository."
+ @echo " make export FILSE=<FILES>"
+ @echo " - export dot files from the repository."
@echo " make diff FILE=<FILE>"
@echo " - show diff of the dot file."
@echo
perl ./tools/import.pl
-git status
+ifeq ($(FILES),)
+export:
+ @echo "Specify at least one file."
+ @echo "Usage: $(MAKE) export FILES=<FILES>"
+ @exit 1
+else
+export:
+ @echo $(FILES) | \
+ tr -s " " "\n" | \
+ perl ./tools/export.pl
+endif
+
ifeq ($(FILE),)
diff:
@echo "Specify one file."
perl ./tools/diff.pl $(FILE) | $(PAGER)
endif
-.PHONY: help lint update commit install import diff
+.PHONY: help lint update commit install import export diff
--- /dev/null
+use strict;
+use warnings;
+use Smart::Comments;
+use lib 'tools';
+require 'utils.pl';
+use File::Spec;
+use File::Compare;
+use File::Copy;
+
+sub main {
+ while (defined(my $arg = <>)) {
+ chomp $arg;
+
+ my $rel = File::Spec->file_name_is_absolute($arg)
+ ? File::Spec->abs2rel($arg, $ENV{HOME})
+ : $arg;
+ my $abs = File::Spec->rel2abs($rel, $ENV{HOME});
+ my $saved = rel2saved($rel);
+
+ if (!-e $saved) {
+ print "SKIP: $rel is not in the repository.\n";
+ next;
+ }
+ elsif (-e $abs) {
+ if (compare($abs, $saved) == 0) {
+ print "SKIP: $rel is identical to the copy in the repository.\n";
+ }
+ else {
+ print "SKIP: $rel is different from the copy in the repository.\n";
+ }
+ }
+ else {
+ print "Copying $saved to $abs...\n";
+ copy($saved, $abs) or die $!;
+ }
+ }
+}
+
+main();