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/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 =
"0.7.1"

Class Method Summary collapse

Class Method Details

.add_lock_fileObject



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/pod_builder/core.rb', line 94

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



77
78
79
80
81
82
83
84
85
86
# File 'lib/pod_builder/core.rb', line 77

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
# 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| !x.include?("/Pods/") && !x.include?("/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



58
59
60
61
62
63
64
# File 'lib/pod_builder/core.rb', line 58

def self.find_xcodeworkspace
  xcworkspaces = Dir.glob("#{home}/**/#{Configuration.project_name}*.xcworkspace").select { |x| !x.include?("/Pods/") && !x.include?("/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



66
67
68
69
70
71
72
73
74
75
# File 'lib/pod_builder/core.rb', line 66

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



111
112
113
114
115
116
# File 'lib/pod_builder/core.rb', line 111

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



88
89
90
91
92
# File 'lib/pod_builder/core.rb', line 88

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