@@ -23,7 +23,18 @@ typedef struct {
23
23
bool package_added ;
24
24
} nr_php_package_json_builder_t ;
25
25
26
- nr_php_package_t * nr_php_package_create (char * name , char * version ) {
26
+ static inline const char * nr_php_package_source_priority_to_string (const nr_php_package_source_priority_t source_priority ) {
27
+ switch (source_priority ) {
28
+ case NR_PHP_PACKAGE_SOURCE_LEGACY :
29
+ return "legacy" ;
30
+ case NR_PHP_PACKAGE_SOURCE_COMPOSER :
31
+ return "composer" ;
32
+ default :
33
+ return "unknown" ;
34
+ }
35
+ }
36
+
37
+ nr_php_package_t * nr_php_package_create_with_source (char * name , char * version , const nr_php_package_source_priority_t source_priority ) {
27
38
nr_php_package_t * p = NULL ;
28
39
29
40
if (NULL == name ) {
@@ -43,12 +54,17 @@ nr_php_package_t* nr_php_package_create(char* name, char* version) {
43
54
PHP_PACKAGE_VERSION_UNKNOWN ); // if null, version is set to an empty
44
55
// string with a space according to spec
45
56
}
57
+ p -> source_priority = source_priority ;
46
58
47
- nrl_verbosedebug (NRL_INSTRUMENT , "Creating PHP Package '%s', version '%s'" ,
48
- p -> package_name , p -> package_version );
59
+ nrl_verbosedebug (NRL_INSTRUMENT , "Creating PHP Package '%s', version '%s', source %s " ,
60
+ p -> package_name , p -> package_version , nr_php_package_source_priority_to_string ( source_priority ) );
49
61
return p ;
50
62
}
51
63
64
+ nr_php_package_t * nr_php_package_create (char * name , char * version ) {
65
+ return nr_php_package_create_with_source (name , version , NR_PHP_PACKAGE_SOURCE_LEGACY );
66
+ }
67
+
52
68
void nr_php_package_destroy (nr_php_package_t * p ) {
53
69
if (NULL != p ) {
54
70
nr_free (p -> package_name );
@@ -87,7 +103,7 @@ void nr_php_packages_add_package(nr_php_packages_t* h, nr_php_package_t* p) {
87
103
package = (nr_php_package_t * )nr_hashmap_get (h -> data , p -> package_name ,
88
104
nr_strlen (p -> package_name ));
89
105
if (NULL != package ) {
90
- if (0 != nr_strcmp (package -> package_version , p -> package_version )) {
106
+ if (package -> source_priority <= p -> source_priority && 0 != nr_strcmp (package -> package_version , p -> package_version )) {
91
107
nr_free (package -> package_version );
92
108
package -> package_version = nr_strdup (p -> package_version );
93
109
}
0 commit comments