zewo-dev 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/lib/zewo/version.rb +1 -1
- data/lib/zewo.rb +55 -42
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b3d02c82f775cdbabc993627c1d1bf48f1873eaf
         | 
| 4 | 
            +
              data.tar.gz: 42abaab6c40f194d92c6e79b7ba79dbe71933654
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 02aafd101f9a033d4fccb8908b0d2f54c8e8dfe299fa4b4ddbc7c580e6a640ec9a5407a5a20d663ad01dac95d2d74102d4bbeefd847dc0e431e47eaf02c1883e
         | 
| 7 | 
            +
              data.tar.gz: d0e53a47dc369b03ccecf831a6ae38cbb7c20cf703ab6c39e15de1cc39196c4f5517744d7ec06588ffb235ea0d52e1dfbe2ff0109fa06677bc7c37a13d2a2148
         | 
    
        data/README.md
    CHANGED
    
    | @@ -35,4 +35,7 @@ Run `zewodev make_projects` to generate Xcode projects for all Swift modules. Ev | |
| 35 35 | 
             
            Lastly, you'll be prompted to push your changes.
         | 
| 36 36 |  | 
| 37 37 | 
             
            ## Push & pull
         | 
| 38 | 
            -
            `zewodev push` and `zewodev pull` will push and pull changes for all Swift modules.
         | 
| 38 | 
            +
            `zewodev push` and `zewodev pull` will push and pull changes for all Swift modules.
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            ## Unit testing
         | 
| 41 | 
            +
            If you create a folder called `Tests` in the same directory as your `Sources` directory, the tool will create a `<ModuleName>-tests` target and add the test files to that target.
         | 
    
        data/lib/zewo/version.rb
    CHANGED
    
    
    
        data/lib/zewo.rb
    CHANGED
    
    | @@ -41,16 +41,31 @@ module Zewo | |
| 41 41 | 
             
                    xcode_project.native_targets.find { |t| t.name == target_name } || xcode_project.new_target(:bundle, target_name, :osx)
         | 
| 42 42 | 
             
                  end
         | 
| 43 43 |  | 
| 44 | 
            -
                  def  | 
| 44 | 
            +
                  def dir(ext = nil)
         | 
| 45 | 
            +
                    r = name
         | 
| 46 | 
            +
                    r = "#{r}/#{ext}" if ext
         | 
| 47 | 
            +
                    r
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  def tests_dirname
         | 
| 45 51 | 
             
                    "Tests"
         | 
| 46 52 | 
             
                  end
         | 
| 47 53 |  | 
| 48 | 
            -
                  def  | 
| 49 | 
            -
                    " | 
| 54 | 
            +
                  def xcode_dirname
         | 
| 55 | 
            +
                    "XcodeDevelopment"
         | 
| 50 56 | 
             
                  end
         | 
| 51 57 |  | 
| 52 58 | 
             
                  def xcode_project_path
         | 
| 53 | 
            -
                    "#{ | 
| 59 | 
            +
                    dir("#{xcode_dirname}/#{name}.xcodeproj")
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  def sources_dirname
         | 
| 63 | 
            +
                    if File.directory?(dir('Sources'))
         | 
| 64 | 
            +
                      return 'Sources'
         | 
| 65 | 
            +
                    elsif File.directory?(dir('Source'))
         | 
| 66 | 
            +
                      return 'Source'
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
                    nil
         | 
| 54 69 | 
             
                  end
         | 
| 55 70 |  | 
| 56 71 | 
             
                  def xcode_project
         | 
| @@ -63,15 +78,6 @@ module Zewo | |
| 63 78 | 
             
                    @xcodeproj
         | 
| 64 79 | 
             
                  end
         | 
| 65 80 |  | 
| 66 | 
            -
                  def sources_dir
         | 
| 67 | 
            -
                    if File.directory?("#{name}/Sources")
         | 
| 68 | 
            -
                      return 'Sources'
         | 
| 69 | 
            -
                    elsif File.directory?("#{name}/Source")
         | 
| 70 | 
            -
                      return 'Source'
         | 
| 71 | 
            -
                    end
         | 
| 72 | 
            -
                    nil
         | 
| 73 | 
            -
                  end
         | 
| 74 | 
            -
             | 
| 75 81 | 
             
                  def add_files(direc, current_group, main_target)
         | 
| 76 82 | 
             
                    Dir.glob(direc) do |item|
         | 
| 77 83 | 
             
                      next if item == '.' || item == '.DS_Store'
         | 
| @@ -90,7 +96,7 @@ module Zewo | |
| 90 96 |  | 
| 91 97 | 
             
                  def build_dependencies
         | 
| 92 98 | 
             
                    puts "Configuring dependencies for #{name}".green
         | 
| 93 | 
            -
                    dependency_repos = File.read( | 
| 99 | 
            +
                    dependency_repos = File.read(dir('Package.swift')).scan(/(?<=Zewo\/)(.*?)(?=\.git)/).map(&:first)
         | 
| 94 100 |  | 
| 95 101 | 
             
                    group = xcode_project.new_group('Subprojects')
         | 
| 96 102 | 
             
                    dependency_repos.each do |repo_name|
         | 
| @@ -108,32 +114,45 @@ module Zewo | |
| 108 114 |  | 
| 109 115 | 
             
                  def configure_xcode_project
         | 
| 110 116 | 
             
                    @xcodeproj = nil
         | 
| 111 | 
            -
                    silent_cmd("rm -rf #{ | 
| 117 | 
            +
                    silent_cmd("rm -rf #{dir(xcode_dirname)}")
         | 
| 112 118 |  | 
| 113 119 | 
             
                    puts "Creating Xcode project #{name}".green
         | 
| 114 120 |  | 
| 115 121 | 
             
                    framework_target.build_configurations.each do |configuration|
         | 
| 116 122 | 
             
                      framework_target.build_settings(configuration.name)['HEADER_SEARCH_PATHS'] = '/usr/local/include'
         | 
| 117 123 | 
             
                      framework_target.build_settings(configuration.name)['LIBRARY_SEARCH_PATHS'] = '/usr/local/lib'
         | 
| 124 | 
            +
                      framework_target.build_settings(configuration.name)['ENABLE_TESTABILITY'] = 'YES'
         | 
| 118 125 |  | 
| 119 | 
            -
                      if File.exist?( | 
| 126 | 
            +
                      if File.exist?(dir('module.modulemap'))
         | 
| 120 127 | 
             
                        framework_target.build_settings(configuration.name)['MODULEMAP_FILE'] = '../module.modulemap'
         | 
| 121 128 | 
             
                      end
         | 
| 122 129 | 
             
                    end
         | 
| 123 130 |  | 
| 124 | 
            -
                     | 
| 131 | 
            +
                    framework_target.frameworks_build_phase.clear
         | 
| 125 132 |  | 
| 126 | 
            -
                    if  | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 133 | 
            +
                    xcode_project.new_file('../module.modulemap') if File.exist?(dir('module.modulemap'))
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                    if sources_dirname
         | 
| 136 | 
            +
                      group = xcode_project.new_group(sources_dirname)
         | 
| 137 | 
            +
                      add_files(dir("#{sources_dirname}/*"), group, framework_target)
         | 
| 129 138 | 
             
                    end
         | 
| 130 139 |  | 
| 131 | 
            -
                     | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 140 | 
            +
                    test_target.resources_build_phase
         | 
| 141 | 
            +
                    test_target.add_dependency(framework_target)
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                    test_target.build_configurations.each do |configuration|
         | 
| 144 | 
            +
                      test_target.build_settings(configuration.name)['WRAPPER_EXTENSION'] = 'xctest'
         | 
| 145 | 
            +
                      test_target.build_settings(configuration.name)['LD_RUNPATH_SEARCH_PATHS'] = '$(inherited) @executable_path/../../Frameworks @loader_path/../Frameworks'
         | 
| 134 146 | 
             
                    end
         | 
| 135 147 |  | 
| 148 | 
            +
                    group = xcode_project.new_group(tests_dirname)
         | 
| 149 | 
            +
                    add_files(dir("#{tests_dirname}/*"), group, test_target)
         | 
| 150 | 
            +
             | 
| 136 151 | 
             
                    xcode_project.save
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                    scheme = Xcodeproj::XCScheme.new()
         | 
| 154 | 
            +
                    scheme.configure_with_targets(framework_target, test_target)
         | 
| 155 | 
            +
                    scheme.save_as(xcode_project.path, framework_target.name, true)
         | 
| 137 156 | 
             
                  end
         | 
| 138 157 | 
             
                end
         | 
| 139 158 |  | 
| @@ -149,15 +168,12 @@ module Zewo | |
| 149 168 | 
             
                      'Core',
         | 
| 150 169 | 
             
                      'GrandCentralDispatch',
         | 
| 151 170 | 
             
                      'JSONParserMiddleware',
         | 
| 152 | 
            -
                      'Levee',
         | 
| 153 171 | 
             
                      'LoggerMiddleware',
         | 
| 154 172 | 
             
                      'Middleware',
         | 
| 155 | 
            -
                      'Mustache',
         | 
| 156 | 
            -
                      'POSIXRegex',
         | 
| 157 173 | 
             
                      'SSL',
         | 
| 158 | 
            -
                      'Sideburns',
         | 
| 159 174 | 
             
                      'SwiftZMQ',
         | 
| 160 | 
            -
                      'WebSocket'
         | 
| 175 | 
            +
                      'WebSocket',
         | 
| 176 | 
            +
                      'HTTPMiddleware'
         | 
| 161 177 | 
             
                    ]
         | 
| 162 178 |  | 
| 163 179 | 
             
                    response = http.request(request)
         | 
| @@ -165,14 +181,13 @@ module Zewo | |
| 165 181 | 
             
                    if response.code == '200'
         | 
| 166 182 | 
             
                      result = JSON.parse(response.body).sort_by { |hsh| hsh['name'] }
         | 
| 167 183 |  | 
| 168 | 
            -
             | 
| 169 184 | 
             
                      result.each do |doc|
         | 
| 170 185 | 
             
                        next if blacklist.include?(doc['name'])
         | 
| 171 186 | 
             
                        repo = Repo.new(doc['name'], doc)
         | 
| 172 187 | 
             
                        yield repo
         | 
| 173 188 | 
             
                      end
         | 
| 174 189 | 
             
                    else
         | 
| 175 | 
            -
                      puts 'Error loading repositories'
         | 
| 190 | 
            +
                      puts 'Error loading repositories'.red
         | 
| 176 191 | 
             
                    end
         | 
| 177 192 | 
             
                  end
         | 
| 178 193 |  | 
| @@ -188,8 +203,7 @@ module Zewo | |
| 188 203 |  | 
| 189 204 | 
             
                  def each_code_repo
         | 
| 190 205 | 
             
                    each_repo do |repo|
         | 
| 191 | 
            -
                      unless File.exist?( | 
| 192 | 
            -
                        print "No Package.swift for #{repo.name}. Skipping." + "\n"
         | 
| 206 | 
            +
                      unless File.exist?(repo.dir('Package.swift'))
         | 
| 193 207 | 
             
                        next
         | 
| 194 208 | 
             
                      end
         | 
| 195 209 | 
             
                      yield repo
         | 
| @@ -209,7 +223,7 @@ module Zewo | |
| 209 223 | 
             
                  def verify_branches
         | 
| 210 224 | 
             
                    last_branch_name = nil
         | 
| 211 225 | 
             
                    each_repo do |repo|
         | 
| 212 | 
            -
                      branch_name = `cd #{repo. | 
| 226 | 
            +
                      branch_name = `cd #{repo.dir}; git rev-parse --abbrev-ref HEAD`.gsub("\n", '')
         | 
| 213 227 | 
             
                      if !last_branch_name.nil? && branch_name != last_branch_name
         | 
| 214 228 | 
             
                        puts "Branch mismatch. Branch of #{repo.name} does not match previous branch #{branch_name}".red
         | 
| 215 229 | 
             
                        return false
         | 
| @@ -257,15 +271,15 @@ module Zewo | |
| 257 271 |  | 
| 258 272 | 
             
                desc :pull, 'git pull on all repos'
         | 
| 259 273 | 
             
                def pull
         | 
| 274 | 
            +
                  print "Updating all repositories..." + "\n"
         | 
| 260 275 | 
             
                  each_code_repo_async do |repo|
         | 
| 261 | 
            -
                    print "Updating #{repo.name}..." + "\n"
         | 
| 262 276 | 
             
                    if uncommited_changes?(repo.name)
         | 
| 263 277 | 
             
                      print "Uncommitted changes in #{repo.name}. Not updating.".red + "\n"
         | 
| 264 278 | 
             
                      next
         | 
| 265 279 | 
             
                    end
         | 
| 266 280 | 
             
                    system("cd #{repo.name}; git pull")
         | 
| 267 | 
            -
                    print "Updated #{repo.name}".green + "\n"
         | 
| 268 281 | 
             
                  end
         | 
| 282 | 
            +
                  puts 'Done!'
         | 
| 269 283 | 
             
                end
         | 
| 270 284 |  | 
| 271 285 | 
             
                desc :push, 'git push on all repos'
         | 
| @@ -289,7 +303,7 @@ module Zewo | |
| 289 303 | 
             
                    print "Checking #{repo.name}..." + "\n"
         | 
| 290 304 | 
             
                    unless File.directory?(repo.name)
         | 
| 291 305 | 
             
                      print "Cloning #{repo.name}...".green + "\n"
         | 
| 292 | 
            -
                      silent_cmd("git clone #{repo.data[' | 
| 306 | 
            +
                      silent_cmd("git clone #{repo.data['clone_url']}")
         | 
| 293 307 | 
             
                    end
         | 
| 294 308 | 
             
                  end
         | 
| 295 309 | 
             
                  puts 'Done!'
         | 
| @@ -298,14 +312,14 @@ module Zewo | |
| 298 312 | 
             
                desc :build, 'Clones all Zewo repositories'
         | 
| 299 313 | 
             
                def build
         | 
| 300 314 | 
             
                  each_code_repo do |repo|
         | 
| 301 | 
            -
                    unless File.directory?( | 
| 315 | 
            +
                    unless File.directory?(repo.dir(repo.xcode_dirname))
         | 
| 302 316 | 
             
                      puts "Skipping #{repo.name}. No Xcode project".yellow
         | 
| 303 317 | 
             
                    end
         | 
| 304 318 | 
             
                    puts "Building #{repo.name}...".green
         | 
| 305 319 |  | 
| 306 | 
            -
                    if system("cd #{repo. | 
| 320 | 
            +
                    if system("cd #{repo.dir(repo.xcode_dirname)}; set -o pipefail && xcodebuild -scheme \"#{repo.framework_target.name}\" -sdk \"macosx\" -toolchain \"/Library/Developer/Toolchains/swift-latest.xctoolchain\" | xcpretty") == false
         | 
| 307 321 | 
             
                      puts "Error building. Maybe you're using the wrong Xcode? Try `sudo xcode-select -s /Applications/Xcode-Beta.app/Contents/Developer` if you have a beta-version of Xcode installed.".red
         | 
| 308 | 
            -
             | 
| 322 | 
            +
                      return
         | 
| 309 323 | 
             
                    end
         | 
| 310 324 | 
             
                  end
         | 
| 311 325 | 
             
                end
         | 
| @@ -319,14 +333,13 @@ module Zewo | |
| 319 333 | 
             
                    puts repo.name
         | 
| 320 334 | 
             
                    puts '--------------------------------------------------------------'
         | 
| 321 335 | 
             
                    if uncommited_changes?(repo.name)
         | 
| 322 | 
            -
                       | 
| 323 | 
            -
                      system("cd #{repo.name}; git status")
         | 
| 336 | 
            +
                      system("cd #{repo.dir}; git status")
         | 
| 324 337 | 
             
                      return unless prompt("Proceed with #{repo.name}?")
         | 
| 325 338 | 
             
                    end
         | 
| 326 339 | 
             
                  end
         | 
| 327 340 |  | 
| 328 341 | 
             
                  each_code_repo do |repo|
         | 
| 329 | 
            -
                    system("cd #{repo. | 
| 342 | 
            +
                    system("cd #{repo.dir}; git add --all; git commit -am \"#{message}\"")
         | 
| 330 343 | 
             
                    puts "Commited #{repo.name}\n".green
         | 
| 331 344 | 
             
                  end
         | 
| 332 345 |  |