import: support the '--file' option

This commit is contained in:
vyloy
2019-04-18 08:56:14 +08:00
parent 30573c4546
commit b07c386d02
3 changed files with 37 additions and 3 deletions
+13 -1
View File
@@ -19,7 +19,9 @@ class CmdImport(CmdBase):
out = self.args.out or default_out
self.repo.imp(self.args.url, out, self.args.resume)
self.repo.imp(
self.args.url, out, self.args.resume, fname=self.args.file
)
except DvcException:
logger.exception(
"failed to import {}. You could also try downloading "
@@ -62,4 +64,14 @@ def add_parser(subparsers, parent_parser):
import_parser.add_argument(
"out", nargs="?", help="Destination path to put files to."
)
import_parser.add_argument(
"-f",
"--file",
help="Specify name of the stage file. It should be "
"either 'Dvcfile' or have a '.dvc' suffix (e.g. "
"'prepare.dvc', 'clean.dvc', etc) in order for "
"dvc to be able to find it later. By default "
"the first output basename + .dvc is used as "
"a stage filename.",
)
import_parser.set_defaults(func=CmdImport)
+4 -2
View File
@@ -2,11 +2,13 @@ from dvc.repo.scm_context import scm_context
@scm_context
def imp(self, url, out, resume=False):
def imp(self, url, out, resume=False, fname=None):
from dvc.stage import Stage
with self.state:
stage = Stage.create(repo=self, cmd=None, deps=[url], outs=[out])
stage = Stage.create(
repo=self, cmd=None, deps=[url], outs=[out], fname=fname
)
if stage is None:
return None
+20
View File
@@ -156,3 +156,23 @@ class TestShouldRemoveOutsBeforeImport(TestDvc):
self.assertEqual(0, ret)
self.assertEqual(1, remove_outs_call_counter.mock.call_count)
class TestImportFilename(TestDvc):
def setUp(self):
super(TestImportFilename, self).setUp()
tmp_dir = self.mkdtemp()
self.external_source = os.path.join(tmp_dir, "file")
with open(self.external_source, "w") as fobj:
fobj.write("content")
def test(self):
ret = main(["import", "-f", "bar.dvc", self.external_source])
self.assertEqual(0, ret)
self.assertTrue(os.path.exists("bar.dvc"))
os.remove("bar.dvc")
ret = main(["import", "--file", "bar.dvc", self.external_source])
self.assertEqual(0, ret)
self.assertTrue(os.path.exists("bar.dvc"))