1
1
use heroku_nodejs_utils:: package_json:: { PackageJson , PackageJsonError } ;
2
- use heroku_nodejs_utils:: telemetry:: init_tracer;
3
2
use libcnb:: build:: { BuildContext , BuildResult , BuildResultBuilder } ;
4
3
use libcnb:: data:: build_plan:: BuildPlanBuilder ;
5
4
use libcnb:: detect:: { DetectContext , DetectResult , DetectResultBuilder } ;
6
5
use libcnb:: generic:: GenericMetadata ;
7
6
use libcnb:: generic:: GenericPlatform ;
8
7
use libcnb:: { buildpack_main, Buildpack , Env } ;
9
8
use libherokubuildpack:: log:: log_header;
10
- use opentelemetry:: trace:: { TraceContextExt , Tracer } ;
11
- use opentelemetry:: KeyValue ;
12
9
13
10
use crate :: enable_corepack:: enable_corepack;
14
11
use crate :: prepare_corepack:: prepare_corepack;
@@ -35,67 +32,51 @@ impl Buildpack for CorepackBuildpack {
35
32
type Error = CorepackBuildpackError ;
36
33
37
34
fn detect ( & self , context : DetectContext < Self > ) -> libcnb:: Result < DetectResult , Self :: Error > {
38
- let tracer = init_tracer ( context. buildpack_descriptor . buildpack . id . to_string ( ) ) ;
39
- tracer. in_span ( "nodejs-corepack-detect" , |_cx| {
40
- // Corepack requires the `packageManager` key from `package.json`.
41
- // This buildpack won't be detected without it.
42
- let pkg_json_path = context. app_dir . join ( "package.json" ) ;
43
- if pkg_json_path. exists ( ) {
44
- let pkg_json = PackageJson :: read ( pkg_json_path)
45
- . map_err ( CorepackBuildpackError :: PackageJson ) ?;
46
- cfg:: get_supported_package_manager ( & pkg_json) . map_or_else (
47
- || DetectResultBuilder :: fail ( ) . build ( ) ,
48
- |pkg_mgr| {
49
- DetectResultBuilder :: pass ( )
50
- . build_plan (
51
- BuildPlanBuilder :: new ( )
52
- . requires ( "node" )
53
- . requires ( & pkg_mgr)
54
- . provides ( pkg_mgr)
55
- . build ( ) ,
56
- )
57
- . build ( )
58
- } ,
59
- )
60
- } else {
61
- DetectResultBuilder :: fail ( ) . build ( )
62
- }
63
- } )
35
+ // Corepack requires the `packageManager` key from `package.json`.
36
+ // This buildpack won't be detected without it.
37
+ let pkg_json_path = context. app_dir . join ( "package.json" ) ;
38
+ if pkg_json_path. exists ( ) {
39
+ let pkg_json =
40
+ PackageJson :: read ( pkg_json_path) . map_err ( CorepackBuildpackError :: PackageJson ) ?;
41
+ cfg:: get_supported_package_manager ( & pkg_json) . map_or_else (
42
+ || DetectResultBuilder :: fail ( ) . build ( ) ,
43
+ |pkg_mgr| {
44
+ DetectResultBuilder :: pass ( )
45
+ . build_plan (
46
+ BuildPlanBuilder :: new ( )
47
+ . requires ( "node" )
48
+ . requires ( & pkg_mgr)
49
+ . provides ( pkg_mgr)
50
+ . build ( ) ,
51
+ )
52
+ . build ( )
53
+ } ,
54
+ )
55
+ } else {
56
+ DetectResultBuilder :: fail ( ) . build ( )
57
+ }
64
58
}
65
59
66
60
fn build ( & self , context : BuildContext < Self > ) -> libcnb:: Result < BuildResult , Self :: Error > {
67
- let tracer = init_tracer ( context. buildpack_descriptor . buildpack . id . to_string ( ) ) ;
68
- tracer. in_span ( "nodejs-corepack-build" , |cx| {
69
- let pkg_mgr = PackageJson :: read ( context. app_dir . join ( "package.json" ) )
70
- . map_err ( CorepackBuildpackError :: PackageJson ) ?
71
- . package_manager
72
- . ok_or ( CorepackBuildpackError :: PackageManagerMissing ) ?;
61
+ let pkg_mgr = PackageJson :: read ( context. app_dir . join ( "package.json" ) )
62
+ . map_err ( CorepackBuildpackError :: PackageJson ) ?
63
+ . package_manager
64
+ . ok_or ( CorepackBuildpackError :: PackageManagerMissing ) ?;
73
65
74
- cx. span ( ) . set_attributes ( [
75
- KeyValue :: new ( "package_manager.name" , pkg_mgr. name . clone ( ) ) ,
76
- KeyValue :: new ( "package_manager.version" , pkg_mgr. version . to_string ( ) ) ,
77
- ] ) ;
66
+ let env = & Env :: from_current ( ) ;
78
67
79
- let env = & Env :: from_current ( ) ;
68
+ let corepack_version =
69
+ cmd:: corepack_version ( env) . map_err ( CorepackBuildpackError :: CorepackVersion ) ?;
80
70
81
- let corepack_version =
82
- cmd:: corepack_version ( env) . map_err ( CorepackBuildpackError :: CorepackVersion ) ?;
71
+ log_header ( format ! (
72
+ "Installing {} {} via corepack {corepack_version}" ,
73
+ pkg_mgr. name, pkg_mgr. version
74
+ ) ) ;
83
75
84
- cx. span ( ) . set_attribute ( KeyValue :: new (
85
- "corepack.version" ,
86
- corepack_version. to_string ( ) ,
87
- ) ) ;
76
+ enable_corepack ( & context, & corepack_version, & pkg_mgr, env) ?;
77
+ prepare_corepack ( & context, & pkg_mgr, env) ?;
88
78
89
- log_header ( format ! (
90
- "Installing {} {} via corepack {corepack_version}" ,
91
- pkg_mgr. name, pkg_mgr. version
92
- ) ) ;
93
-
94
- enable_corepack ( & context, & corepack_version, & pkg_mgr, env) ?;
95
- prepare_corepack ( & context, & pkg_mgr, env) ?;
96
-
97
- BuildResultBuilder :: new ( ) . build ( )
98
- } )
79
+ BuildResultBuilder :: new ( ) . build ( )
99
80
}
100
81
101
82
fn on_error ( & self , err : libcnb:: Error < Self :: Error > ) {
0 commit comments