furion 1.0.9 → 1.0.10
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/bin/furion +22 -1
- data/lib/furion.rb +14 -0
- data/lib/furion/project_generate.rb +63 -0
- data/lib/furion/ver_conflict_detector.rb +50 -14
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 33e050630738005972a285c19d87fae626442832a08048feec1d27406d628f1f
         | 
| 4 | 
            +
              data.tar.gz: '068fa164b18a1d937ffb31269c217fec0031c24e9c96fc6a47c25556a7e40ad1'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 80f2baf81d9f32d026a3188b275ecbb2c771712c1b6470222aaeeb4a76f91559acb456f866204975d46a5f1d4f903b418665deddb18e2cbe729ca49962a4e159
         | 
| 7 | 
            +
              data.tar.gz: 8a0b25c6ed61ee1e34e14ad0f27688de12e5e7ef5d12cf2a3b98f32c287db672d65888d9680109f8d6538ae7ca39921476546a87d38603023ec3f218d880e8a0
         | 
    
        data/bin/furion
    CHANGED
    
    | @@ -13,10 +13,11 @@ OptionParser.new do |opts| | |
| 13 13 | 
             
            -h      : print the help message
         | 
| 14 14 | 
             
            init    : run wrapper-pick work flow in existed project
         | 
| 15 15 | 
             
            update  : update the config of sdk-wrapper
         | 
| 16 | 
            +
            create
         | 
| 16 17 | 
             
            "
         | 
| 17 18 | 
             
              end
         | 
| 18 19 | 
             
              opts.on("-v", "--version", "Prints version") do |dh|
         | 
| 19 | 
            -
                puts "1.0.9"
         | 
| 20 | 
            +
                puts "1.0.9.1"
         | 
| 20 21 | 
             
              end
         | 
| 21 22 |  | 
| 22 23 |  | 
| @@ -26,6 +27,26 @@ if ARGV[0] == "init" | |
| 26 27 | 
             
              Furion.makeConfig
         | 
| 27 28 | 
             
            end
         | 
| 28 29 |  | 
| 30 | 
            +
            if ARGV[0] == "create"
         | 
| 31 | 
            +
              name = ARGV[1]
         | 
| 32 | 
            +
              if name == nil
         | 
| 33 | 
            +
                puts "please input project name"
         | 
| 34 | 
            +
              else
         | 
| 35 | 
            +
                if name.length > 1
         | 
| 36 | 
            +
                  Furion.genProj(name)
         | 
| 37 | 
            +
                  puts Dir.pwd
         | 
| 38 | 
            +
                  Dir.chdir name
         | 
| 39 | 
            +
                  puts Dir.pwd
         | 
| 40 | 
            +
                  Furion.makeConfig
         | 
| 41 | 
            +
                  system("open .")
         | 
| 42 | 
            +
                else
         | 
| 43 | 
            +
                  puts "project name too short "
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            end
         | 
| 49 | 
            +
             | 
| 29 50 | 
             
            if ARGV[0] == "confdet"
         | 
| 30 51 | 
             
              Furion.detectConflict
         | 
| 31 52 | 
             
            end
         | 
    
        data/lib/furion.rb
    CHANGED
    
    | @@ -4,7 +4,9 @@ require 'json' | |
| 4 4 | 
             
            require 'plist'
         | 
| 5 5 | 
             
            require 'open-uri'
         | 
| 6 6 | 
             
            require 'furion/file_editor'
         | 
| 7 | 
            +
            require 'zip'
         | 
| 7 8 | 
             
            require 'furion/ver_conflict_detector'
         | 
| 9 | 
            +
            require 'furion/project_generate'
         | 
| 8 10 | 
             
            class Furion
         | 
| 9 11 |  | 
| 10 12 | 
             
                def self.fetchFile(fileName)
         | 
| @@ -73,6 +75,16 @@ class Furion | |
| 73 75 | 
             
                    ConflictDetector.detectConflict
         | 
| 74 76 | 
             
                end
         | 
| 75 77 |  | 
| 78 | 
            +
                def self.genProj(name)
         | 
| 79 | 
            +
                  fileName = "FurionExample.zip"
         | 
| 80 | 
            +
                  self.fetchFile(fileName)
         | 
| 81 | 
            +
                  system("unzip", fileName)
         | 
| 82 | 
            +
                  File.delete(fileName)
         | 
| 83 | 
            +
                  ProjectGenerater.setupProject("FurionExample",name)
         | 
| 84 | 
            +
                  FileUtils.rm_rf("FurionExample")
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
                
         | 
| 87 | 
            +
             | 
| 76 88 | 
             
                 def self.runCMD
         | 
| 77 89 | 
             
                       cmd = ARGV[0]
         | 
| 78 90 | 
             
                       if cmd == "init"
         | 
| @@ -84,3 +96,5 @@ class Furion | |
| 84 96 | 
             
                       end
         | 
| 85 97 | 
             
                 end
         | 
| 86 98 | 
             
            end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
             | 
| @@ -0,0 +1,63 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            $placeHolderStr = "FurionExample"
         | 
| 3 | 
            +
            $createInfo     = "//  Created by $AUTHOR on $DATE."
         | 
| 4 | 
            +
            $copyrightInfo  = "//  Copyright © $YEAR $PROJECT. All rights reserved."
         | 
| 5 | 
            +
            $zipCodeUri = "https://git.huya.com/chenguohao2/FurionTemplateResource/raw/master/iOS/FurionExample.zip"
         | 
| 6 | 
            +
            class ProjectGenerater
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def self.fetchExampleCode
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def self.setupProject(projPath,newName)
         | 
| 13 | 
            +
                Find.find(projPath) do |path|
         | 
| 14 | 
            +
                  puts "[o]"+path
         | 
| 15 | 
            +
                  newPath = path.gsub($placeHolderStr,newName)
         | 
| 16 | 
            +
                  puts "[*]"+newPath
         | 
| 17 | 
            +
                  if File.file?(path)
         | 
| 18 | 
            +
                    copyUpdateFile(path,newPath,$placeHolderStr,newName)
         | 
| 19 | 
            +
                  else
         | 
| 20 | 
            +
                    Dir.mkdir(newPath)
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
             | 
| 26 | 
            +
              def self.copyUpdateFile(oldPath,newPath,oldName,newName)
         | 
| 27 | 
            +
                File.open(newPath, "w") do |out|
         | 
| 28 | 
            +
                  File.foreach(oldPath) do |line|
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    content = self.updateCopyRight(line,newName)
         | 
| 31 | 
            +
                    content = self.updateCreatedInfo(content)
         | 
| 32 | 
            +
                    if content.include?oldName
         | 
| 33 | 
            +
                      newLine = content.gsub(oldName,newName)
         | 
| 34 | 
            +
                      out.puts newLine
         | 
| 35 | 
            +
                    else
         | 
| 36 | 
            +
                      out.puts content
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              def self.updateCopyRight(content,projName)
         | 
| 43 | 
            +
                 if content.include? $copyrightInfo
         | 
| 44 | 
            +
                   current_year = Time.new.year
         | 
| 45 | 
            +
                   year_content = content.sub("$YEAR",String(current_year))
         | 
| 46 | 
            +
                   result = year_content.sub("$PROJECT",projName)
         | 
| 47 | 
            +
                   return result
         | 
| 48 | 
            +
                 end
         | 
| 49 | 
            +
                return content
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              def self.updateCreatedInfo(content)
         | 
| 53 | 
            +
                if content.include?  $createInfo
         | 
| 54 | 
            +
                  curTime = Time.now.strftime("%Y/%m/%d")
         | 
| 55 | 
            +
                  time_content = content.sub("$DATE",curTime)
         | 
| 56 | 
            +
                  author = Etc.getpwuid(Process.uid).name
         | 
| 57 | 
            +
                  result = time_content.sub("$AUTHOR",author)
         | 
| 58 | 
            +
                  return result
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
                return content
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            end
         | 
| @@ -1,5 +1,8 @@ | |
| 1 1 | 
             
            require 'cocoapods'
         | 
| 2 2 | 
             
            require 'etc'
         | 
| 3 | 
            +
            require 'net/http'
         | 
| 4 | 
            +
            require 'digest/sha1'
         | 
| 5 | 
            +
            require 'date'
         | 
| 3 6 | 
             
            class ConflictDetector
         | 
| 4 7 | 
             
              def self.detectConflict
         | 
| 5 8 | 
             
                @openingSpec = []
         | 
| @@ -7,6 +10,7 @@ class ConflictDetector | |
| 7 10 | 
             
                # dict = Plist::parse_xml("MTPSDK.plist")
         | 
| 8 11 | 
             
                file = File.read('sdkConfig.json')
         | 
| 9 12 | 
             
                dict = JSON.parse(file)
         | 
| 13 | 
            +
             | 
| 10 14 | 
             
                # "sdk":{"hypushsdk": {"wrapperVersion": "0.1.13-dev", "sdkVersion": "*", "wrapper": "pushsdk-wrapper"}
         | 
| 11 15 | 
             
                sdkDict = {}
         | 
| 12 16 | 
             
                sdkWrapperDict = dict["sdk"]
         | 
| @@ -58,7 +62,6 @@ class ConflictDetector | |
| 58 62 |  | 
| 59 63 | 
             
                if path.length == 0
         | 
| 60 64 | 
             
                  # 如果在wrapper也没找到就说明找不到
         | 
| 61 | 
            -
                  puts "[FurionError]:spec load Error in "+path
         | 
| 62 65 | 
             
                  return
         | 
| 63 66 | 
             
                end
         | 
| 64 67 |  | 
| @@ -69,13 +72,21 @@ class ConflictDetector | |
| 69 72 | 
             
                  return
         | 
| 70 73 | 
             
                end
         | 
| 71 74 |  | 
| 75 | 
            +
                dependencies = ret.dependencies
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                for spec in ret.subspecs
         | 
| 78 | 
            +
                  subDependencies = spec.dependencies
         | 
| 79 | 
            +
                  for item in subDependencies
         | 
| 80 | 
            +
                    dependencies.append(item)
         | 
| 81 | 
            +
                  end
         | 
| 82 | 
            +
                end
         | 
| 72 83 |  | 
| 73 | 
            -
                for item in   | 
| 84 | 
            +
                for item in  dependencies
         | 
| 74 85 | 
             
                  requireStr = String(item.requirement)
         | 
| 75 86 | 
             
                  self.recordDependancy(item.name,requireStr,specName)
         | 
| 76 87 | 
             
                  if self.isVersionSpecific(requireStr) == 0
         | 
| 77 | 
            -
                    content = self.wrapSpecificVersion(requireStr)
         | 
| 78 | 
            -
                    self. | 
| 88 | 
            +
                    content = self.wrapSpecificVersion(requireStr) # 去掉空格和等号,只剩下大于/小于
         | 
| 89 | 
            +
                    self.loadSpec(item.name,content)
         | 
| 79 90 | 
             
                  end
         | 
| 80 91 | 
             
                end
         | 
| 81 92 | 
             
              end
         | 
| @@ -107,12 +118,6 @@ class ConflictDetector | |
| 107 118 | 
             
                return content
         | 
| 108 119 | 
             
              end
         | 
| 109 120 |  | 
| 110 | 
            -
              def self.readSpecFromRepo(specName,version)
         | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
                self.loadSpec(specName,version)
         | 
| 115 | 
            -
              end
         | 
| 116 121 |  | 
| 117 122 |  | 
| 118 123 | 
             
              def self.getSpecFromSDK(groupPath,sdkName,version)
         | 
| @@ -189,6 +194,7 @@ class ConflictDetector | |
| 189 194 | 
             
                  else
         | 
| 190 195 | 
             
                    if min == max
         | 
| 191 196 | 
             
                      if containMax == 0 || containMin == 0
         | 
| 197 | 
            +
             | 
| 192 198 | 
             
                        isConflict = 1
         | 
| 193 199 | 
             
                      end
         | 
| 194 200 | 
             
                    end
         | 
| @@ -233,7 +239,7 @@ class ConflictDetector | |
| 233 239 | 
             
                end
         | 
| 234 240 |  | 
| 235 241 | 
             
                varNumArray2 = String(otherVersion).split("-")
         | 
| 236 | 
            -
                verNum2 =  | 
| 242 | 
            +
                verNum2 = varNumArray2[0]
         | 
| 237 243 | 
             
                if varNumArray2.length() > 1
         | 
| 238 244 | 
             
                  verExt2 = varNumArray2[1]
         | 
| 239 245 | 
             
                else
         | 
| @@ -241,10 +247,11 @@ class ConflictDetector | |
| 241 247 | 
             
                end
         | 
| 242 248 |  | 
| 243 249 |  | 
| 244 | 
            -
                if Gem::Version.new(verNum1) > Gem::Version.new( | 
| 250 | 
            +
                if Gem::Version.new(verNum1) > Gem::Version.new(verNum2)
         | 
| 251 | 
            +
             | 
| 245 252 | 
             
                  return 1
         | 
| 246 253 | 
             
                else
         | 
| 247 | 
            -
                  if  Gem::Version.new(verNum1) == Gem::Version.new( | 
| 254 | 
            +
                  if  Gem::Version.new(verNum1) == Gem::Version.new(verNum2)
         | 
| 248 255 | 
             
                    if verExt1 == '*' && verExt2 != '*'
         | 
| 249 256 | 
             
                      return 1
         | 
| 250 257 | 
             
                    end
         | 
| @@ -253,7 +260,36 @@ class ConflictDetector | |
| 253 260 | 
             
                return 0
         | 
| 254 261 | 
             
              end
         | 
| 255 262 |  | 
| 256 | 
            -
              def self.getLastVersionFromDir(dirPath)
         | 
| 257 263 |  | 
| 264 | 
            +
             | 
| 265 | 
            +
              # clientType=1&name=yome&projectCode=yome&type=1
         | 
| 266 | 
            +
              def self.requestVersionDependancy
         | 
| 267 | 
            +
             | 
| 268 | 
            +
                Find.find(Dir::pwd) do |path|
         | 
| 269 | 
            +
                  puts path
         | 
| 270 | 
            +
                end
         | 
| 271 | 
            +
             | 
| 272 | 
            +
                appId = "mtpwebservices"
         | 
| 273 | 
            +
                token = "43010711d680a54c"
         | 
| 274 | 
            +
                time = DateTime.now.strftime('%Q')
         | 
| 275 | 
            +
                content = token + appId + String(time)
         | 
| 276 | 
            +
                puts content
         | 
| 277 | 
            +
                sign = Digest::SHA1.hexdigest(content)
         | 
| 278 | 
            +
                url = URI('http://aplus.local.web.hy/open-api/1.0/dependency/get?')
         | 
| 279 | 
            +
            # 设置请求参数
         | 
| 280 | 
            +
                params = {'clientType':0,'type':1}
         | 
| 281 | 
            +
                url.query = URI.encode_www_form(params)
         | 
| 282 | 
            +
                puts url
         | 
| 283 | 
            +
                http = Net::HTTP.new(url.host, url.port)
         | 
| 284 | 
            +
             | 
| 285 | 
            +
             | 
| 286 | 
            +
            # 设置请求头
         | 
| 287 | 
            +
                header = {'X-APLUS-APP':appId,
         | 
| 288 | 
            +
                          'X-APLUS-SIGN':sign,
         | 
| 289 | 
            +
                          'X-APLUS-TS':String(time)}
         | 
| 290 | 
            +
                puts header
         | 
| 291 | 
            +
             | 
| 292 | 
            +
                response = http.get(url, header)
         | 
| 293 | 
            +
                puts response.body
         | 
| 258 294 | 
             
              end
         | 
| 259 295 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: furion
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.10
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - MTP Huya
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-12-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: MTP Huya is the best!!!
         | 
| 14 14 | 
             
            email: mtphuya@yandex.com
         | 
| @@ -20,6 +20,7 @@ files: | |
| 20 20 | 
             
            - bin/furion
         | 
| 21 21 | 
             
            - lib/furion.rb
         | 
| 22 22 | 
             
            - lib/furion/file_editor.rb
         | 
| 23 | 
            +
            - lib/furion/project_generate.rb
         | 
| 23 24 | 
             
            - lib/furion/ver_conflict_detector.rb
         | 
| 24 25 | 
             
            homepage: https://rubygems.org/gems/furion
         | 
| 25 26 | 
             
            licenses:
         |