Module: PodBuilder

Defined in:
lib/pod_builder/core.rb,
lib/pod_builder/info.rb,
lib/pod_builder/analyze.rb,
lib/pod_builder/podfile.rb,
lib/pod_builder/podspec.rb,
lib/pod_builder/version.rb,
lib/pod_builder/licenses.rb,
lib/pod_builder/command/info.rb,
lib/pod_builder/command/init.rb,
lib/pod_builder/command/none.rb,
lib/pod_builder/podfile_item.rb,
lib/pod_builder/command/build.rb,
lib/pod_builder/command/clean.rb,
lib/pod_builder/configuration.rb,
lib/pod_builder/command/switch.rb,
lib/pod_builder/command/update.rb,
lib/pod_builder/command/build_all.rb,
lib/pod_builder/command/deintegrate.rb,
lib/pod_builder/command/restore_all.rb,
lib/pod_builder/command/generate_lfs.rb,
lib/pod_builder/command/sync_podfile.rb,
lib/pod_builder/podfile/post_actions.rb,
lib/pod_builder/command/install_sources.rb,
lib/pod_builder/command/update_lldbinit.rb,
lib/pod_builder/command/generate_podspec.rb,
lib/pod_builder/install.rb

Defined Under Namespace

Modules: Command Classes: Analyze, Configuration, Info, Install, Licenses, Podfile, PodfileItem, Podspec

Constant Summary collapse

VERSION =
"1.2.0"

Class Method Summary collapse

Class Method Details

.add_lock_fileObject



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/pod_builder/core.rb', line 100

def self.add_lock_file
  lockfile_path = File.join(home, Configuration.lock_filename)

  if File.exist?(lockfile_path)
    if pid = File.read(lockfile_path)
      begin
        if Process.getpgid(pid)
            raise "\n\nAnother PodBuilder pending task is running on this project\n".red    
        end
      rescue
      end
    end  
  end

  File.write(lockfile_path, Process.pid, mode: "w")
end

.basepath(child = "") ⇒ Object



38
39
40
# File 'lib/pod_builder/core.rb', line 38

def self.basepath(child = "")
  return "#{Configuration.base_path}/#{child}".gsub("//", "/").gsub(/\/$/, '')
end

.clean_basepathObject



83
84
85
86
87
88
89
90
91
92
# File 'lib/pod_builder/core.rb', line 83

def self.clean_basepath
  if path = PodBuilder::find_xcodeproj
    PodBuilder::safe_rm_rf(basepath(File.basename(path)))      
  end
  if path = PodBuilder::find_xcodeworkspace
    PodBuilder::safe_rm_rf(basepath(File.basename(path)))      
  end

  PodBuilder::safe_rm_rf(basepath("Pods"))
end

.find_xcodeprojObject



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/pod_builder/core.rb', line 48

def self.find_xcodeproj
  project_name = File.basename(find_xcodeworkspace, ".*")

  xcodeprojects = Dir.glob("#{home}/**/#{project_name}.xcodeproj").select { |x| 
    folder_in_home = x.gsub(home, "")
    !folder_in_home.include?("/Pods/") && !x.include?(PodBuilder::basepath("Sources")) && !x.include?(basepath) 
  }
  raise "xcodeproj not found!".red if xcodeprojects.count == 0
  raise "Found multiple xcodeproj:\n#{xcodeprojects.join("\n")}".red if xcodeprojects.count > 1

  return xcodeprojects.first
end

.find_xcodeworkspaceObject



61
62
63
64
65
66
67
68
69
70
# File 'lib/pod_builder/core.rb', line 61

def self.find_xcodeworkspace
  xcworkspaces = Dir.glob("#{home}/**/#{Configuration.project_name}*.xcworkspace").select { |x| 
    folder_in_home = x.gsub(home, "")
    !folder_in_home.include?("/Pods/") && !x.include?(PodBuilder::basepath("Sources")) && !x.include?(basepath) && !x.include?(".xcodeproj/")
  }
  raise "xcworkspace not found!".red if xcworkspaces.count == 0
  raise "Found multiple xcworkspaces:\n#{xcworkspaces.join("\n")}".red if xcworkspaces.count > 1

  return xcworkspaces.first
end

.prepare_basepathObject



72
73
74
75
76
77
78
79
80
81
# File 'lib/pod_builder/core.rb', line 72

def self.prepare_basepath
  workspace_path = PodBuilder::find_xcodeworkspace
  project_path = PodBuilder::find_xcodeproj
  if workspace_path && project_path
    FileUtils.mkdir_p(basepath("Pods/Target Support Files"))
    FileUtils.cp_r(workspace_path, basepath)   
    FileUtils.cp_r(project_path, basepath)   
    FileUtils.rm_f(basepath("Podfile.lock"))
  end
end

.project_path(child = "") ⇒ Object



42
43
44
45
46
# File 'lib/pod_builder/core.rb', line 42

def self.project_path(child = "")
  project = PodBuilder::find_xcodeworkspace
  
  return project ? "#{File.dirname(project)}/#{child}".gsub("//", "/").gsub(/\/$/, '') : nil
end

.remove_lock_fileObject



117
118
119
120
121
122
# File 'lib/pod_builder/core.rb', line 117

def self.remove_lock_file
  lockfile_path = File.join(home, Configuration.lock_filename)
  if File.exist?(lockfile_path)
    FileUtils.rm(lockfile_path)
  end
end

.safe_rm_rf(path) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pod_builder/core.rb', line 17

def self.safe_rm_rf(path)
  unless File.exist?(path)
    return
  end

  current_dir = Dir.pwd

  Dir.chdir(path)

  h = `git rev-parse --show-toplevel`.strip()
  raise "\n\nNo git repository found, can't delete files!\n".red if h.empty?

  FileUtils.rm_rf(path)

  if File.exist?(current_dir)
    Dir.chdir(current_dir)
  else
    Dir.chdir(basepath)
  end
end

.system_swift_versionObject



94
95
96
97
98
# File 'lib/pod_builder/core.rb', line 94

def self.system_swift_version
  swift_version = `swiftc --version | grep -o 'swiftlang-.*\s'`.strip()
  raise "Unsupported swift compiler version, expecting `swiftlang` keyword in `swiftc --version`" if swift_version.length == 0
  return swift_version
end