class Object

Public Instance Methods

addXcodeproj() click to toggle source
# File lib/elm_plugin.rb, line 207
def  addXcodeproj

        project = Xcodeproj::Project.open($project_dic.to_s+$projectName.to_s)  
        target = project.targets.first  
        group = project.main_group.find_subpath(File.join('Plugins'), true)  
        group.set_source_tree('SOURCE_ROOT') 
        Dir::entries($project_dic.to_s+$main_dir.to_s+'/Plugins/'+$plugin_name.to_s).each do |f|
                if f =~ /\.m$/i
             file_ref = group.new_reference($project_dic.to_s+$main_dir.to_s+'/Plugins/'+$plugin_name.to_s+'/'+f)  
                target.add_file_references([file_ref]) 
                end
                if f =~ /\.h$/i
                        file_ref = group.new_reference($project_dic.to_s+$main_dir.to_s+'/Plugins/'+$plugin_name.to_s+'/'+f)   
                end
        end 
        project.save  

end
copySource() click to toggle source
# File lib/elm_plugin.rb, line 54
def copySource

        if !File::exist?($project_dic+$main_dir+'/Plugins')
                error = 'error: you project don\'t have '+$main_dir+'/Plugins'+'in workspace'
                puts error.red
                exit(0)   
        end    

  if !File::exist?($project_dic+$main_dir+'/Plugins/'+$plugin_name)
      Dir.mkdir($project_dic+$main_dir+'/Plugins/'+$plugin_name) 
  end
        Dir::entries($tmpPath+'/src'+'/ios').each do |f|
                puts 'copy source to plugins dic'
                if f =~ /\.[hm]$/i
                     FileUtils.cp($tmpPath+'/src'+'/ios/'+f, $project_dic+$main_dir+'/Plugins/'+$plugin_name)
                end
        end 
end
copyjs() click to toggle source
# File lib/elm_plugin.rb, line 19
def copyjs

        if !File::exist?($project_dic+'www')
               Dir.mkdir($project_dic+'www')
        end


        if !File::exist?($project_dic+'www/'+$plugin_name)
                Dir.mkdir($project_dic+'www/'+$plugin_name)
        end

    if !File::exist?($project_dic+'www/'+'plugins/'+$plugin_name)
       Dir.mkdir($project_dic+'www/'+'plugins/'+$plugin_name)
    end 
    FileUtils.cp_r(Dir[$tmpPath+'/www'], $project_dic+'www/'+'plugins/'+$plugin_name)
    Dir::entries($project_dic+'www/'+'plugins/'+$plugin_name+'/www').each do |f|
       if f =~ /\.js$/
          file = File.open($project_dic+'www/'+'plugins/'+$plugin_name+'/www'+'/'+f, "rb")
          contents = file.read
          file.close
          if contents =~ /^\s*cordova.define\s*\(\s*\"\s*cordova-plugin-console.logger\s*\"\s*,\s*function\s*\(\s*require\s*,\s*exports\s*,\s*module\s*\)\s*\{/
            puts 'has cordova.define'
            else
             contents = "cordova.define(\"cordova-plugin-console.logger\", function(require, exports, module) {\n" +contents +"\n});" 
             file=File.new($project_dic+'www/'+'plugins/'+$plugin_name+'/www'+'/'+f, 'w+')
              file.write(contents)
              puts 'dont match'
          end      
          file.close
       end
         
    end
end
findXmlConfig() click to toggle source
# File lib/elm_plugin.rb, line 98
def findXmlConfig
        
        Dir::entries($project_dic).each do |f|
                if f == 'config.xml'
                        writeConfigXml($project_dic + 'config.xml')
                        return 
                end
        end 

        Find.find($project_dic+$main_dir) do |f|
 
                if f =~ /config.xml$/i
                        writeConfigXml(f)
                break  
                end
        end
end
main_dir() click to toggle source
# File lib/elm_plugin.rb, line 10
def  main_dir
        Dir::entries($project_dic).each do |f|
                if f =~ /\.xcodeproj$/i
                        main_dir = File.basename($project_dic+"/"+f, '.xcodeproj')
                        return main_dir
                end
        end 
end
writeConfigXml(fileName) click to toggle source
# File lib/elm_plugin.rb, line 117
def writeConfigXml(fileName) 
        puts 'config'+fileName
        fw = File.open(fileName)
    docw = Document.new(fw)
    root = docw.root
    puts root
    f = File.open($project_dic+'ELMPlugins/'+$plugin_name+'/plugin.xml')
    doc = Document.new(f)  
    doc.elements.each("*/platform") { |e|

        if e.attributes["name"] == 'ios'
                e.elements.each('config-file/feature') { |se|
                        puts se
                        root.add_element se
                        puts root

                }
        end
     
    }
    docw.write(File.open(fileName,"w"), 2)
    fw.close
    f.close
end
writeJs() click to toggle source

cordova.define(‘cordova/plugin_list’, function(require, exports, module) { module.exports = [

{
    "file": "plugins/cordova-plugin-device/www/device.js",
    "id": "cordova-plugin-device.device",
    "clobbers": [
        "device"
    ]
},

<js-module src=“www/logger.js” name=“logger”>

    <clobbers target="cordova.logger" />
</js-module>
# File lib/elm_plugin.rb, line 155
def writeJs
        write = false
    tempfile=File.new($project_dic+'www/'+'temp.js', 'w+')
    f=File.new($project_dic+'www/'+'cordova_plugins.js')
    xmlf = File.open($project_dic+'ELMPlugins/'+$plugin_name+'/plugin.xml')
    doc = Document.new(xmlf)
    id = doc.root.attributes['id'] 
    version = doc.root.attributes['version']
    f.each do |line|
        if line =~ /^(\s)*module.exports(\s)*=(\s)*\[(\s)*\]/
                   doc.elements.each("*/js-module") { |e|
                        puts e
                        jsId = id + '.' + e.attributes['name']
                        jssSrc = 'plugins/'+$plugin_name +'/'+e.attributes['src']
                                e.elements.each('clobbers') { |se|

                       clobbers = se.attributes['target']
                           tempfile<<"module.exports = \[ \n  {\n       \"File\": "+"\""+jssSrc+"\",\n"+"       \"id\": "+"\""+jsId+"\",\n"+"       \"clobbers\": "+"[\n"+"           \""+clobbers+"\"\n"+"       ]\n"+"    }\n\];\n"
                        }
                        }
        else
                tempfile<<line
                if line.downcase=~ /^(\s)*module.exports(\s)*=(\s)*/
                        doc.elements.each("*/js-module") { |e|
                        puts e
                        jsId = id + '.' + e.attributes['name']
                        jssSrc = 'plugins/'+$plugin_name +'/'+e.attributes['src']
                                e.elements.each('clobbers') { |se|

                       clobbers = se.attributes['target']
                           tempfile<<"    {\n       \"File\": "+"\""+jssSrc+"\",\n"+"       \"id\": "+"\""+jsId+"\",\n"+"       \"clobbers\": "+"[\n"+"           \""+clobbers+"\"\n"+"       ]\n"+"    },\n"
              
                        }
                        }
                        end
        end
        if  write
                write = false
                # "org.apache.cordova.device": "0.2.14-dev"
                tempfile<< "    \""+id+"\": "+"\""+version+"\",\n" 
        end

        if line =~/^(\s)*\/\/ (\s)*TOP (\s)*OF(\s)* METADATA(\s)*/
                write = true
        end  
    end 
    f.close
    tempfile.close
    FileUtils.mv($project_dic+'www/'+'temp.js', $project_dic+'www/'+'cordova_plugins.js')
end
writePodfileAndUpdate() click to toggle source
# File lib/elm_plugin.rb, line 74
def writePodfileAndUpdate

        puts $project_dic+'Podfile'

        if File::exist?($project_dic+'Podfile')
           f=File.new($project_dic+'Podfile', 'a+')
           f.puts "\npod \'" +$plugin_name+'\''
           f.close
           puts 'update pod........................'.green
                 result =`pod update`
           puts result
  else
     puts 'create Podfile.....'
     `touch Podfile`
     f=File.new($project_dic+'Podfile', 'a+')
     f.puts "source \'git@git.elenet.me:arch.mobile/iOS_specs.git\'\nsource \'https://github.com/CocoaPods/Specs.git\'\nplatform :ios, \'7.0\'"
           f.puts "\npod \'" +$plugin_name+'\''
           f.close
           puts 'update pod........................'.green
                 result =`pod install`
     puts result
    end         
end