Sha256: a38279ff5ffa54b8e796da6728e22ec9c3948625948df30b6131e3c5661600f9
Contents?: true
Size: 963 Bytes
Versions: 1
Compression:
Stored size: 963 Bytes
Contents
# frozen_string_literal: true require "json" require "open3" require "pathname" module CobraCommander module Yarn # Yarn workspace components source for an umbrella class Workspace < CobraCommander::Source[:js] def packages workspace_data.map do |name, spec| ::CobraCommander::Package.new( self, path: path.join(spec["location"]), dependencies: spec["workspaceDependencies"].map { |d| untag(d) }, name: untag(name) ) end end private def workspace_data output, error, status = Open3.capture3("yarn workspaces --json info", chdir: path.to_s) raise ::CobraCommander::Source::Error, json_data(error) unless status.success? JSON.parse(json_data(output)) end def json_data(json) JSON.parse(json)["data"] end def untag(name) name&.gsub(%r{^@[\w-]+/}, "") end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cobra_commander-yarn-1.0.0 | lib/cobra_commander/yarn/workspace.rb |