- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스) - Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포 - 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
71 lines
2.5 KiB
Ruby
71 lines
2.5 KiB
Ruby
# Copyright 2018-present 650 Industries. All rights reserved.
|
|
|
|
module Expo
|
|
class ReactImportPatcher
|
|
|
|
public def initialize(installer, options)
|
|
@root = installer.sandbox.root
|
|
@module_dirs = get_module_dirs(installer)
|
|
@options = options
|
|
end
|
|
|
|
public def run!
|
|
args = [
|
|
'node',
|
|
'--no-warnings',
|
|
'--eval',
|
|
'require(require.resolve(\'expo-modules-autolinking\', { paths: [\'' + __dir__ + '\'] }))(process.argv.slice(1))',
|
|
'patch-react-imports',
|
|
'--pods-root',
|
|
File.expand_path(@root),
|
|
]
|
|
|
|
if @options[:dry_run]
|
|
args.append('--dry-run')
|
|
end
|
|
|
|
@module_dirs.each do |dir|
|
|
args.append(File.expand_path(dir))
|
|
end
|
|
Pod::UI.message "Executing ReactImportsPatcher node command: #{Shellwords.join(args)}"
|
|
|
|
time_begin = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
system(*args)
|
|
elapsed_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) - time_begin
|
|
Pod::UI.info "expo_patch_react_imports! took #{elapsed_time.round(4)} seconds to transform files."
|
|
end
|
|
|
|
private def get_module_dirs(installer)
|
|
unless installer.pods_project
|
|
Pod::UI.message '`pods_project` not found. This is expected when `:incremental_installation` is enabled in your project\'s Podfile.'
|
|
return []
|
|
end
|
|
|
|
result = []
|
|
installer.pods_project.development_pods.children.each do |pod|
|
|
if pod.is_a?(Xcodeproj::Project::Object::PBXFileReference) && pod.path.end_with?('.xcodeproj')
|
|
# Support generate_multiple_pod_projects or use_frameworks!
|
|
project = Xcodeproj::Project.open(File.join(installer.sandbox.root, pod.path))
|
|
groups = project.groups.select { |group| !(['Dependencies', 'Frameworks', 'Products'].include? group.name) }
|
|
groups.each do |group|
|
|
result.append(group.real_path.to_s)
|
|
end
|
|
else
|
|
result.append(pod.real_path.to_s)
|
|
end
|
|
end
|
|
|
|
result
|
|
.select { |dir| dir.include? '/node_modules/' }
|
|
.reject do |dir|
|
|
# Exclude known dirs unnecessary to patch and reduce processing time
|
|
# Since we are using real (absolute) pathnames we need to assert that we are inside of the node_modules
|
|
# directory to not collide with other directories in the user's filesystem.
|
|
# We reject the react-native package and packages starting with expo-
|
|
dir.match(%r{^.*/node_modules/(react-native(/.*)?|expo-.*)$})
|
|
end
|
|
end
|
|
|
|
end # class ReactImportPatcher
|
|
end # module Expo
|