diff options
-rw-r--r-- | Makefile | 17 | ||||
-rw-r--r-- | cache/cache.go | 17 | ||||
-rw-r--r-- | cache/cache_test.go | 17 | ||||
-rw-r--r-- | delta/delta.go | 17 | ||||
-rw-r--r-- | exp/Makefile | 17 | ||||
-rwxr-xr-x | exp/exp.sh | 17 | ||||
-rw-r--r-- | logger/logger.go | 17 | ||||
-rw-r--r-- | logger/logger_test.go | 19 | ||||
-rw-r--r-- | main.go | 17 | ||||
-rw-r--r-- | repo/chunk.go | 17 | ||||
-rw-r--r-- | repo/nowindows_test.go | 17 | ||||
-rw-r--r-- | repo/repo.go | 17 | ||||
-rw-r--r-- | repo/repo_test.go | 17 | ||||
-rw-r--r-- | sketch/sketch.go | 17 | ||||
-rw-r--r-- | sketch/sketch_test.go | 17 | ||||
-rw-r--r-- | slice/slice.go | 91 | ||||
-rw-r--r-- | slice/slice_test.go | 67 | ||||
-rw-r--r-- | tar.go | 43 | ||||
-rw-r--r-- | testutils/assert.go | 17 | ||||
-rw-r--r-- | utils/io.go | 17 | ||||
-rw-r--r-- | utils/io_test.go | 17 | ||||
-rw-r--r-- | utils/string.go | 17 | ||||
-rw-r--r-- | utils/string_test.go | 17 |
23 files changed, 341 insertions, 202 deletions
@@ -1,3 +1,20 @@ +# Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + +# This file is part of dna-backup. + +# dna-backup is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# dna-backup is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + BIN := dna-backup SRC := $(shell find . -not \( -path './exp' -prune \) -type f -name '*.go') V := $(if $(CI),-v) diff --git a/cache/cache.go b/cache/cache.go index ff2c279..b5bd018 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package cache import "sync" diff --git a/cache/cache_test.go b/cache/cache_test.go index 6b84b79..df830d4 100644 --- a/cache/cache_test.go +++ b/cache/cache_test.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package cache import ( diff --git a/delta/delta.go b/delta/delta.go index 4be57c2..5729ad1 100644 --- a/delta/delta.go +++ b/delta/delta.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package delta import ( diff --git a/exp/Makefile b/exp/Makefile index 175ce42..81a9464 100644 --- a/exp/Makefile +++ b/exp/Makefile @@ -1,3 +1,20 @@ +# Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + +# This file is part of dna-backup. + +# dna-backup is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# dna-backup is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + SHELL := /bin/bash ################# Principal parameters ################# @@ -1,5 +1,22 @@ #!/bin/bash +# Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + +# This file is part of dna-backup. + +# dna-backup is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# dna-backup is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + # This script expects the following variables to be exported: # - DNA_BACKUP: the path to dna-backup binary # - DNA_PARAMS: the path of the files that desscribes the multiple parameters to test diff --git a/logger/logger.go b/logger/logger.go index 417a0b9..e782d3c 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + // Package logger offers simple logging package logger diff --git a/logger/logger_test.go b/logger/logger_test.go index 2e1ff25..1338110 100644 --- a/logger/logger_test.go +++ b/logger/logger_test.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package logger import ( @@ -119,7 +136,7 @@ func TestFlags(t *testing.T) { if !strings.Contains(s, "info 1") { t.Errorf("log output %q should contain: info 1", s) } - path := "logger/logger_test.go:117" + path := "logger/logger_test.go:134" if !strings.Contains(s, path) { t.Errorf("log output %q should contain: %s", s, path) } @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package main import ( diff --git a/repo/chunk.go b/repo/chunk.go index 618cc9b..d3d4493 100644 --- a/repo/chunk.go +++ b/repo/chunk.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package repo import ( diff --git a/repo/nowindows_test.go b/repo/nowindows_test.go index 28752ba..c5161af 100644 --- a/repo/nowindows_test.go +++ b/repo/nowindows_test.go @@ -1,5 +1,22 @@ // +build !windows +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package repo import ( diff --git a/repo/repo.go b/repo/repo.go index 864dc9e..d3a5904 100644 --- a/repo/repo.go +++ b/repo/repo.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + /* Manage a deduplicated versionned backups repository. diff --git a/repo/repo_test.go b/repo/repo_test.go index 1384b92..38219e3 100644 --- a/repo/repo_test.go +++ b/repo/repo_test.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package repo import ( diff --git a/sketch/sketch.go b/sketch/sketch.go index 7870c3d..3656290 100644 --- a/sketch/sketch.go +++ b/sketch/sketch.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package sketch import ( diff --git a/sketch/sketch_test.go b/sketch/sketch_test.go index 851320c..558cbd0 100644 --- a/sketch/sketch_test.go +++ b/sketch/sketch_test.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package sketch import ( diff --git a/slice/slice.go b/slice/slice.go deleted file mode 100644 index e5b959e..0000000 --- a/slice/slice.go +++ /dev/null @@ -1,91 +0,0 @@ -package slice - -import ( - "fmt" - "reflect" -) - -type Slice []interface{} - -type Del int - -type Ins struct { - Idx int - Value []interface{} -} - -type insData struct { - idx int - count int -} - -type Delta struct { - Del []Del - Ins []Ins -} - -func (d Delta) String() string { - data := make([]insData, len(d.Ins)) - for i, ins := range d.Ins { - data[i] = insData{ins.Idx, len(ins.Value)} - } - return fmt.Sprintf("{Del: %d Ins: %+v}", d.Del, data) -} - -func Patch(source Slice, delta Delta) (target Slice) { - // apply Del part from patch to source into temp - size := len(source) - len(delta.Del) - temp := make(Slice, size) - fill := 0 - prev := 0 - for _, del := range delta.Del { - di := int(del) - copy(temp[fill:], source[prev:di]) - fill += di - prev - prev = di + 1 - } - copy(temp[fill:], source[prev:]) - // apply Ins part from patch to temp into target - for _, ins := range delta.Ins { - size += len(ins.Value) - } - target = make(Slice, size) - fill = 0 - prev = 0 - tpos := 0 - for _, ins := range delta.Ins { - offset := ins.Idx - prev - copy(target[fill:], temp[tpos:tpos+offset]) - fill += offset - tpos += offset - copy(target[fill:], ins.Value) - fill += len(ins.Value) - prev = ins.Idx + len(ins.Value) - } - copy(target[fill:], temp[tpos:]) - return -} - -func Diff(source Slice, target Slice) (delta Delta) { - var si, ti int - var found bool - for ; si < len(source); si++ { - for i := ti; i < len(target); i++ { - found = reflect.DeepEqual(target[i], source[si]) - if found { - if i != ti { - delta.Ins = append(delta.Ins, Ins{ti, target[ti:i]}) - } - ti = i + 1 - break - } - } - if !found { - delta.Del = append(delta.Del, Del(si)) - } - } - if ti < len(target) { - delta.Ins = append(delta.Ins, Ins{ti, target[ti:]}) - } - return -} diff --git a/slice/slice_test.go b/slice/slice_test.go deleted file mode 100644 index 8cb2a68..0000000 --- a/slice/slice_test.go +++ /dev/null @@ -1,67 +0,0 @@ -package slice_test - -import ( - "testing" - - "github.com/n-peugnet/dna-backup/slice" - "github.com/n-peugnet/dna-backup/testutils" -) - -func TestPatch(t *testing.T) { - source := slice.Slice{1, 2, 3, 4} - target := slice.Slice{2, 5, 3, 6, 4, 7, 8} - patch := slice.Diff(source, target) - testutils.AssertSame(t, []slice.Del{0}, patch.Del, "Patch del part") - testutils.AssertSame(t, []slice.Ins{ - {1, slice.Slice{5}}, - {3, slice.Slice{6}}, - {5, slice.Slice{7, 8}}, - }, patch.Ins, "Patch ins part") - actual := slice.Patch(source, patch) - testutils.AssertSame(t, target, actual, "Target obtained from patch application") -} - -func TestEmptyPatch(t *testing.T) { - source := slice.Slice{1, 2, 3, 4} - target := slice.Slice{1, 2, 3, 4} - patch := slice.Diff(source, target) - testutils.AssertSame(t, *new([]slice.Del), patch.Del, "Patch del part") - testutils.AssertSame(t, *new([]slice.Ins), patch.Ins, "Patch ins part") - actual := slice.Patch(source, patch) - testutils.AssertSame(t, target, actual, "Target obtained from patch application") -} - -type i struct { - int -} - -func TestStruct(t *testing.T) { - c1, c2, c3, c4, c5, c6, c7, c8 := &i{1}, &i{2}, &i{3}, &i{4}, &i{5}, &i{6}, &i{7}, &i{8} - source := slice.Slice{c1, c2, c3, c4} - target := slice.Slice{&i{5}, c2, c5, c6, &i{4}, c7, &i{8}} - patch := slice.Diff(source, target) - testutils.AssertSame(t, []slice.Del{0, 2}, patch.Del, "Patch del part") - testutils.AssertSame(t, []slice.Ins{ - {0, slice.Slice{c5}}, - {2, slice.Slice{c5, c6}}, - {5, slice.Slice{c7, c8}}, - }, patch.Ins, "Patch ins part") - actual := slice.Patch(source, patch) - testutils.AssertSame(t, target, actual, "Target obtained from patch application") -} - -func TestDeltaString(t *testing.T) { - delta := slice.Delta{ - Del: []slice.Del{0, 3, 4}, - Ins: []slice.Ins{ - {2, slice.Slice{6, 7, 8}}, - {5, slice.Slice{5}}, - }, - } - testutils.AssertSame( - t, - "{Del: [0 3 4] Ins: [{idx:2 count:3} {idx:5 count:1}]}", - delta.String(), - "Delta string representation", - ) -} @@ -1,43 +0,0 @@ -package main - -import ( - "archive/tar" - "io" - "os" - - "github.com/n-peugnet/dna-backup/logger" - "github.com/n-peugnet/dna-backup/repo" -) - -func streamFilesTar(files []repo.File, stream io.WriteCloser) { - tarStream := tar.NewWriter(stream) - for _, f := range files { - file, err := os.Open(f.Path) - if err != nil { - logger.Error(err) - continue - } - stat, err := file.Stat() - if err != nil { - logger.Errorf("getting stat of file '%s': %s", f.Path, err) - continue - } - hdr, err := tar.FileInfoHeader(stat, "") - if err != nil { - logger.Errorf("creating tar header for file '%s': %s", f.Path, err) - continue - } - if err := tarStream.WriteHeader(hdr); err != nil { - logger.Panicf("writing tar header to stream for file '%s': %s", f.Path, err) - } - if _, err := io.Copy(tarStream, file); err != nil { - logger.Panicf("writing file to stream '%s': %s", f.Path, err) - } - } - if err := tarStream.Close(); err != nil { - logger.Panic("closing tar stream:", err) - } - if err := stream.Close(); err != nil { - logger.Panic("closing stream:", err) - } -} diff --git a/testutils/assert.go b/testutils/assert.go index 4a1c6ee..c757a92 100644 --- a/testutils/assert.go +++ b/testutils/assert.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package testutils import ( diff --git a/utils/io.go b/utils/io.go index fcc341e..a0aa70c 100644 --- a/utils/io.go +++ b/utils/io.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package utils import ( diff --git a/utils/io_test.go b/utils/io_test.go index ad1a576..f994dce 100644 --- a/utils/io_test.go +++ b/utils/io_test.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package utils_test import ( diff --git a/utils/string.go b/utils/string.go index b3cbb17..e8533e9 100644 --- a/utils/string.go +++ b/utils/string.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package utils import ( diff --git a/utils/string_test.go b/utils/string_test.go index 5d42c24..fab068a 100644 --- a/utils/string_test.go +++ b/utils/string_test.go @@ -1,3 +1,20 @@ +/* Copyright (C) 2021 Nicolas Peugnet <n.peugnet@free.fr> + + This file is part of dna-backup. + + dna-backup is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + dna-backup is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with dna-backup. If not, see <https://www.gnu.org/licenses/>. */ + package utils_test import ( |