Skip to content

Commit

Permalink
- take care of name/version that contains @ or / characters.
Browse files Browse the repository at this point in the history
  • Loading branch information
zbryikt committed Dec 22, 2020
1 parent 5bcaeb7 commit 9ee6895
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 5 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 0.0.11

- take care of name/version that contains `@` or `/` characters.


# 0.0.10

- release necessary file(s) only.
Expand Down
14 changes: 12 additions & 2 deletions cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ fed = import$({
modules: []
}, JSON.parse(fs.readFileSync("package.json").toString()).frontendDependencies || {});
(fed.modules || []).map(function(obj){
var root, info, id, ref$, i$, name, version, desdir, maindir, b, srcdir;
var root, info, id, ref$, i$, name, version, ret, that, desdir, maindir, b, srcdir;
obj = typeof obj === 'string' ? {
name: obj
} : obj;
Expand All @@ -30,7 +30,17 @@ fed = import$({
throw new Error("fedep: not supported name in module " + obj.name + ".");
}
ref$ = id.split("@"), name = 0 < (i$ = ref$.length - 1) ? slice$.call(ref$, 0, i$) : (i$ = 0, []), version = ref$[i$];
name = name.join('@');
if (ret = /#([a-zA-Z0-9_.-]+)$/.exec(version)) {
version = ret[1];
}
if (/\//.exec(version)) {
version = version.replace(/\//g, '-');
}
name = (that = name[0])
? that
: name[1]
? "@" + name[1]
: name.join('@');
desdir = path.join(fed.root, name, version);
maindir = path.join(fed.root, name, "main");
fsExtra.removeSync(desdir);
Expand Down
14 changes: 13 additions & 1 deletion lib/main.ls
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,19 @@ fed = {root: '.', modules: []} <<< (JSON.parse(fs.read-file-sync "package.json"
id = info._id or "#{info.name}@#{info.version}"
if /\.\.|^\//.exec(id) => throw new Error("fedep: not supported name in module #{obj.name}.")
[...name,version] = id.split("@")
name = name.join \@

# TODO we may need a better approach for version resolving if semver cannot be found.
# if there is tag in version, just use it.
if (ret = /#([a-zA-Z0-9_.-]+)$/.exec(version)) => version = ret.1
# slash intervene path generation so replace all of them
if /\//.exec(version) => version = version.replace(/\//g, '-')

# name.0 might be empty due to namespaced module ( e.g., @loadingio/ldquery )
# so we simply added it back.
# name might contain patterns like `ldiconfont@git+ssh://git@...` so we discard things after 2nd elements.
name = if name.0 => that else if name.1 => "@#{name.1}"
# if there are any exception, just join them back to provide raw name.
else name.join(\@)
desdir = path.join(fed.root, name, version)
maindir = path.join(fed.root, name, "main")
fs-extra.remove-sync desdir
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"cli.js"
],
"description": "Frontend dependency installer",
"version": "0.0.10",
"version": "0.0.11",
"homepage": "https://github.com/plotdb/fedep",
"repository": {
"type": "git",
Expand Down

0 comments on commit 9ee6895

Please sign in to comment.