1- const projectGraphBuilder = require ( "./projectGraphBuilder" ) ;
2- const ui5Framework = require ( "./providers/ui5Framework" ) ;
3- const log = require ( "@ui5/logger" ) . getLogger ( "graph:projectGraphFromDirectory" ) ;
1+ const path = require ( "path" ) ;
2+ const projectGraphBuilder = require ( "./graph/providers/projectGraphBuilder" ) ;
3+ const ui5Framework = require ( "./graph/helpers/ui5Framework" ) ;
4+ const log = require ( "@ui5/logger" ) . getLogger ( "generateProjectGraph" ) ;
45
56/**
67 * Helper module to create a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph}
78 * from a directory
89 *
910 * @public
10- * @alias module:@ui 5/project.graph.projectGraphFromTree
11+ * @alias module:@ui 5/project.generateProjectGraph
1112 * @param {TreeNode } tree Dependency tree as returned by a translator
1213 * @returns {module:@ui5/project.graph.ProjectGraph } A new project graph instance
1314 */
14- const projectGraphFromDirectory = {
15+ const generateProjectGraph = {
1516 /**
1617 * Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} by resolving
1718 * dependencies from package.json files and configuring projects from ui5.yaml files
1819 *
1920 * @public
2021 * @param {object } [options]
21- * @param {string } [options.cwd=. ] Directory to start searching for the root module
22+ * @param {string } [options.cwd=process.cwd() ] Directory to start searching for the root module
2223 * @param {object } [options.rootConfiguration]
2324 * Configuration object to use for the root module instead of reading from a configuration file
2425 * @param {string } [options.rootConfigPath]
2526 * Configuration file to use for the root module instead the default ui5.yaml
2627 * @param {string } [options.versionOverride] Framework version to use instead of the one defined in the root project
2728 * @returns {Promise<module:@ui5/project.graph.ProjectGraph> } Promise resolving to a Project Graph instance
2829 */
29- usingNpm : async function ( { cwd = "." , rootConfiguration, rootConfigPath, versionOverride} ) {
30+ usingNodePackageDependencies : async function ( { cwd, rootConfiguration, rootConfigPath, versionOverride} ) {
3031 log . verbose ( `Creating project graph using npm provider...` ) ;
31- const NpmProvider = require ( "./providers/npm " ) ;
32+ const NpmProvider = require ( "./graph/ providers/NodePackageDependencies " ) ;
3233
3334 const provider = new NpmProvider ( {
34- cwd : cwd ,
35+ cwd : cwd ? path . resolve ( cwd ) : process . cwd ( ) ,
3536 rootConfiguration,
3637 rootConfigPath
3738 } ) ;
@@ -44,36 +45,62 @@ const projectGraphFromDirectory = {
4445 } ,
4546
4647 /**
47- * Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} from on a
48+ * Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} from a
4849 * YAML file following the structure of the
4950 * [@ui5/project.graph.projectGraphFromTree]{@link module:@ui5/project.graph.projectGraphFromTree} API
5051 *
5152 * @public
5253 * @param {object } options
5354 * @param {object } options.filePath Path to the file dependency configuration file
54- * @param {string } [options.cwd=. ] Directory to start searching for the root module
55+ * @param {string } [options.cwd=process.cwd() ] Directory to start searching for the root module
5556 * @param {string } [options.versionOverride] Framework version to use instead of the one defined in the root project
5657 * @returns {Promise<module:@ui5/project.graph.ProjectGraph> } Promise resolving to a Project Graph instance
5758 */
58- usingStaticFile : async function ( { cwd = "." , filePath, versionOverride} ) {
59+ usingStaticFile : async function ( { cwd, filePath, versionOverride} ) {
5960 log . verbose ( `Creating project graph using static file...` ) ;
60- const staticTranslator = require ( "../translators/static" ) ;
61- const DependencyTreeProvider = require ( "./providers/DependencyTree" ) ;
61+ const staticTranslator = require ( "./translators/static" ) ;
6262
63- const tree = await staticTranslator . generateDependencyTree ( null , {
63+ const dependencyTree = await staticTranslator . generateDependencyTree ( cwd ? path . resolve ( cwd ) : process . cwd ( ) , {
6464 parameters : [ filePath ] // *sigh*
6565 } ) ;
6666
67+ const DependencyTreeProvider = require ( "./graph/providers/DependencyTree" ) ;
6768 const provider = new DependencyTreeProvider ( {
68- tree
69+ dependencyTree
6970 } ) ;
7071
7172 const projectGraph = await projectGraphBuilder ( provider ) ;
7273
7374 await ui5Framework . enrichProjectGraph ( projectGraph , { versionOverride} ) ;
7475
76+ return projectGraph ;
77+ } ,
78+
79+ /**
80+ * Generates a [@ui5/project.graph.ProjectGraph]{@link module:@ui5/project.graph.ProjectGraph} from a
81+ * YAML file following the structure of the
82+ * [@ui5/project.graph.projectGraphFromTree]{@link module:@ui5/project.graph.projectGraphFromTree} API
83+ *
84+ * @public
85+ * @param {object } options
86+ * @param {module:@ui5/project.graph.providers.DependencyTree.TreeNode } options.dependencyTree
87+ * @param {string } [options.versionOverride] Framework version to use instead of the one defined in the root project
88+ * @returns {Promise<module:@ui5/project.graph.ProjectGraph> } Promise resolving to a Project Graph instance
89+ */
90+ usingObject : async function ( { dependencyTree, versionOverride} ) {
91+ log . verbose ( `Creating project graph using object...` ) ;
92+
93+ const DependencyTreeProvider = require ( "./graph/providers/DependencyTree" ) ;
94+ const dependencyTreeProvider = new DependencyTreeProvider ( {
95+ dependencyTree
96+ } ) ;
97+
98+ const projectGraph = await projectGraphBuilder ( dependencyTreeProvider ) ;
99+
100+ await ui5Framework . enrichProjectGraph ( projectGraph , { versionOverride} ) ;
101+
75102 return projectGraph ;
76103 }
77104} ;
78105
79- module . exports = projectGraphFromDirectory ;
106+ module . exports = generateProjectGraph ;
0 commit comments