Commit Graph

256 Commits

Author SHA1 Message Date
Thomas Müller
aa2bd28a6a fix typo 2015-04-27 16:34:58 +02:00
Thomas Müller
66f9811151 handle case where the given language is unknown - refs #15794 2015-04-27 15:40:16 +02:00
Joas Schilling
e4c24a6b5c Undefined index: default 2015-04-27 12:21:48 +02:00
Joas Schilling
25b5adfe87 Fix scrutinizer complain 2015-04-27 11:46:00 +02:00
Joas Schilling
a4c314622a Use interface 2015-04-27 11:03:51 +02:00
Joas Schilling
e4977841b4 Add unit tests for the commands 2015-04-27 11:03:51 +02:00
Joas Schilling
d600955a51 Make getDefaultModuleId public and get module protected 2015-04-27 11:03:51 +02:00
Joas Schilling
f6d4bdb1fd Add occ commands to manage the encryption modules 2015-04-27 11:03:50 +02:00
Joas Schilling
eec92a16d6 Unify the output of the user commands and use DI 2015-04-23 12:40:13 +02:00
Joas Schilling
07627084e4 Check if the user exists before trying to delete him 2015-04-23 12:32:46 +02:00
Joas Schilling
2c396a7080 Remove the app version from disabled app list 2015-04-20 17:03:19 +02:00
Thomas Müller
13178db465 Merge pull request #15404 from Crote/occ-password-from-env
Add password input from env variable for occ user:{add, resetpassword}
2015-04-10 00:08:40 +02:00
Joas Schilling
98bdfa1518 change handling in app:list 2015-04-09 14:44:30 +02:00
Joas Schilling
def3b687ee Replace print_r() with pretty json 2015-04-09 14:42:44 +02:00
Joas Schilling
dd5063bd49 Add an option to get the output in plain, json or print_r syntax 2015-04-09 11:46:52 +02:00
Thomas Müller
f099c9883e Adding check command to validate server environment - fixes #15429 2015-04-08 00:19:23 +02:00
Laurens Post
d9323ca1be Add password input from env variable for occ user:{add, resetpassword}
This commit adds the --password-from-env switch to the `occ user:add` and
`occ user:resetpassword` commands. When this parameter is given, Owncloud
will use the password specified in environment variable OC_PASS. This
is safer than using command line parameters, as those can be read by any
process.
2015-04-04 13:24:57 +02:00
Laurens Post
6ce790ebbc Fix occ user:add failure return codes 2015-04-04 12:25:34 +02:00
Thomas Müller
a4171b295d More elaborate command description for upgrade - fixes #14864 2015-03-26 22:30:35 +01:00
Jenkins for ownCloud
b585d87d9d Update license headers 2015-03-26 11:44:36 +01:00
Morris Jobke
89e1b920cc Merge pull request #14613 from kampka/no-table-prefix
Install command should not require table prefix
2015-03-12 10:06:21 +01:00
Christian Kampka
277503209a Install command should not require table prefix 2015-03-11 21:06:25 +01:00
Lukas Reschke
73dc02d42c Merge pull request #14798 from owncloud/enable-oci-autotest-master
Setting oci as supported database
2015-03-11 16:14:54 +01:00
Morris Jobke
caa672ceeb Merge pull request #14794 from owncloud/add-console-command-user-add
Add a console command user:add to create users over the console
2015-03-11 16:09:23 +01:00
Thomas Müller
96b223676d Don't play with config values ... 2015-03-11 15:47:24 +01:00
Thomas Müller
cba3ec2c7f Setting oci as supported database 2015-03-11 14:29:22 +01:00
Joas Schilling
b1ff21ee28 Add a console command user:add to create users over the console 2015-03-11 14:22:23 +01:00
Morris Jobke
ad97ceb787 Merge pull request #13513 from owncloud/repair-legacystoragenofatalfail
Do not abort when meeting unfixable legacy storages
2015-03-11 13:32:33 +01:00
Thomas Müller
b3bb65eae5 Merge pull request #14662 from owncloud/issue/14661-show-versions-in-occ-applist
Add an option to include the installed app version in "occ app:list"
2015-03-11 12:23:22 +01:00
Joas Schilling
560137ca23 Always include the installed app version in "occ app:list" 2015-03-11 09:47:41 +01:00
Thomas Müller
6c1a1234f8 Properly handle available databases at runtime and respect setup checks in command line as well 2015-03-11 09:27:12 +01:00
Christian Kampka
83e0f84fef Allow configuring background job mode from the console 2015-03-02 20:51:40 +01:00
Vincent Petry
22bc37cb82 Properly forward repair errors and warnings
This makes repair errors and warnings visible for the user when
upgrading on the command line or in the web UI.
2015-02-27 12:44:04 +01:00
Morris Jobke
06aef4e8b1 Revert "Updating license headers"
This reverts commit 6a1a4880f0.
2015-02-26 11:37:37 +01:00
Thomas Müller
58cedc07b5 print app upgrade information to console as well 2015-02-24 12:52:16 +01:00
Thomas Müller
bbf7f56f94 3rd-party apps are disabled on upgrade - refs #14026 2015-02-24 12:02:36 +01:00
Thomas Müller
eae6471105 Fix error handling 2015-02-23 17:46:08 +01:00
Thomas Müller
bcd10d3dc5 implement command maintenance:install 2015-02-23 16:47:47 +01:00
Jenkins for ownCloud
6a1a4880f0 Updating license headers 2015-02-23 12:13:59 +01:00
Thomas Müller
d74662df7d implement php code checker to detect usage of not allowed private APIs - including console command to check local code to be used by developers 2015-02-10 11:51:24 +01:00
Morris Jobke
a7eedf0149 Disallow disabling of files app 2015-02-03 00:39:01 +01:00
Thomas Müller
9ad9d7bfbb naming fixes while reviewing 2015-01-26 12:59:25 +01:00
Joas Schilling
039397bd31 Use setConfigs() instead of calling setConfig() multiple times 2015-01-23 14:52:21 +01:00
Thomas Müller
1d2bef0a01 Use a special filter expression for Oracle to filter the prefix - fixes #13220 2015-01-12 16:28:11 +01:00
Thomas Müller
1f1643b35f Merge pull request #12995 from owncloud/tbelau666-master
Use Doctrines filter by table name
2015-01-09 14:17:14 +01:00
Arthur Schiwon
ae9c9a46b8 inject and use user manager to delete command instead of using old static oc_user way 2015-01-07 12:21:28 +01:00
Morris Jobke
95374e1404 add default for dbtableprefix 2014-12-23 13:32:25 +01:00
Morris Jobke
dbc465de97 use injected config object and fix typos 2014-12-22 10:55:52 +01:00
tbelau666
ad8d55c327 Use Doctrines filter by table name
Doctrine's SchemaManager can filter table names by regular expression.
On this way it picks up only ownClouds's tables in a database.

by tbelau666
2014-12-22 10:45:32 +01:00
Arthur Schiwon
4fa39250e7 LDAP User Cleanup: Port from stable7 without further adjustements
LDAP User Cleanup

background job for user clean up

adjust user backend for clean up

register background job

remove dead code

dependency injection

make Helper non-static for proper testing

check whether it is OK to run clean up job. Do not forget to pass arguments.

use correct method to get the config from server

methods can be private, proper indirect testing is given

no automatic user deletion

make limit readable for test purposes

make method less complex

add first tests

let preferences accept limit and offset for getUsersForValue

DI via constructor does not work for background jobs

after detecting, now we have retrieving deleted users and their details

we need this method to be public for now

finalize export method, add missing getter

clean up namespaces and get rid of unnecessary files

helper is not static anymore

cleanup according to scrutinizer

add cli tool to show deleted users

uses are necessary after recent namespace change

also remove user from mappings table on deletion

add occ command to delete users

fix use statement

improve output

big fixes / improvements

PHP doc

return true in userExists early for cleaning up deleted users

bump version

control state and interval with one config.php setting, now ldapUserCleanupInterval. 0 will disable it. enabled by default.

improve doc

rename cli method to be consistent with  others

introduce ldapUserCleanupInterval in sample config

don't show last login as unix epoche start when no  login happend

less log output

consistent namespace for OfflineUser

rename GarbageCollector to DeletedUsersIndex and move it to user subdir

fix unit tests

add tests for deleteUser

more test adjustements

Conflicts:
	apps/user_ldap/ajax/clearMappings.php
	apps/user_ldap/appinfo/app.php
	apps/user_ldap/lib/access.php
	apps/user_ldap/lib/helper.php
	apps/user_ldap/tests/helper.php
	core/register_command.php
	lib/private/preferences.php
	lib/private/user.php

add ldap:check-user to check user existance on the fly

Conflicts:
	apps/user_ldap/lib/helper.php

forgotten file

PHPdoc fixes, no code change

and don't forget to adjust tests
2014-12-19 19:47:54 +01:00
Victor Dubiniuk
c9fd3c9d29 Inject config 2014-12-10 01:13:38 +03:00
Victor Dubiniuk
303fce44f4 Use httphelper and cache response even when it empty 2014-12-06 20:17:47 +03:00
Morris Jobke
8ae8eb4734 drop dependency of some commands on old config object 2014-11-20 15:03:16 +01:00
Thomas Müller
136b0c22c9 Fix ctor call in OC\Core\Command\Upgrade 2014-11-03 13:53:59 +01:00
unclejamal3000
17f54a5fb6 Enhance question in DB migration script 2014-11-02 00:30:44 +01:00
Thomas Müller
2f19de11e4 adding console command to generate javascript translation files based on existing php translation files
read server side translations from json files
2014-10-29 10:09:12 +01:00
Robin Appelman
d4e929c37a Remove implicit prepared statement cache and get the connection from the server container in \OC_DB 2014-10-22 12:26:43 +02:00
Thomas Müller
a348a6f450 no loner use deprecated class \OC_Config 2014-09-22 12:04:48 +02:00
Thomas Müller
e655d32979 remove bootstrapping - occ can by definition only be executed if ownCloud is installed - base.php is required earlier already 2014-09-22 12:00:22 +02:00
Thomas Müller
43c191fffb show upgrade errors as error in the console and report back that the upgrade process failed if it did 2014-09-22 11:59:13 +02:00
kondou
b86e124e03 Warn user on resetting passwords via occ when encryption is enabled 2014-08-22 16:15:04 +02:00
Vincent Petry
ca690c4d02 Added RepairStep interface and default repair step lists
The updater is using "before update" repair steps and "regular" repair
steps.
The "regular" repair steps are also used by the CLI tool.

Currently no steps exist but can be added later in the static methods in
the \OC\Repair class.

Added unit test to test messaging, error and exception cases.
2014-06-12 17:38:26 +02:00
Vincent Petry
6fcd1af4db Add support for repair step classes
This also makes it possible to unit test each repair step class
individually
2014-06-12 17:38:26 +02:00
Vincent Petry
5e27ac3e0d Added CLI arguments for upgrade simulation steps
Added "dry run" argument to only run the update simulation.
Added argument to disable migration (useful for bigger setups where
table duplication would take too much space)
2014-06-06 10:11:14 +02:00
Vincent Petry
5b97369b00 Simulate apps database schema update on upgrade
When upgrade, also simulate the database schema update for apps before
doing the actual upgrade.
2014-06-04 17:16:44 +02:00
Lukas Reschke
705242d390 Merge pull request #8727 from owncloud/upgrade-overview
Added update overview page
2014-05-29 21:28:47 +02:00
Andreas Fischer
9fba8221a6 Merge pull request #8554 from owncloud/add_resetadminpass_command
Add a resetadminpass command to console

* owncloud/add_resetadminpass_command:
  Move resetpassword into user: command space.
  Document type of user project.
  Receive \OC\User\Manager as a constructor dependency.
  Use userManager, color output, return 1 on error
  Add doc, check return-value, fix spacing, require interactive
  Back to the future
  Make ResetAdminPass to ResetPassword
  Add a resetadminpass command to console - fix #8248
2014-05-29 14:43:27 +02:00
Andreas Fischer
678a6b98ff Merge pull request #8748 from owncloud/cli_maintenance_mode
Add ability to enable/disable maintenance mode from cli.

* owncloud/cli_maintenance_mode:
  Use OC\Config instead of OC_Config
  Changed class name to mode
  Add ability to enable/disable maintenance mode from cli.
2014-05-29 03:45:49 +02:00
Andreas Fischer
5754b0b9e7 Merge remote-tracking branch 'owncloud/master' into add_resetadminpass_command
* owncloud/master: (238 commits)
  Change visibility of scanner internals
  [tx-robot] updated from transifex
  remove legacy OC_Filesystem being used in a hook callback
  add title property to share dialog
  forgotten infobox messages translations
  reverts 188c543 and translates only mail
  fix warning text and margin
  Adjust core apps to use "requiremin" instead of "require"
  Added requiremin/requiremax fields for apps
  [tx-robot] updated from transifex
  unwrapped strings fix
  allow resharing of files with only share permissions
  don't lose file size during rename
  drop superflous statement in phpdoc
  add preRememberedLogin hook and document this and postRememberedLogin in class descripttion. Also fixes documentation of postLogin hook
  [tx-robot] updated from transifex
  fix grammar
  make user_ldap fully translatable
  [tx-robot] updated from transifex
  fix typo
  ...

Conflicts:
	core/register_command.php
2014-05-28 22:57:33 +02:00
Andreas Fischer
f81ee94cad Move resetpassword into user: command space. 2014-05-28 22:53:44 +02:00
Andreas Fischer
8981929e92 Document type of user project. 2014-05-28 22:48:35 +02:00
Andreas Fischer
52e7bf9630 Receive \OC\User\Manager as a constructor dependency. 2014-05-28 22:42:33 +02:00
scolebrook
43759f1f46 Use OC\Config instead of OC_Config 2014-05-28 16:26:13 -04:00
Lukas Reschke
ce9d5df6df Merge pull request #8681 from owncloud/logintimestamp
Record login timestamp per user. Required for new user managament.
2014-05-28 19:06:47 +02:00
scolebrook
00f811f09c Changed class name to mode 2014-05-28 09:41:34 -04:00
scolebrook
7151369e5f Add ability to enable/disable maintenance mode from cli. 2014-05-27 13:03:53 -04:00
Vincent Petry
02f682b156 Now showing disabled apps as upgrade status line
- Added app id in update overview.
- Added status message for disabled app for CLI upgrade and web upgrade
2014-05-27 15:20:33 +02:00
kondou
f216d81408 Use userManager, color output, return 1 on error 2014-05-24 09:49:02 +02:00
Arthur Schiwon
7f7999c7d8 print time in 24h format 2014-05-23 19:12:51 +02:00
Arthur Schiwon
e9fa74bfb7 save a whitespace 2014-05-23 10:55:54 +02:00
Arthur Schiwon
09bb8e0e3a add cli command to check a users last login 2014-05-23 10:37:34 +02:00
Thomas Müller
0249c6d8c7 Merge pull request #8634 from owncloud/handle-excpetions-in-console-master
Handle excpetions in console master
2014-05-22 10:30:33 +02:00
Thomas Müller
58e22cefaf fix description of console command maintenance:repair - fixes #8574 2014-05-19 15:29:38 +02:00
kondou
f75c863257 Add doc, check return-value, fix spacing, require interactive 2014-05-13 15:57:41 +02:00
Lukas Reschke
2a5e1a1885 Back to the future 2014-05-12 20:05:52 +02:00
kondou
e5e77b370a Make ResetAdminPass to ResetPassword 2014-05-12 16:10:59 +02:00
kondou
011bd0a1c4 Add a resetadminpass command to console - fix #8248 2014-05-12 15:33:26 +02:00
Andreas Fischer
603ce95211 Add message about unsupported Microsoft SQL Server. 2014-05-09 12:31:29 +02:00
Andreas Fischer
de78be3891 Store normalised DBMS type in $type. 2014-05-09 12:31:08 +02:00
Andreas Fischer
0a78fb49f5 Pass Connection instead of AbstractSchemaManager to clearSchema(). 2014-04-15 18:20:36 +02:00
Andreas Fischer
f1d05d204e Use exceptions for in input validation. 2014-04-15 18:14:26 +02:00
Andreas Fischer
854dd8fa7c Do not block when nothing is passed via stdin. 2014-04-15 18:04:54 +02:00
Andreas Fischer
d2c7a8ee59 Do not ask for password before input parameter validation. 2014-04-15 17:49:28 +02:00
Andreas Fischer
8e758513c8 Remove unnecessary sprintf. 2014-04-15 17:21:55 +02:00
Andreas Fischer
6b2876c64d Move (extended) input validation out into validateInput() method. 2014-04-15 17:20:31 +02:00
Andreas Fischer
5fe25868bc Add message for converting to SQLite being unsupported. 2014-04-15 17:14:26 +02:00
Andreas Fischer
9823d54bb8 Use a variable for the DBMS tyoe we are converting to. 2014-04-15 17:06:13 +02:00
Andreas Fischer
9cc41a2460 Move PostgreSQL sequence resynchronisation out into PgSqlTools class. 2014-04-14 18:37:47 +02:00
Andreas Fischer
b0e6542dc2 Add error handling for --clear-schema on Oracle. 2014-04-14 18:37:47 +02:00
Andreas Fischer
e3b0b40779 Do not quote table names on Oracle. They appear to be already quoted.
Without this commit, Oracle complains as follows:
  [Doctrine\DBAL\DBALException]
  An exception occurred while executing 'INSERT INTO "oc_appconfig" ("""appid""",
  """configkey""", """configvalue""") VALUES (?, ?, ?)' with params ["core",
  "installedat", "1396972927.537"]:

  ORA-01741: illegal zero-length identifier
2014-04-14 17:52:34 +02:00
Andreas Fischer
f35eae6442 Remove unnecessary +1 from PostgreSQL sequence correction query. 2014-04-11 21:56:14 +02:00
Andreas Fischer
94522586c1 Better variable names for table arrays. 2014-04-11 21:46:02 +02:00
Andreas Fischer
731571491f Improve message about tables not going to be converted. Mention --all-apps option. 2014-04-11 21:40:45 +02:00
Andreas Fischer
56b6504d59 Extract schema creation code into its own method. 2014-04-09 16:46:21 +02:00
Andreas Fischer
370593361b Add option to create all app schemas instead of just installed app. 2014-04-09 16:42:22 +02:00
Andreas Fischer
5ef7d69d41 Do not attempt to covert to the same DBMS. 2014-04-09 15:57:33 +02:00
Andreas Fischer
03a3f66867 Move schema clearing to extra method. 2014-04-09 15:45:30 +02:00
Andreas Fischer
3e0858e51f private -> protected 2014-04-09 15:21:57 +02:00
Thomas Müller
86ab1cf476 typos fixed
PHPDoc comments added
2014-04-01 22:17:31 +02:00
Andreas Fischer
01141e1520 Type hinting. 2014-03-31 21:07:48 +02:00
Andreas Fischer
b39a74ff6c Some more colors. 2014-03-31 20:51:30 +02:00
Andreas Fischer
f9853b253c Deduplicate connection handling code into \OC\DB\ConnectionFactory 2014-03-31 20:09:07 +02:00
Andreas Fischer
a585cec530 Remove unnecessary and incorrect comments. 2014-03-31 19:27:18 +02:00
Andreas Fischer
e67cf99cef \InvalidArgumentException is in root namespace. 2014-03-31 18:20:24 +02:00
Andreas Fischer
5dbbe6d08b Doc blocks for properties do not repeat the property name. 2014-03-31 18:20:04 +02:00
Andreas Fischer
b002f11771 Use question color. 2014-03-31 17:06:06 +02:00
Andreas Fischer
e768ead820 Remove whitespace at end of lines. 2014-03-31 17:06:02 +02:00
Andreas Fischer
2d69c4c2d3 Merge remote-tracking branch 'owncloud/master' into db-convert-tool
* owncloud/master: (663 commits)
  [tx-robot] updated from transifex
  [tx-robot] updated from transifex
  Sub-dir was prepended twice
  Sub-dir was prepended twice
  [tx-robot] updated from transifex
  Use UrlGenerator in OC\Util::redirectToDefaultPage(). Fix #7936
  Emit event after setting a new expiration for a share
  adding @method annotation to declare methods which can be called on the wrapped statement object
  Fix CURLOPT_FOLLOWLOCATION bug with open_basedir or safe_mode restriction enabled.
  don't write file if opening a stream to encrypt the data fails
  Do not retrieve storage stats for trash bin
  [tx-robot] updated from transifex
  prevent dimmed ocdialog div from scrolling
  fix breadcrumbs for IE8
  enable SVG->PNG fallback for 'New' menu
  enable SVG->PNG fallback for newly uploaded files and folders
  specify logo to not repeat when container is bigger
  fix SVG replacement for logo so it works in IE8, fix #7866
  Fix swift touch operation
  [tx-robot] updated from transifex
  ...

Conflicts:
	3rdparty
2014-03-31 15:33:01 +02:00
Thomas Müller
6ff96b34ad Merge branch 'master' into load-apps-proper-master
Conflicts:
	apps/files/ajax/rawlist.php
	cron.php
	ocs/v1.php
2014-03-21 14:05:08 +01:00
Thomas Müller
6b9ae27b90 drop file cache migration OC5 -> OC6 2014-03-18 17:14:38 +01:00
Vincent Petry
1a116828cf Added warning for trusted_domains after CLI upgrade
If trusted_domains is not set after a CLI upgrade, show a warning in the
output.
2014-03-14 11:16:45 +01:00
Scrutinizer Auto-Fixer
adaee6a5a1 Scrutinizer Auto-Fixes
This patch was automatically generated as part of the following inspection:
https://scrutinizer-ci.com/g/owncloud/core/inspections/cdfecc4e-a37e-4233-8025-f0d7252a8720

Enabled analysis tools:
 - PHP Analyzer
 - JSHint
 - PHP Copy/Paste Detector
 - PHP PDepend
2014-02-19 09:31:54 +01:00
Bart Visscher
8a6dcdf4a4 Move password interaction to interact function 2014-02-17 18:09:42 +01:00
Bart Visscher
bcb78e48b2 Split execute function into multiple functions 2014-02-17 18:02:58 +01:00
Bart Visscher
ae525d1f12 Fix namespace for Exception 2014-02-12 17:42:55 +01:00
Bart Visscher
3abcd13979 Allow converting from any db type 2014-02-11 18:01:41 +01:00
Bart Visscher
eede20c5ac Check target DB type 2014-02-11 17:59:50 +01:00
Thomas Müller
79fc4f3126 Within OC:init() the minimum set of apps is loaded - which is filesystem, authentication and logging 2014-02-06 11:34:27 +01:00
Thomas Müller
afbe50d09c remove global variable $RUNTIME_NOAPPS - it's just superfluous 2014-02-06 09:44:13 +01:00
Bart Visscher
b57299f727 Merge branch 'master' into db-convert-tool
Conflicts:
	3rdparty
2014-01-30 18:16:55 +01:00
Bart Visscher
2638fd4767 Postgresql needs the sequences adjusted after the inserts 2014-01-11 12:25:35 +01:00
Bart Visscher
af3bedf985 Add option to remove all the tables from the destination database 2014-01-11 12:23:28 +01:00
Bart Visscher
1b7eb4dc6c Quote column names on insert 2014-01-11 12:22:23 +01:00
Arthur Schiwon
bc1235d325 Add command line tool to show numbers of users and user directories 2014-01-07 23:06:37 +01:00
Bart Visscher
4e1a3f212f Review points 2013-12-24 13:44:35 +01:00
Bart Visscher
202e26647e Inject config object 2013-12-24 13:36:32 +01:00
Bart Visscher
731e83c35a Save the new database config 2013-12-07 15:14:54 +01:00
Bart Visscher
22edc42f54 Add UTF8 charset to connection params 2013-12-07 15:09:36 +01:00
Bart Visscher
e4c31b362e Add command for converting sqlite database to server based one 2013-12-07 14:44:23 +01:00
Robin Appelman
10d84f6e9b Add a (currently) empty system for running common repair steps 2013-11-26 14:12:48 +01:00
Robin Appelman
9fbccc83e3 merge master into single-user-mode 2013-11-25 21:25:04 +01:00
Robin Appelman
abe63bd329 Add occ command to list all apps 2013-11-25 17:34:16 +01:00
Robin Appelman
fc1d897ea5 rename app_id to app-id 2013-11-25 17:28:01 +01:00
Robin Appelman
a324c09e6c Add occ command to enable and disable single user mode 2013-11-25 15:27:05 +01:00
Robin Appelman
d3bfb433d1 add occ commands for enabling and disabling apps 2013-11-25 13:20:16 +01:00
Andreas Fischer
70111ea299 Add some color to the occ upgrade output. 2013-10-28 22:26:44 +01:00
Andreas Fischer
b8dbec0da4 Use "else if" to remove one level of indentation. 2013-10-28 22:22:59 +01:00
ringmaster
f130caa4a2 Missed one write()->writeln(). Fixed. 2013-10-28 17:06:36 -04:00
ringmaster
bca1e12597 Use writeln() instead of write() 2013-10-28 16:53:36 -04:00
ringmaster
d1c5e5d777 Use the OutputInterface for output and return error codes. 2013-10-28 16:50:28 -04:00