-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadd_new_files.rb
More file actions
executable file
·61 lines (46 loc) · 2.1 KB
/
Copy pathadd_new_files.rb
File metadata and controls
executable file
·61 lines (46 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env ruby
# Script to add new Swift files to Xcode project
require 'securerandom'
project_path = '/Volumes/Data/xcode/NMAPScanner/NMAPScanner.xcodeproj/project.pbxproj'
# Files to add
new_files = [
'ARPScanner.swift',
'DeviceAnnotations.swift',
'ScanScheduler.swift',
'HistoricalTracker.swift',
'ExportManager.swift',
'SearchAndFilter.swift',
'ScanPresets.swift',
'NotificationManager.swift'
]
# Read the project file
content = File.read(project_path)
# Generate unique IDs for each file (PBXFileReference and PBXBuildFile)
file_refs = {}
build_files = {}
new_files.each do |filename|
file_refs[filename] = SecureRandom.hex(12).upcase
build_files[filename] = SecureRandom.hex(12).upcase
end
# Add PBXBuildFile entries
build_file_section = new_files.map do |filename|
"\t\t#{build_files[filename]} /* #{filename} in Sources */ = {isa = PBXBuildFile; fileRef = #{file_refs[filename]} /* #{filename} */; };"
end.join("\n")
content.sub!(/\/\* End PBXBuildFile section \*\//, "#{build_file_section}\n/* End PBXBuildFile section */")
# Add PBXFileReference entries
file_ref_section = new_files.map do |filename|
"\t\t#{file_refs[filename]} /* #{filename} */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = #{filename}; path = NMAPScanner/#{filename}; sourceTree = \"<group>\"; };"
end.join("\n")
content.sub!(/0B12C978BA4C53C4ED40C3DA \/\* IntegratedDashboardViewV3.swift \*\/\);/,
"0B12C978BA4C53C4ED40C3DA /* IntegratedDashboardViewV3.swift */,\n" +
new_files.map { |f| "\t\t\t\t#{file_refs[f]} /* #{f} */," }.join("\n") + "\n\t\t\t);")
# Add to Sources build phase
sources_section = new_files.map do |filename|
"\t\t\t\t#{build_files[filename]} /* #{filename} in Sources */,"
end.join("\n")
content.sub!(/77A6FCFEFF900F3195082B50 \/\* IntegratedDashboardViewV3.swift in Sources \*\/,/,
"77A6FCFEFF900F3195082B50 /* IntegratedDashboardViewV3.swift in Sources */,\n#{sources_section}")
# Write back
File.write(project_path, content)
puts "✅ Successfully added #{new_files.count} files to Xcode project!"
new_files.each { |f| puts " - #{f}" }