Exemple #1
0
def buildApp(prunt):
	u"""
	构建app中的各种文件(workbench.html)
	"""
	apps_dir = './apps/customerized_apps'
	for dir in os.listdir(apps_dir):
		app_dir = os.path.join(apps_dir, dir)
		if not os.path.isdir(app_dir):
			continue
		init_file = os.path.join(app_dir, '__init__.py')
		if not os.path.exists(init_file):
			continue

		is_restful_app = False
		with open(init_file, 'rb') as src_file:
			for line in src_file:
				line = line.strip()
				if 'is_restful_app' in line and 'True' in line:
					if not line[0] == '#':
						is_restful_app = True
						break

		if not is_restful_app:
			logger.warn('%s is not a RESTFUL app', app_dir)
			continue

		logger.info('build app %s', app_dir)

		app_templates_dir = os.path.join(app_dir, 'templates')
		for root, dirs, files in os.walk(app_templates_dir):
			for file in files:
				if not file.endswith('.html'):
					continue

				app_template_file_path = os.path.join(root, file)
				with open(app_template_file_path, 'rb') as app_template_file:
					content = app_template_file.read()

				if not ('<!-- *start_prunt_task* -->' in content and '<!-- *end_prunt_task* -->' in content):
					continue

				prunt.run_task('weizoom-build', {
					"files": {
						"src": app_template_file_path
					}
				})
Exemple #2
0
def buildFile(prunt):
	u"""
	解析文件,执行其中定义的task
	"""
	prunt.config.require('files')
	files = prunt.config['files']
	paths = files['src'] if type(files['src']) == list else [files['src']]

	for path in paths:
		build(path)

		prunt.run_task('prunt-replace', {
			'files': {
				'src': path
			},
			'rules': [{
				'pattern': '/cdn/',
				'replacement': '{{cdn_host}}/'
			}]
		})
Exemple #3
0
def weizoomMergeViewsDialogs(prunt):
    u"""
	将weapp的views和dialogs的js和template文件归一
	"""
    prunt.config.require('dest')
    dest = prunt.config['dest']

    #合并weapp的views, dialogs相关文件
    target_weapp_views_dialogs_js_path = dest['js']
    target_weapp_views_dialogs_template_path = dest['template']
    merge_weapp_views_and_dialogs(target_weapp_views_dialogs_js_path,
                                  target_weapp_views_dialogs_template_path)

    src = target_weapp_views_dialogs_js_path
    prunt.run_task('prunt-md5', {"files": {"src": src}})

    src = prunt.get_last_result()
    prunt.run_task('prunt-uglify', {"files": {"src": src}})

    prunt.set_last_result({
        "js": prunt.get_last_result(),
        "template": target_weapp_views_dialogs_template_path
    })
Exemple #4
0
def compileBaseTemplate(prunt):
    u"""
	构建base.html
	"""
    prunt.config.require('files')
    files = prunt.config['files']
    paths = files['src'] if type(files['src']) == list else [files['src']]

    prunt.config.require('dest')
    dest = prunt.config['dest']
    dst_js_file = dest['js']
    dst_css_file = dest['css']

    logger.info('build %s', paths)

    prunt.run_task(
        'prunt-replace', {
            "files": {
                "src": "static_v2/js/termite/component/common/Component.js"
            },
            "rules": [{
                "pattern": 'default:',
                "replacement": '"default":'
            }]
        })

    #合并weapp的views, dialogs相关文件
    target_weapp_views_dialogs_js_path = 'static_v2/js/weapp_views_dialogs.js'
    target_weapp_views_dialogs_template_path = 'templates/weapp_views_dialogs.html'
    merge_weapp_views_and_dialogs(target_weapp_views_dialogs_js_path,
                                  target_weapp_views_dialogs_template_path)

    for path in paths:
        js_files = template_util.get_js_files(path)
        js_files.append(target_weapp_views_dialogs_js_path)

        prunt.run_task(
            'prunt-concat', {
                "files": {
                    "src": js_files,
                    "dest": dst_js_file
                },
                "comment": "/* comment */"
            })

        prunt.run_task('prunt-uglify', {"files": {"src": dst_js_file}})
Exemple #5
0
	def generate(self):
		if self.task_name == 'weizoom-merge':
			paths = self.extract_file_path()
			self.conf_dict['files'] = {
				"src": paths
			}

		self.conf_dict['raw_lines'] = self.lines
		if prunt.run_task(self.task_name, self.conf_dict):
			if self.task_name == 'weizoom-merge':
				if '.js' in self.conf_dict['dest']:
					dest = '<script type="text/javascript" src="/%s"></script>' % prunt.get_last_result()
					return dest.decode('utf-8').encode('utf-8')
				elif '.css' in self.conf_dict['dest']:
					dest = '<link type="text/css" rel="stylesheet" media="all" href="/%s">' % prunt.get_last_result()
					return dest.decode('utf-8').encode('utf-8')
			elif self.task_name == 'weizoom-merge-views-dialogs':
				result = prunt.get_last_result()
				template_content = ''
				with open(result['template'], 'rb') as src_file:
					template_content = src_file.read().decode('utf-8')

				dest = u'{%% verbatim %%}%s{%% endverbatim %%}\n<script type="text/javascript" src="/%s"></script>' % (template_content, result['js'].decode('utf-8'))
				return dest.encode('utf-8')
			elif self.task_name == 'weizoom-generate-component-front-template':
				dest = u'{%% verbatim %%}<script type="text/x-handlebar-template" id="componentTemplates">\n%s\n</script>{%% endverbatim %%}' % prunt.get_last_result().decode('utf-8')
				return dest.encode('utf-8')
			else:
				result = prunt.get_last_result()
				if result:
					return result
				else:
					return ''
		else:
			logger.error('run task "%s" failed!!!', self.task_name)
			return ''
Exemple #6
0
def weizoomMerge(prunt):
	u"""
	将js, css文件进行concat和uglify操作
	"""
	prunt.config.require('files')
	files = prunt.config['files']
	paths = files['src'] if type(files['src']) == list else [files['src']]

	prunt.config.require('dest')
	dest = prunt.config['dest']

	path_map = prunt.config.get('path_map', None)

	logger.info('merge %s', paths)

	prunt.run_task('prunt-concat', {
		"files": {
			"src": paths,
			"dest": dest
		},
		"comment": "/* comment */",
		"path_map": path_map
	})

	src = dest
	prunt.run_task('prunt-md5', {
		"files": {
			"src": src
		}
	})

	src = prunt.get_last_result()
	prunt.run_task('prunt-uglify', {
		"files": {
			"src": src
		}
	})