Module: Lively::Electron::Packager
- Defined in:
- lib/lively/electron/packager.rb,
lib/lively/electron/packager/npm.rb,
lib/lively/electron/packager/pnpm.rb,
lib/lively/electron/packager/generic.rb
Defined Under Namespace
Classes: Generic, NotFoundError, Npm, Pnpm
Constant Summary collapse
- ENV_KEY =
"LIVELY_ELECTRON_PACKAGER"
Instance Attribute Summary collapse
Class Method Summary collapse
-
.detect(package_root, environment = ::ENV) ⇒ Object
Picks a packager for a project root.
-
.resolve_electron_executable(packager, search_roots, environment = ::ENV) ⇒ Object
Calls Generic#electron_executable_path for each of ‘search_roots` in order (e.g. the app’s working directory, then the gem root in development).
Instance Attribute Details
#Environment variable for explicitly selecting `npm` or `pnpm`.(variable) ⇒ Object (readonly)
19 |
# File 'lib/lively/electron/packager.rb', line 19 ENV_KEY = "LIVELY_ELECTRON_PACKAGER" |
Class Method Details
.detect(package_root, environment = ::ENV) ⇒ Object
Picks a packager for a project root.
Resolution order:
-
‘LIVELY_ELECTRON_PACKAGER` env var with value `npm` or `pnpm` (case-insensitive);
-
‘package.json` `packageManager` field (e.g. `pnpm@10.0.0` or `npm@10.0.0`);
-
a lone lock file (‘pnpm-lock.yaml` or `package-lock.json`);
-
if both lock files are present, ‘pnpm` (matches this gem’s default);
-
if there is no clear signal, ‘pnpm`.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/lively/electron/packager.rb', line 35 def detect(package_root, environment = ::ENV) root = File.(package_root) if (resolved = from_environment(environment[ENV_KEY])) return resolved end if (resolved = from_package_json(root)) return resolved end has_pnpm = File.file?(File.join(root, "pnpm-lock.yaml")) has_npm = File.file?(File.join(root, "package-lock.json")) if has_pnpm && has_npm return Pnpm.new elsif has_pnpm return Pnpm.new elsif has_npm return Npm.new else return Pnpm.new end end |
.resolve_electron_executable(packager, search_roots, environment = ::ENV) ⇒ Object
Calls Lively::Electron::Packager::Generic#electron_executable_path for each of ‘search_roots` in order (e.g. the app’s working directory, then the gem root in development). The first concrete path wins. If no root yields a local binary, falls back to the bare program name ‘“electron”` for the OS to find on `PATH`.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/lively/electron/packager.rb', line 65 def resolve_electron_executable(packager, search_roots, environment = ::ENV) search_roots .compact .map {|path| File.(path)} .uniq .each do |search_root| begin return packager.electron_executable_path(search_root, environment) rescue NotFoundError next end end # No local binary found in any root; rely on the OS to find `electron` on PATH: "electron" end |