[Chicago] Better than grep
Brian Herman
brianherman at gmail.com
Mon Jun 28 18:18:59 CEST 2010
Dear user groups,
Its in perl and can tackle large heterogeneous source trees in a single
command!
Even though it is perl it acts like the famous import this line:
Simple is better than complex.
For example one command in my local source repository of the
etherpad<http://etherpad.org> open
source project.
> ack admin
OUTPUT
trunk/etherpad/pad/debian/config
40:db_input high "etherpad/admin_password" || true
trunk/etherpad/pad/debian/postinst
38:db_get "etherpad/admin_password"
39:db_admin_password="$RET"
71: -D __db_admin_password__="$db_admin_password" \
trunk/etherpad/pad/etherpad/etc/etherpad.localdev-default.properties
5:etherpad.adminPass = password
trunk/etherpad/pad/etherpad/src/etherpad/admin/shell.js
123: body.push(A({href: '/ep/admin/'}, html("« Admin")));
trunk/etherpad/pad/etherpad/src/etherpad/billing/team_billing.js
417: billingAdminLink: "https://"+subDomain+".
etherpad.com/ep/admin/billing/"
trunk/etherpad/pad/etherpad/src/etherpad/control/admin/pluginmanager.js
28:import("etherpad.admin.plugins");
61: renderHtml("admin/pluginmanager.ejs",
trunk/etherpad/pad/etherpad/src/etherpad/control/admincontrol.js
37:import("etherpad.admin.shell");
54:import("etherpad.admin.plugins");
55:import("etherpad.control.admin.pluginmanager");
69: return (getSession().adminAuth === true);
102: response.redirect('/ep/admin/auth');
110: [PrefixMatcher('/ep/admin/pluginmanager/'), forward(pluginmanager)],
111: [PrefixMatcher('/ep/admin/usagestats/'), forward(statscontrol)]
134: P("Are you an admin?"),
142: if (pass === appjet.config['etherpad.adminPass']) {
143: getSession().adminAuth = true;
147: response.redirect("/ep/admin/main");
166: plugins.callHook("adminMenu").forEach(addMenuItem);
170: div.push(P(A({href: "/ep/admin/setadminmode?v=false"},
174: div.push(P(A({href: "/ep/admin/setadminmode?v=true"},
211: body.push(A({href: '/ep/admin/'}, html("« Admin")));
255:// Note: This function is called by the PNE dashboard
(pro_admin_control.js)! Be careful.
283:// Note: This function is called by the PNE dashboard
(pro_admin_control.js)! Be careful.
320:// Note: This function is called by the PNE dashboard
(pro_admin_control.js)! Be careful.
355:// Note: This function is called by the PNE dashboard
(pro_admin_control.js)! Be careful.
667: response.write(P(A({href: '/ep/admin/timingsreset'}, "reset all")));
703: response.redirect('/ep/admin/timings');
1235: tr.push(TD(A({href:
'/ep/admin/pne-tracker-lookup-keyhash?hash='+d.keyHash}, d.keyHash)));
1325: P(FORM({action: '/ep/admin/beta-valve-toggle', method: "post"},
1344: d.push(FORM({action: '/ep/admin/beta-invite-multisend', method:
'post'},
1359: tr.push(TD(FORM({action: '/ep/admin/beta-invite-send', method:
'post'},
1373: response.redirect('/ep/admin/beta-valve');
1379: response.redirect('/ep/admin/beta-valve');
1397: response.redirect('/ep/admin/beta-valve');
1401: response.redirect("/ep/admin/usagestats/");
1408:function render_setadminmode() {
1411: response.redirect("/ep/admin/");
1453: var admins = pro_accounts.listAllDomainAdmins(domain.id);
1454: body.push(P("Domain ", domain.subDomain, ".", request.domain, ";
admins:"));
1456: admins.forEach(function(admin) {
1457: p.push(LI(admin.fullName, " <", admin.email, ">"));
trunk/etherpad/pad/etherpad/src/etherpad/control/pad/pad_control.js
705: "If you have forgotten a pad's password, contact your site
administrator.",
706: " Site administrators can recover lost pad text through the
\"Admin\" tab.")
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/account_control.js
290:// create-admin-account (eepnet only)
293:function render_create_admin_account_get() {
295: renderFramedError("An admin account already exists on this
domain.");
298: _renderTemplate('create-admin-account', {});
301:function render_create_admin_account_post() {
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/admin/account_manager_control.js
26:import("etherpad.control.pro.admin.pro_admin_control");
83: pro_admin_control.renderAdminPage('account-manager', {
91: pro_admin_control.renderAdminPage('new-account', {
110: A({href: "/ep/admin/billing/", id: "billinglink"}, "Manage
billing")));
116: response.redirect('/ep/admin/account-manager/');
155: response.redirect('/ep/admin/account-manager/');
165: adminAccount: getSessionProAccount(),
177: A({href: '/ep/admin/pne-config'}, "Configured SMTP on
this server", "?")));
190: pro_admin_control.renderAdminPage('manage-account', {
199: response.redirect('/ep/admin/account-manager/');
209: _err("You cannot remove your own administrator privileges.");
223: response.redirect('/ep/admin/account-manager/');
232: pro_admin_control.renderAdminPage('delete-account', {
240: response.redirect("/ep/admin/account-manager/account/"+accountId);
245: response.redirect("/ep/admin/account-manager/account/"+accountId);
256: response.redirect("/ep/admin/account-manager/");
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/admin/license_manager_control.js
25:import("etherpad.control.pro.admin.pro_admin_control");
34: return '/ep/admin/pne-license-manager/';
57: pro_admin_control.renderAdminPage('pne-license-manager',
76: pro_admin_control.renderAdminPage('pne-license-manager',
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
22:import("etherpad.control.admincontrol");
23:import("etherpad.control.pro.admin.license_manager_control");
24:import("etherpad.control.pro.admin.account_manager_control");
25:import("etherpad.control.pro.admin.pro_config_control");
26:import("etherpad.control.pro.admin.team_billing_control");
30:import("etherpad.admin.shell");
40:var _pathPrefix = '/ep/admin/';
113: appjet.requestCache.proTopNavSelection = 'admin';
118: return renderTemplateAsString('pro/admin/'+p+'.ejs', data);
121: renderFramed('pro/admin/admin-template.ejs', {
134: [DirMatcher('/ep/admin/account-manager/'),
forward(account_manager_control)],
135: [DirMatcher('/ep/admin/pro-config/'), forward(pro_config_control)],
136: [DirMatcher('/ep/admin/billing/'), forward(team_billing_control)],
148:// renderAdminPage('admin');
149: response.redirect('/ep/admin/account-manager/')
154: renderUptime: admincontrol.renderServerUptime,
155: renderResponseCodes: admincontrol.renderResponseCodes,
156: renderPadConnections: admincontrol.renderPadConnections,
157: renderTransportStats: admincontrol.renderCometStats,
170: 'etherpad.adminPass',
191: response.redirect("/ep/admin/shell");
198: appjet.requestCache.proTopNavSelection = 'admin';
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/admin/pro_config_control.js
20:import("etherpad.control.pro.admin.pro_admin_control");
40: pro_admin_control.renderAdminPage('pro-config', {
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/admin/team_billing_control.js
28:import("etherpad.control.pro.admin.pro_admin_control");
144: pro_admin_control.renderAdminPage('manage-billing', {
192: response.redirect('/ep/admin/billing/edit');
335: response.redirect('/ep/admin/billing/');
341: response.redirect('/ep/admin/billing')
394: response.redirect("/ep/admin/billing/");
430: pro_admin_control.renderAdminPage('single-invoice', {
440: pro_admin_control.renderAdminPage('billing-invoices', {
trunk/etherpad/pad/etherpad/src/etherpad/control/pro/pro_main_control.js
35:import("etherpad.control.pro.admin.pro_admin_control");
36:import("etherpad.control.pro.admin.account_manager_control");
46: [DirMatcher('/ep/admin/'), forward(pro_admin_control)],
141: var adminList = pro_accounts.listAllDomainAdmins();
146: adminList: adminList
trunk/etherpad/pad/etherpad/src/etherpad/control/pro_signup_control.js
31:import("etherpad.control.pro.admin.account_manager_control");
trunk/etherpad/pad/etherpad/src/etherpad/control/static_control.js
22:import("etherpad.admin.plugins");
trunk/etherpad/pad/etherpad/src/etherpad/control/statscontrol.js
755:// body.push(A({id: "backtoadmin", href: "/ep/admin/"},
html("«"), " back to admin"));
772:// helpers.includeCss('admin/admin-stats.css');
804: links.push(toHTML(A({href:
"/ep/admin/usagestats/data?statName="+statName}, statName)));
879:// A({href:
'/ep/admin/usagestats/graph?size=1080x420&statName='+statName},
880:// IMG({src:
'/ep/admin/usagestats/graph?size=400x200&statName='+statName,
885:// href:
'/ep/admin/usagestats/data?statName='+statName}, "(data)")))
962:// body.push(P(A({href: "/ep/admin/usagestats/?cat="+catname},
catname)));
1131:// div.push(A({href:
'/ep/admin/usagestats/graph?size=1080x420&statName='+statName},
1132:// IMG({src:
'/ep/admin/usagestats/graph?size=400x200&statName='+statName,
1137:// href:
'/ep/admin/usagestats/data?statName='+statName}, "(data)")));
1184:// response.redirect('/ep/admin/usagestats');
trunk/etherpad/pad/etherpad/src/etherpad/control/store/storecontrol.js
28:import("etherpad.control.pro.admin.team_billing_control");
trunk/etherpad/pad/etherpad/src/etherpad/importexport/importexport.js
144: return "EtherPad is not configured to import or export formats other
than <strong>txt</strong> and <strong>html</strong>. Please contact your
system administrator for details.";
trunk/etherpad/pad/etherpad/src/etherpad/pad/model.js
33:import("etherpad.admin.plugins");
trunk/etherpad/pad/etherpad/src/etherpad/pad/pad_security.js
114: if (!isProDomainRequest() && (request.path ==
"/ep/admin/padinspector")) {
222: if (stringutils.startsWith(request.path, "/ep/admin/recover-padtext"))
{
trunk/etherpad/pad/etherpad/src/etherpad/pne/pne_utils.js
126: 'etherpad.adminPass',
trunk/etherpad/pad/etherpad/src/etherpad/pro/pro_accounts.js
129: _withCache('does-domain-admin-exist', function(cache) {
143: admin: isAdmin});
206: admin: account.isAdmin,
214: return _withCache('does-domain-admin-exist', function(cache) {
217: var admins = sqlobj.selectMulti('pro_accounts', {domainId:
domainId, isAdmin: true}, {});
218: cache[domainId] = (admins.length > 0);
348: return "LDAP not yet configured. Please contact your system
admininstrator.";
353: return getLDAP().error + " Please contact your system
administrator.";
545: _withCache('does-domain-admin-exist', function(cache) {
trunk/etherpad/pad/etherpad/src/etherpad/pro/pro_ldap_support.js
196:// "principal" : "uid=admin,ou=system",
trunk/etherpad/pad/etherpad/src/etherpad/pro/pro_pad_db.js
89:// Not a normal part of the UI. This is only called from admin
interface,
110: return; // etherpad admins
trunk/etherpad/pad/etherpad/src/etherpad/pro/pro_padlist.js
180: // excludes etherpad admin user
trunk/etherpad/pad/etherpad/src/etherpad/pro/pro_quotas.js
106: notice.push(" ", A({href: "/ep/admin/billing/"}, "Manage billing"),
".");
110: A({href: "/ep/payment-required"}, "contact a site administrator"),
".");
132: startsWith(request.path, "/ep/admin/") ||
trunk/etherpad/pad/etherpad/src/etherpad/pro/pro_utils.js
99: // if it's PNE and there is no admin account, allow them to create an
admin
107: if (request.path != '/ep/account/create-admin-account') {
109: response.redirect('/ep/account/create-admin-account');
trunk/etherpad/pad/etherpad/src/etherpad/utils.js
38:import("etherpad.admin.plugins");
trunk/etherpad/pad/etherpad/src/main.js
37:import("etherpad.control.admincontrol");
47:import("etherpad.control.pro.admin.license_manager_control");
71:import("etherpad.admin.plugins");
317: '/ep/admin', // pro and main site
393: [DirMatcher('/ep/admin/'), forward(admincontrol)],
trunk/etherpad/pad/etherpad/src/static/css/admin/admin-stats.css
1:#backtoadmin {
trunk/etherpad/pad/etherpad/src/static/css/pro/pro-admin.css
2:/* admin leftnav */
5:#admin-layout-table {
9:#admin-layout-table td {
12:#admin-leftnav {
20:#admin-leftnav .leftnav-title {
24:#admin-leftnav ul {
29:#admin-leftnav ul ul {
33:#admin-leftnav li {
39:#admin-leftnav li a {
45:#admin-leftnav li a:hover {
50:#admin-leftnav li.selected a {
57:/* admin content area */
60:#admin-right {
64:#admin-right h3 {
72:#admin-right h3.top {
trunk/etherpad/pad/etherpad/src/static/js/pad_impexp.js
152: " system administrator for details.");
trunk/etherpad/pad/infrastructure/ace/www/domline.js
2:// %APPJET%: import("etherpad.admin.plugins");
trunk/etherpad/pad/infrastructure/ace/www/linestylefilter.js
3:// %APPJET%: import("etherpad.admin.plugins");
trunk/etherpad/pad/infrastructure/framework-src/modules/dispatch.js
38:// Like PrefixMatcher, but makes trailing '/' optional, as in /ep/admin
or /ep/admin/.
Thanks,
Brian Herman
brianjherman.com
Research Assistant
University Of Illinois at Chicago
brianherman at acm.org
Consultant
University of Chicago
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/chicago/attachments/20100628/29132f3b/attachment-0001.html>
More information about the Chicago
mailing list