Generate valid directory name when move package

This commit is contained in:
Ivan Kravets
2017-03-05 00:14:05 +02:00
parent 93ce65b28b
commit 5e5c9d3bcf
2 changed files with 12 additions and 6 deletions

View File

@ -170,6 +170,13 @@ class PkgInstallerMixin(object):
fu = FileUnpacker(source_path, dest_dir)
return fu.start()
@staticmethod
def generate_install_dirname(manifest):
name = manifest['name']
if "id" in manifest:
name += "_ID%d" % manifest['id']
return name
def get_vcs_manifest_path(self, pkg_dir):
for item in os.listdir(pkg_dir):
if not isdir(join(pkg_dir, item)):
@ -325,11 +332,8 @@ class PkgInstallerMixin(object):
tmp_manifest = self.load_manifest(tmp_manifest_path)
assert set(["name", "version"]) <= set(tmp_manifest.keys())
name = tmp_manifest['name']
name = self.generate_install_dirname(tmp_manifest)
pkg_dir = join(self.package_dir, name)
if "id" in tmp_manifest:
name += "_ID%d" % tmp_manifest['id']
pkg_dir = join(self.package_dir, name)
# package should satisfy requirements
if requirements:
@ -604,7 +608,9 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
# unfix package with the same name
package_dir = self.get_package_dir(manifest['name'])
if package_dir and "@" in package_dir:
os.rename(package_dir, join(self.package_dir, manifest['name']))
os.rename(package_dir,
join(self.package_dir,
self.generate_install_dirname(manifest)))
self.reset_cache()
click.echo("[%s]" % click.style("OK", fg="green"))

View File

@ -126,7 +126,7 @@ def test_global_lib_uninstall(clirunner, validate_cliresult,
validate_cliresult(result)
items1 = [d.basename for d in isolated_pio_home.join("lib").listdir()]
items2 = [
"DHT22_ID58", "ArduinoJson_ID64@5.6.7", "ESPAsyncTCP_ID305",
"DHT22_ID58", "ArduinoJson_ID64", "ESPAsyncTCP_ID305",
"pubsubclient", "PJON", "rs485-nodeproto", "RadioHead_ID124"
]
assert set(items1) == set(items2)