ucool 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/ucool +124 -0
  2. metadata +62 -0
data/bin/ucool ADDED
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ require 'rubygems'
4
+ require 'net/http'
5
+ require 'uri'
6
+
7
+ host_os = RbConfig::CONFIG['host_os']
8
+ if host_os =~ /mswin|msys|mingw32/
9
+ require "iconv"
10
+ alias _puts puts
11
+ def puts string
12
+ _puts Iconv.iconv("GB2312","UTF-8", string)
13
+ end
14
+ end
15
+
16
+ def bind_ucool(argv)
17
+ if argv[0].to_s == "--help" or argv[0].to_s == "-h"
18
+ help =<<-EOF
19
+ ucool 查看ucool当前状态
20
+ ucool [user_root] [dir] 切换到user_root/u_dir
21
+ ucool [dir] 绑定到当前用户文件夹的指定目录,当前用户文件夹是指环境变量ucool_root设定的值
22
+ ucool none 切换到未绑定状态
23
+ ucool prepub toggle绑定到预发
24
+ ucool debug toggle源代码模式
25
+ ucool cache toggle缓冲assets
26
+ ucool mpa toggle映射本地
27
+ ucool combo toggle本地combo
28
+
29
+ !!! [dir]参数不需要u_前缀
30
+
31
+ 使用示例:
32
+ $ ucool xingdou sold_list
33
+ 绑定ucool到xingdou/u_sold_list目录
34
+
35
+ $ ucool_root=xingdou
36
+ 设定环境变量ucool_root为xingdou
37
+
38
+ $ ucool sold_list
39
+ 绑定ucool到xingdou/u_sold_list目录
40
+ EOF
41
+ puts help
42
+ return
43
+ end
44
+
45
+ if argv.length > 1
46
+ root = argv[0]
47
+
48
+ sub = argv[1]
49
+ elsif
50
+ sub = argv[0]
51
+ end
52
+ if sub.nil?
53
+ map = {
54
+ "assetsdebugswitch" => " DEBUG模式",
55
+ "bindPrepub" => " 绑定预发环境",
56
+ "enableLocalCombo" => " 手动combo",
57
+ "enableAssets" => "使用服务器Assets目录",
58
+ "enableLocalMapping"=> " 本地目录映射",
59
+ "open" => "开启",
60
+ "close" => "关闭"
61
+ }
62
+ api="http://u.taobao.net/pz"
63
+ begin
64
+ echo = Net::HTTP.get(URI.parse(api))
65
+ rescue Exception => e
66
+ puts "error:" + e
67
+ end
68
+ begin
69
+ root=echo.match(/root-bind[\s\S]*?<\/select>/).to_s.match(/selected.*?>/).to_s.match(/value=[" ]?(.*?)[" >]+/)[1]
70
+ sub=echo.match(/dir-bind[\s\S]*?<\/select>/).to_s.match(/selected.*?>/).to_s.match(/value=[" ]?(.*?)[" >]+/)[1]
71
+ puts "绑定目录: #{root}/#{sub}"
72
+ rescue
73
+ end
74
+ links = echo.scan /<a[^>]*>.*?<\/a>/
75
+ links.each do |a|
76
+ if a =~ /switch-/
77
+ id = a.match(/id="(.*)"/)[1]
78
+ status = a.match(/class="switch-(.*?)"/)[1]
79
+ puts "#{map[id]}: #{map[status]}"
80
+ end
81
+ end
82
+ return
83
+ end
84
+
85
+ if %q(prepub,map,combo,debug,cache).include? sub
86
+ cmd_map = {
87
+ "prepub" => "bindPrepub",
88
+ "mpa" => "enableLocalMapping",
89
+ "combo" => "enableLocalCombo",
90
+ "debug" => "assetsdebugswitch",
91
+ "cache" => "enableAssets"
92
+ }
93
+ api="http://u.taobao.net/ppzbg.jsp?pid=#{cmd_map[sub]}&callback=UCOOL.Pz.change&t=#{rand}"
94
+ echo = Net::HTTP.get(URI.parse(api + "&rootDir=#{root}&subDir=u_#{sub}&t=#{rand}"))
95
+ #out = " ucool with prepub"
96
+ #puts echo
97
+ else
98
+ root = root || ENV["ucool_root"] || "-1"
99
+ root = "-1" if root == "none"
100
+ sub = sub || "-1"
101
+ if sub == "none"
102
+ sub = "-1"
103
+ elsif not sub =~ /^u_/
104
+ sub = "u_" + sub
105
+ end
106
+
107
+ api="http://u.taobao.net/ppzbg.jsp?pid=bindDir&callback=UCOOL.Pz.bindDir"
108
+ echo = Net::HTTP.get(URI.parse(api + "&rootDir=#{root}&subDir=#{sub}&t=#{rand}"))
109
+ #out = " ucool with #{root}/u_#{sub}"
110
+ end
111
+ #puts echo
112
+ if echo and !echo.empty?
113
+ echos = echo.sub(/^.*?,/,'').delete("')").split(",")
114
+ status = echos[0].delete(' ')
115
+ msg = echos[1]
116
+ if status =~ /ok/
117
+ puts "ok"
118
+ else
119
+ #puts "failed to bind#{out}"
120
+ puts "error: #{msg}"
121
+ end
122
+ end
123
+ end
124
+ bind_ucool(ARGV)
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ucool
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Zhong Xingdou
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-08-31 00:00:00 +08:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: " ucool command for taobao.com\n"
22
+ email: zhongxingdou@gmail.com
23
+ executables:
24
+ - ucool
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - bin/ucool
31
+ has_rdoc: true
32
+ homepage:
33
+ licenses: []
34
+
35
+ post_install_message:
36
+ rdoc_options: []
37
+
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.3.6
58
+ signing_key:
59
+ specification_version: 3
60
+ summary: ucool command for taobao.com
61
+ test_files: []
62
+