tcms 0.0.1 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09dab269b19b6494560d0025e41c45219afb6a0c
4
- data.tar.gz: 1ffec2a5835a5833a02a0b3a7204a3936aed8e2f
3
+ metadata.gz: 4fb365b173a996cbde60604babc913c56ada8eae
4
+ data.tar.gz: c108119027212708cec9913e7e2dc763daec11cc
5
5
  SHA512:
6
- metadata.gz: dc9bfd3926d66b5b941e17b5fff00c54315d542c52311d1372d7bc04f734a82698872f98a54540a0963440f15a77a621d0e5e77ca6381e20b4877f8621b8f42f
7
- data.tar.gz: dfc091386d9dd4177ca16e1617f7a5a05d517b6d54b6c0bd663a6dc7417792999c4d4c3fc67e97ba2fbe8c2c122556e13bec2a4f4029d99ae124d2c2e8fc855f
6
+ metadata.gz: b14ead2367a951fb0c0971e8dd83f762da0ed557c5a33666a8faa92960c9af40d30110392426dc7ccb50094e8088eb64bd749c1b474e8168de7539e2d33e8adc
7
+ data.tar.gz: 87e984fa0d42991d7f32c7ce7b3e2f78655532791c8ad7140a8b52471aaa6df791d04af3793dbecdfd3087ba8f16e3aad5de557b28c01308e6b0c1cbefaf69b0
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in tcms.gemspec
4
- gemspec
4
+ gem 'rest_client'
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/bin/tcms CHANGED
@@ -2,11 +2,12 @@
2
2
  require 'pathname'
3
3
  require 'optparse'
4
4
 
5
- THIS_FILE = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
6
-
7
- path = Pathname.new(File.dirname(THIS_FILE)).realpath.parent.to_s
8
-
9
- require path + '/lib/tcms'
5
+ begin
6
+ command_path = Pathname.new(File.dirname(__FILE__)).realpath.parent.to_s
7
+ require command_path + '/lib/tcms'
8
+ rescue
9
+ require "tcms"
10
+ end
10
11
 
11
12
  #减少
12
13
  #unless File.exist?('project.yml')
@@ -21,6 +22,10 @@ opt = OptionParser.new do |opts|
21
22
  options[:files] = arr
22
23
  options[:action] = :deploy
23
24
  end
25
+ opts.on('-b [type]','--build [type]','构建项目') do |type|
26
+ options[:type] = type
27
+ options[:action] = :build
28
+ end
24
29
  opts.on('-h','--help','帮助文档') do |n|
25
30
  puts opts
26
31
  puts '更多参考,请访问-http://wiki.cms.tencent-cloud.com/mars.html'
@@ -30,5 +35,11 @@ end.parse!
30
35
 
31
36
  case options[:action]
32
37
  when :deploy
33
- Tcms::upload_assets options[:files]
38
+ if options[:files]
39
+ Tcms::upload_assets options[:files]
40
+ else
41
+ Tcms::deploy_project
42
+ end
43
+ when :build
44
+ Tcms::build_project(options[:type])
34
45
  end
data/lib/tcms.rb CHANGED
@@ -3,6 +3,13 @@ require 'rest_client'
3
3
  require 'rake'
4
4
  require 'pathname'
5
5
 
6
+ begin
7
+ tcms_lib_path = Pathname.new(File.dirname(__FILE__)).realpath.to_s
8
+ require tcms_lib_path+ '/tcms/publisher'
9
+ rescue
10
+ require "tcms/publisher"
11
+ end
12
+
6
13
  module Tcms
7
14
  PROJECT_FILE = "project.yml"
8
15
  UPLOAD_CGI = 'http://wizard2.webdev.com/tcms/tools/uploadfile.php'
@@ -20,9 +27,7 @@ module Tcms
20
27
  puts "#{file}/ 下无assets.yml配置,请配置素材远程频道和目录.."
21
28
  next
22
29
  end
23
-
24
30
  file_config = self.read_config_file file_path
25
-
26
31
  if File.directory? file
27
32
  FileList.new(file+'/**/*').each do |f|
28
33
  unless File.directory? f
@@ -41,12 +46,21 @@ module Tcms
41
46
  def self.upload_file file,config
42
47
  remote_path = config["remotepath"]+'/'+file.sub(/^\w+\//,'')
43
48
  #puts remote_path
44
- puts "正在上传文件#{file}到http://#{config["site"]}.qq.com/#{config["channel"]}/"+remote_path+"..."
49
+ puts "正在上传#{file}"
45
50
  upload_path = "#{UPLOAD_CGI}?site=#{config["site"]}&channel=#{config["channel"]}&remotepath=#{remote_path}"
46
51
  begin
47
- response = RestClient.post(upload_path,:NEW_FILE=>File.new(file)){|response|
52
+ response = RestClient.post(upload_path,:NEW_FILE=>File.new(file)){|response,request,result|
48
53
  if [200].include? response.code
49
- puts '--上传成功!'
54
+ puts '--上传成功!'+response.description
55
+ site = config["site"]
56
+ domain = 'qq.com'
57
+
58
+ #业务修正
59
+ if site.match 'mat1' then domain = "gtimg.cn/#{config["channel"]}" end
60
+ if site.match 'pingjs' then site = 'rss' end
61
+
62
+ url = "http://#{site}.#{domain}/#{remote_path}"
63
+ puts '--远程地址:'+url
50
64
  end
51
65
  }
52
66
  rescue Exception => e
@@ -56,4 +70,50 @@ module Tcms
56
70
  puts ''
57
71
  end
58
72
  end
73
+
74
+ #发布整个项目
75
+ def self.deploy_project
76
+ unless File.exist? PROJECT_FILE
77
+ puts 'project.yml 不存在,请运行: tcms -create 创建配置文件'
78
+ return
79
+ end
80
+
81
+ project = self.read_config_file PROJECT_FILE
82
+ assets = project['assets']
83
+ #上传素材文件夹
84
+ FileList.new(assets["folder"]+'/**/*').each do |f|
85
+ unless File.directory? f
86
+ if f.include? project["version"].to_s
87
+ self.upload_file f,assets
88
+ end
89
+ end
90
+ end
91
+ #上传页面文件
92
+ #TODO fixed concat upload function
93
+ pages = project['pages']
94
+ FileList.new(pages['folder']+"/**/*").each do |f|
95
+ unless File.directory? f
96
+ if f.include? 'htm'
97
+ self.upload_file f,pages
98
+ end
99
+ end
100
+ end
101
+ end
102
+
103
+ def self.build_project type
104
+ unless type then type = 'dev' end
105
+ unless ['dev','test','rel','release'].include? type
106
+ puts '未知命令选项,请选择[dev,test,release].'
107
+ return
108
+ end
109
+
110
+ project = self.read_config_file PROJECT_FILE
111
+ FileList.new(project['templates']['folder']+'/**/*').each do |f|
112
+ result = f.match(/\/(\w+).html?\.erb/)
113
+ if result
114
+ publisher = Tcms::Publisher.new(result[1],{"title"=>"aa"},project)
115
+ publisher.render(type)
116
+ end
117
+ end
118
+ end
59
119
  end
@@ -0,0 +1,65 @@
1
+ module Tcms
2
+ module Helper
3
+ def script_for name
4
+ if @_build_type == "dev"
5
+ return _script_for_local name
6
+ else
7
+ return _script_for_publish name
8
+ end
9
+ end
10
+
11
+ def _script_for_local name
12
+ file_path = @_project["scripts"]["folder"]
13
+ file_content = File.read(file_path+"/#{name}.js",:encoding=>"utf-8")
14
+ script_output = ''
15
+ file_output = file_content.gsub(/\/\/=include\s([^\s]+)/){|include_str|
16
+ matches = /\/\/=include\s([^\s]+)/.match(include_str)
17
+ file_url = file_path+"/#{matches[1]}.js"
18
+ script_output+= '<script type="text/javascript" charset="utf-8" src="'+file_url+'"></script>';
19
+ script_output+="\n"
20
+ }
21
+
22
+ script_output += '<script type="text/javascript" charset="utf-8" src="'+file_path+"/"+name+'.js"></script>'
23
+ return script_output
24
+ end
25
+
26
+ def _script_for_publish name
27
+ file_path = @_project["scripts"]["folder"]
28
+ file_content = File.read(file_path+"/#{name}.js",:encoding=>"utf-8")
29
+ script_output = "";
30
+ file_output = file_content.gsub(/\/\/=include\s([^\s]+)/){|include_str|
31
+ matches = /\/\/=include\s([^\s]+)/.match(include_str)
32
+ file_url = file_path+"/#{matches[1]}.js"
33
+
34
+ unless File.exist?(file_url)
35
+ puts 'no file include exist!|'+ file_url
36
+ return
37
+ end
38
+
39
+ File.read(file_url,:encoding=>"utf-8")
40
+ }
41
+ publish_name = name+'.'+ @_project["version"].to_s
42
+ #写文件
43
+ write_file =file_path+'/'+publish_name+'.js';
44
+
45
+ if File.exist? write_file
46
+ File.delete write_file
47
+ end
48
+
49
+ concat_file = File.open(write_file,'w+')
50
+ concat_file.write(file_output)
51
+
52
+ puts '-生成素材'+publish_name+'.js'
53
+
54
+ assets = @_project["assets"]
55
+ site = assets["site"]
56
+ domain = 'qq.com'
57
+ remote_path = assets["remotepath"]
58
+ if site.match 'mat1' then domain = "gtimg.cn/#{assets["channel"]}" end
59
+ if site.match 'pingjs' then site = 'rss' end
60
+ url = "http://#{site}.#{domain}/#{remote_path}"
61
+ return '<script type="text/javascript" charset="utf-8" src="'+url+"/"+publish_name+'.js?v='+Digest::MD5.hexdigest(file_output)+'"></script>'
62
+
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,58 @@
1
+ require 'digest'
2
+ require 'erb'
3
+ require 'json'
4
+ require 'pathname'
5
+
6
+ begin
7
+ require Pathname.new(File.dirname(__FILE__)).realpath.to_s+'/helper'
8
+ rescue
9
+ require "tcms/helper"
10
+ end
11
+
12
+ module Tcms
13
+ class Publisher
14
+ #初始化
15
+ def initialize(name,data,project)
16
+ @project = project
17
+ templates = project["templates"]
18
+ @encoding = project["encoding"]
19
+ @name = name
20
+ @data = self.extend_data(data)
21
+ @template = File.read("#{templates['folder']}/#{name}.html.erb",:encoding=>@encoding)
22
+ end
23
+
24
+ def extend_data data
25
+ class<<data
26
+ include Tcms::Helper
27
+ def method_missing name,*args
28
+ self[name.to_s]
29
+ end
30
+ end
31
+ data
32
+ end
33
+ #直接输出页面地址
34
+ def render type
35
+ page = ERB.new(@template)
36
+ project = @project
37
+
38
+ bd = @data.instance_eval{
39
+ @_build_type = type
40
+ @_project = project
41
+
42
+ binding();
43
+ }
44
+ content = page.result(bd)
45
+
46
+ write_file_path = @project["pages"]["folder"]+"/"+@name+'.html'
47
+ if File.exist? write_file_path
48
+ File.delete write_file_path
49
+ end
50
+
51
+ write_file = File.new(write_file_path,'w+')
52
+ write_file.puts content
53
+ write_file.close
54
+
55
+ puts "已生成页面#{write_file_path}"
56
+ end
57
+ end
58
+ end
data/lib/tcms/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tcms
2
- VERSION = "0.0.1"
2
+ VERSION = "0.9.1"
3
3
  end
data/server ADDED
@@ -0,0 +1,8 @@
1
+ require 'sinatra'
2
+ require 'json'
3
+ set :bind,'0.0.0.0'
4
+ set :port,'80'
5
+ set :root, File.dirname(__FILE__)
6
+ set :public_folder, File.dirname(__FILE__)
7
+
8
+
metadata CHANGED
@@ -1,60 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tcms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
- - '''bertwang'''
7
+ - "'bertwang'"
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-03 00:00:00.000000000 Z
11
+ date: 2015-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  description: TCMS WebApp 互动相关工具,部分功能限于内网&VPN可用。相关文档@raylei.
42
42
  email:
43
- - '''1060151577@qq.com'''
43
+ - "'1060151577@qq.com'"
44
44
  executables:
45
45
  - tcms
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
- - .gitignore
50
49
  - Gemfile
51
50
  - LICENSE.txt
52
51
  - README.md
53
52
  - Rakefile
53
+ - bin/tcms
54
54
  - lib/tcms.rb
55
+ - lib/tcms/helper.rb
56
+ - lib/tcms/publisher.rb
55
57
  - lib/tcms/version.rb
56
- - tcms.gemspec
57
- - bin/tcms
58
+ - server
58
59
  homepage: http://dxtool.cms.tencent-cloud.com/
59
60
  licenses:
60
61
  - MIT
@@ -65,17 +66,17 @@ require_paths:
65
66
  - lib
66
67
  required_ruby_version: !ruby/object:Gem::Requirement
67
68
  requirements:
68
- - - '>='
69
+ - - ">="
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  required_rubygems_version: !ruby/object:Gem::Requirement
72
73
  requirements:
73
- - - '>='
74
+ - - ">="
74
75
  - !ruby/object:Gem::Version
75
76
  version: '0'
76
77
  requirements: []
77
78
  rubyforge_project:
78
- rubygems_version: 2.0.14
79
+ rubygems_version: 2.2.2
79
80
  signing_key:
80
81
  specification_version: 4
81
82
  summary: TCMS WebApp Tools
data/.gitignore DELETED
@@ -1,14 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
data/tcms.gemspec DELETED
@@ -1,23 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'tcms/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "tcms"
8
- spec.version = Tcms::VERSION
9
- spec.authors = ["'bertwang'"]
10
- spec.email = ["'1060151577@qq.com'"]
11
- spec.summary = %q{TCMS WebApp Tools}
12
- spec.description = %q{TCMS WebApp 互动相关工具,部分功能限于内网&VPN可用。相关文档@raylei.}
13
- spec.homepage = "http://dxtool.cms.tencent-cloud.com/"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = ['tcms']
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- end