forked from open-craft/problem-builder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
110 lines (90 loc) · 4.06 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2015 Harvard, edX & OpenCraft
#
# This software's license gives you freedom; you can copy, convey,
# propagate, redistribute and/or modify this program under the terms of
# the GNU Affero General Public License (AGPL) as published by the Free
# Software Foundation (FSF), either version 3 of the License, or (at your
# option) any later version of the AGPL published by the FSF.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
# General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program in a file in the toplevel directory called
# "AGPLv3". If not, see <http://www.gnu.org/licenses/>.
#
# Imports ###########################################################
import os
import sys
from setuptools import setup, find_packages
from setuptools.command.install import install
# Constants #########################################################
VERSION = '4.1.6'
# Functions #########################################################
def package_data(pkg, root_list):
"""Generic function to find package_data for `pkg` under `root`."""
data = []
for root in root_list:
for dirname, _, files in os.walk(os.path.join(pkg, root)):
for fname in files:
data.append(os.path.relpath(os.path.join(dirname, fname), pkg))
return {pkg: data}
class VerifyTagCommand(install):
"""Custom command to verify that the git tag matches the current version."""
description = 'verify that the git tag matches the current version'
def run(self):
tag = os.getenv('CIRCLE_TAG')
if tag != 'v{}'.format(VERSION):
info = "Git tag: {0} does not match the version of this app: {1}".format(
tag, VERSION
)
sys.exit(info)
# Main ##############################################################
BLOCKS = [
'problem-builder = problem_builder.mentoring:MentoringBlock',
'step-builder = problem_builder.mentoring:MentoringWithExplicitStepsBlock',
'sb-step = problem_builder.step:MentoringStepBlock',
'sb-review-step = problem_builder.step_review:ReviewStepBlock',
'sb-conditional-message = problem_builder.step_review:ConditionalMessageBlock',
'sb-review-score = problem_builder.step_review:ScoreSummaryBlock',
'sb-review-per-question-feedback = problem_builder.step_review:PerQuestionFeedbackBlock',
'sb-plot = problem_builder.plot:PlotBlock',
'sb-plot-overlay = problem_builder.plot:PlotOverlayBlock',
'pb-table = problem_builder.table:MentoringTableBlock',
'pb-column = problem_builder.table:MentoringTableColumn',
'pb-answer = problem_builder.answer:AnswerBlock',
'pb-answer-recap = problem_builder.answer:AnswerRecapBlock',
'pb-mcq = problem_builder.mcq:MCQBlock',
'pb-swipe = problem_builder.swipe:SwipeBlock',
'pb-rating = problem_builder.mcq:RatingBlock',
'pb-mrq = problem_builder.mrq:MRQBlock',
'pb-slider = problem_builder.slider:SliderBlock',
'pb-completion = problem_builder.completion:CompletionBlock',
'pb-message = problem_builder.message:MentoringMessageBlock',
'pb-tip = problem_builder.tip:TipBlock',
'pb-choice = problem_builder.choice:ChoiceBlock',
'pb-dashboard = problem_builder.dashboard:DashboardBlock',
'pb-data-export = problem_builder.instructor_tool:InstructorToolBlock', # Deprecated; use 'pb-instructor-tool' now
'pb-instructor-tool = problem_builder.instructor_tool:InstructorToolBlock',
]
setup(
name='xblock-problem-builder',
version=VERSION,
description='XBlock - Problem Builder',
packages=find_packages(),
install_requires=[
'XBlock>=1.2',
'xblock-utils',
],
entry_points={
'xblock.v1': BLOCKS,
},
package_data=package_data("problem_builder", ["templates", "public", "migrations", "locale"]),
cmdclass={
'verify_tag': VerifyTagCommand,
},
)