mirror of
https://github.com/nix-community/dream2nix.git
synced 2024-09-21 03:19:17 +03:00
translator v2 iface to accept only one project
This commit is contained in:
parent
4828105acb
commit
e7f65555cb
@ -563,30 +563,20 @@ let
|
||||
(project: project.resolved)
|
||||
projectsList;
|
||||
|
||||
# pure projects grouped by translator
|
||||
projectsByTranslator =
|
||||
l.groupBy
|
||||
(proj: "${proj.subsystem}_${l.head proj.translators}")
|
||||
projectsPureUnresolved;
|
||||
|
||||
# list of pure projects extended with 'dreamLock' attribute
|
||||
projectsResolvedOnTheFly =
|
||||
l.flatten
|
||||
(l.mapAttrsToList
|
||||
(translatorName: projects:
|
||||
l.forEach projectsPureUnresolved
|
||||
(proj:
|
||||
let
|
||||
p = l.head projects;
|
||||
translator = getTranslator p.subsystem p.translator;
|
||||
dreamLocks =
|
||||
translator.translate {
|
||||
inherit projects source tree;
|
||||
};
|
||||
translator = getTranslator proj.subsystem proj.translator;
|
||||
in
|
||||
l.zipListsWith
|
||||
(proj: dreamLock: proj // { inherit dreamLock; })
|
||||
projects
|
||||
dreamLocks)
|
||||
projectsByTranslator);
|
||||
proj
|
||||
// {
|
||||
dreamLock = translator.translate {
|
||||
inherit source tree;
|
||||
project = proj;
|
||||
};
|
||||
});
|
||||
|
||||
resolvedProjects = projectsResolved ++ projectsResolvedOnTheFly;
|
||||
|
||||
|
@ -136,6 +136,9 @@ let
|
||||
pathSplit = l.splitString "/" cleanPath;
|
||||
dirSplit = l.init pathSplit;
|
||||
leaf = l.last pathSplit;
|
||||
error = throw ''
|
||||
Failed while trying to navigate to ${path} from ${fullPath'}
|
||||
'';
|
||||
|
||||
dirAttrPath =
|
||||
l.init
|
||||
@ -146,6 +149,8 @@ let
|
||||
dir =
|
||||
if (l.length dirSplit == 0) || dirAttrPath == [ "" ] then
|
||||
self
|
||||
else if ! l.hasAttrByPath dirAttrPath directories then
|
||||
error
|
||||
else
|
||||
l.getAttrFromPath dirAttrPath directories;
|
||||
|
||||
@ -157,7 +162,7 @@ let
|
||||
else if dir ? files."${leaf}" then
|
||||
dir.files."${leaf}"
|
||||
else
|
||||
throw "could not find file or directory ${path} in ${fullPath'}";
|
||||
error;
|
||||
|
||||
self =
|
||||
{
|
||||
|
@ -23,27 +23,24 @@ let
|
||||
ensureTranslatorV2 = translator:
|
||||
let
|
||||
version = translator.version or 1;
|
||||
cleanedArgs = args: l.removeAttrs args [ "projets" "tree" ];
|
||||
cleanedArgs = args: l.removeAttrs args [ "project" "tree" ];
|
||||
|
||||
upgradedTranslator =
|
||||
translator // {
|
||||
translate = args:
|
||||
l.map
|
||||
(proj:
|
||||
let
|
||||
dreamLock =
|
||||
translator.translate
|
||||
((cleanedArgs args) // {
|
||||
source = "${args.source}/${proj.relPath}";
|
||||
name = proj.name;
|
||||
source = "${args.source}/${args.project.relPath}";
|
||||
name = args.project.name;
|
||||
});
|
||||
in
|
||||
dreamLock // {
|
||||
_generic = dreamLock._generic // {
|
||||
location = proj.relPath;
|
||||
location = args.project.relPath;
|
||||
};
|
||||
};
|
||||
})
|
||||
args.projects;
|
||||
};
|
||||
in
|
||||
if version == 2 then
|
||||
@ -59,16 +56,15 @@ let
|
||||
downgradeTranslator =
|
||||
translator // {
|
||||
translate = args:
|
||||
l.head
|
||||
(translator.translate (args // {
|
||||
translator.translate (args // {
|
||||
inherit (args) source;
|
||||
tree = dlib.prepareSourceTree { inherit (args) source; };
|
||||
projects = [{
|
||||
project = {
|
||||
name = translator.projectName { inherit (args) source; };
|
||||
relPath = "";
|
||||
subsystem = translator.subsystem;
|
||||
}];
|
||||
}));
|
||||
};
|
||||
});
|
||||
};
|
||||
in
|
||||
if version == 1 then
|
||||
|
@ -8,6 +8,9 @@ let
|
||||
l = lib // builtins;
|
||||
nodejsUtils = import ../../utils.nix { inherit lib; };
|
||||
|
||||
getPackageLock = tree: project:
|
||||
nodejsUtils.getWorkspaceLockFile tree project "package-lock.json";
|
||||
|
||||
translate =
|
||||
{
|
||||
translatorName,
|
||||
@ -15,52 +18,11 @@ let
|
||||
...
|
||||
}:
|
||||
{
|
||||
projects,
|
||||
project,
|
||||
source,
|
||||
tree,
|
||||
|
||||
name,
|
||||
noDev,
|
||||
nodejs,
|
||||
...
|
||||
}@args:
|
||||
let
|
||||
|
||||
getPackageLock = project:
|
||||
nodejsUtils.getWorkspaceLockFile tree project "package-lock.json";
|
||||
|
||||
allProjectsTranslated =
|
||||
l.map
|
||||
(proj:
|
||||
translateOne {
|
||||
inherit translatorName utils noDev nodejs;
|
||||
name = proj.name;
|
||||
source = "${args.source}/${proj.relPath}";
|
||||
tree = tree.getNodeFromPath proj.relPath;
|
||||
packageLock = (getPackageLock proj).jsonContent or null;
|
||||
relPath = proj.relPath;
|
||||
workspaces = proj.subsystemInfo.workspaces or [];
|
||||
})
|
||||
projects;
|
||||
|
||||
in
|
||||
allProjectsTranslated;
|
||||
|
||||
|
||||
translateOne =
|
||||
{
|
||||
translatorName,
|
||||
utils,
|
||||
source,
|
||||
tree,
|
||||
|
||||
# subsystem specific
|
||||
packageLock,
|
||||
relPath,
|
||||
workspaces,
|
||||
|
||||
# translator args
|
||||
name,
|
||||
noDev,
|
||||
nodejs,
|
||||
...
|
||||
@ -70,6 +32,13 @@ let
|
||||
b = builtins;
|
||||
|
||||
dev = ! noDev;
|
||||
name = project.name;
|
||||
tree = args.tree.getNodeFromPath project.relPath;
|
||||
relPath = project.relPath;
|
||||
source = "${args.source}/${relPath}";
|
||||
workspaces = project.subsystemInfo.workspaces or [];
|
||||
|
||||
packageLock = (getPackageLock args.tree project).jsonContent or null;
|
||||
|
||||
packageJson =
|
||||
(tree.getNodeFromPath "package.json").jsonContent;
|
||||
|
@ -6,60 +6,23 @@
|
||||
let
|
||||
l = lib // builtins;
|
||||
nodejsUtils = import ../../utils.nix { inherit lib; };
|
||||
parser = import ./parser.nix { inherit lib; };
|
||||
|
||||
translate = {
|
||||
getYarnLock = tree: proj:
|
||||
tree.getNodeFromPath "${proj.relPath}/yarn.lock";
|
||||
|
||||
translate =
|
||||
{
|
||||
translatorName,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
{
|
||||
projects,
|
||||
project,
|
||||
source,
|
||||
tree,
|
||||
|
||||
name,
|
||||
noDev,
|
||||
nodejs,
|
||||
...
|
||||
}@args: let
|
||||
|
||||
parser = import ./parser.nix { inherit lib; };
|
||||
|
||||
getYarnLock = proj:
|
||||
tree.getNodeFromPath "${proj.relPath}/yarn.lock";
|
||||
|
||||
allProjectsTranslated =
|
||||
l.map
|
||||
(proj:
|
||||
translateOne {
|
||||
inherit translatorName utils noDev nodejs;
|
||||
name = proj.name;
|
||||
source = "${args.source}/${proj.relPath}";
|
||||
tree = tree.getNodeFromPath proj.relPath;
|
||||
yarnLock =
|
||||
parser.parse (getYarnLock proj).content;
|
||||
relPath = proj.relPath;
|
||||
workspaces = proj.subsystemInfo.workspaces or [];
|
||||
})
|
||||
projects;
|
||||
|
||||
in
|
||||
allProjectsTranslated;
|
||||
|
||||
translateOne =
|
||||
{
|
||||
translatorName,
|
||||
utils,
|
||||
source,
|
||||
tree,
|
||||
|
||||
# subsystem specific
|
||||
yarnLock,
|
||||
relPath,
|
||||
workspaces,
|
||||
|
||||
# extraArgs
|
||||
name,
|
||||
nodejs,
|
||||
noDev,
|
||||
...
|
||||
@ -68,6 +31,11 @@ let
|
||||
let
|
||||
b = builtins;
|
||||
dev = ! noDev;
|
||||
name = project.name;
|
||||
relPath = project.relPath;
|
||||
tree = args.tree.getNodeFromPath project.relPath;
|
||||
workspaces = project.subsystemInfo.workspaces or [];
|
||||
yarnLock = parser.parse (tree.getNodeFromPath "yarn.lock").content;
|
||||
|
||||
defaultPackage =
|
||||
if name != "{automatic}" then
|
||||
|
Loading…
Reference in New Issue
Block a user