PluginProbe
Buttonizer – Floating Menus, Sticky Buttons, & Popup Builder / 1.4.1
Buttonizer – Floating Menus, Sticky Buttons, & Popup Builder v1.4.1
3.6.0 3.5.0 trunk 1.0.10 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.6.1 1.0.7 1.0.8 1.0.9 1.1 1.1.1 1.2 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5 1.5.1 All 110 releases
buttonizer-multifunctional-button / freemius / gulpfile.js

gulpfile.js in Buttonizer – Floating Menus, Sticky Buttons, & Popup Builder 1.4.1, at freemius/gulpfile.js

167 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var gulp = require('gulp');
2 var path = require('path');
3 var filesystem = require('fs');
4 var wpPot = require('gulp-wp-pot');
5 var gettext = require('gulp-gettext');
6 var sort = require('gulp-sort');
7 var pofill = require('gulp-pofill');
8 var rename = require('gulp-rename');
9 var clean = require('gulp-clean');
10
11 var languagesFolder = './languages/';
12
13 var options = require('./transifex-config.json');
14
15 function getFolders(dir) {
16 return filesystem.readdirSync(dir)
17 .filter(function (file) {
18 return filesystem.statSync(path.join(dir, file)).isDirectory();
19 });
20 }
21
22 var transifex = require('gulp-transifex').createClient(options);
23
24 // Create POT out of i18n.php.
25 gulp.task('prepare-source', function () {
26 gulp.src('**/*.php')
27 .pipe(sort())
28 .pipe(wpPot({
29 destFile : 'freemius.pot',
30 package : 'freemius',
31 bugReport : 'https://github.com/Freemius/wordpress-sdk/issues',
32 lastTranslator : 'Vova Feldman <vova@freemius.com>',
33 team : 'Freemius Team <admin@freemius.com>',
34 /*gettextMethods: {
35 instances: ['this', '_fs'],
36 methods: [
37 'get_text_inline'
38 ]
39 },*/
40 gettextFunctions: [
41 {name: 'get_text_inline'},
42
43 {name: 'fs_text_inline'},
44 {name: 'fs_echo_inline'},
45 {name: 'fs_esc_js_inline'},
46 {name: 'fs_esc_attr_inline'},
47 {name: 'fs_esc_attr_echo_inline'},
48 {name: 'fs_esc_html_inline'},
49 {name: 'fs_esc_html_echo_inline'},
50
51 {name: 'get_text_x_inline', context: 2},
52 {name: 'fs_text_x_inline', context: 2},
53 {name: 'fs_echo_x_inline', context: 2},
54 {name: 'fs_esc_attr_x_inline', context: 2},
55 {name: 'fs_esc_js_x_inline', context: 2},
56 {name: 'fs_esc_js_echo_x_inline', context: 2},
57 {name: 'fs_esc_html_x_inline', context: 2},
58 {name: 'fs_esc_html_echo_x_inline', context: 2}
59 /*,
60
61
62 {name: '_fs_text'},
63 {name: '_fs_x', context: 2},
64 {name: '_fs_echo'},
65 {name: '_fs_esc_attr'},
66 {name: '_fs_esc_attr_echo'},
67 {name: '_fs_esc_html'},
68 {name: '_fs_esc_html_echo'},
69 {name: '_fs_ex', context: 2},
70 {name: '_fs_esc_attr_x', context: 2},
71 {name: '_fs_esc_html_x', context: 2},
72
73 {name: '_fs_n', plural: 2},
74 {name: '_fs_n_noop', plural: 2},
75 {name: '_fs_nx', plural: 2, context: 4},
76 {name: '_fs_nx_noop', plural: 2, context: 3}*/
77 ]
78 }))
79 .pipe(gulp.dest(languagesFolder + 'freemius.pot'));
80
81 // Create English PO out of the POT.
82 return gulp.src(languagesFolder + 'freemius.pot')
83 .pipe(pofill({
84 items: function (item) {
85 // If msgstr is empty, use identity translation
86 if (!item.msgstr.length) {
87 item.msgstr = [''];
88 }
89 if (!item.msgstr[0]) {
90 item.msgstr[0] = item.msgid;
91 }
92 return item;
93 }
94 }))
95 .pipe(rename('freemius-en.po'))
96 .pipe(gulp.dest(languagesFolder));
97 });
98
99 // Push updated po resource to transifex.
100 gulp.task('update-transifex', ['prepare-source'], function () {
101 return gulp.src(languagesFolder + 'freemius-en.po')
102 .pipe(transifex.pushResource());
103 });
104
105 // Download latest *.po translations.
106 gulp.task('download-translations', ['update-transifex'], function () {
107 return gulp.src(languagesFolder + 'freemius-en.po')
108 .pipe(transifex.pullResource());
109 });
110
111 // Move translations to languages root.
112 gulp.task('prepare-translations', ['download-translations'], function () {
113 var folders = getFolders(languagesFolder);
114
115 return folders.map(function (folder) {
116 return gulp.src(path.join(languagesFolder, folder, 'freemius-en.po'))
117 .pipe(rename('freemius-' + folder + '.po'))
118 .pipe(gulp.dest(languagesFolder));
119 });
120 });
121
122 // Feel up empty translations with English.
123 gulp.task('translations-feelup', ['prepare-translations'], function () {
124 return gulp.src(languagesFolder + '*.po')
125 .pipe(pofill({
126 items: function (item) {
127 // If msgstr is empty, use identity translation
128 if (0 == item.msgstr.length) {
129 item.msgstr = [''];
130 }
131 if (0 == item.msgstr[0].length) {
132 // item.msgid[0] = item.msgid;
133 item.msgstr[0] = item.msgid;
134 }
135 return item;
136 }
137 }))
138 .pipe(gulp.dest(languagesFolder));
139 });
140
141 // Cleanup temporary translation folders.
142 gulp.task('cleanup', ['prepare-translations'], function () {
143 var folders = getFolders(languagesFolder);
144
145 return folders.map(function (folder) {
146 return gulp.src(path.join(languagesFolder, folder), {read: false})
147 .pipe(clean());
148 });
149 });
150
151 // Compile *.po to *.mo binaries for usage.
152 gulp.task('compile-translations', ['translations-feelup'], function () {
153 // Compile POs to MOs.
154 return gulp.src(languagesFolder + '*.po')
155 .pipe(gettext())
156 .pipe(gulp.dest(languagesFolder))
157 });
158
159 gulp.task('default', [], function () {
160 gulp.run('prepare-source');
161 gulp.run('update-transifex');
162 gulp.run('download-translations');
163 gulp.run('prepare-translations');
164 gulp.run('translations-feelup');
165 gulp.run('cleanup');
166 gulp.run('compile-translations');
167 });