aboutsummaryrefslogtreecommitdiff
path: root/cmd/errors.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/errors.go')
-rw-r--r--cmd/errors.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/cmd/errors.go b/cmd/errors.go
new file mode 100644
index 0000000..07a1d05
--- /dev/null
+++ b/cmd/errors.go
@@ -0,0 +1,42 @@
+/*
+ * errors.go - Common errors and error handling
+ *
+ * Copyright 2017 Google Inc.
+ * Author: Joe Richey (joerichey@google.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package cmd
+
+import (
+ "github.com/pkg/errors"
+
+ "github.com/google/fscrypt/util"
+)
+
+// Common errors used across commands
+var (
+ ErrUnknownVersion = errors.New("unknown (missing version tag)")
+ ErrCanceled = errors.New("operation canceled by user")
+ ErrMustForce = errors.New("operation must be forced")
+ ErrNotRoot = errors.New("operation must be run as root")
+)
+
+// CheckIfRoot returns an error if the current user is not the root user.
+func CheckIfRoot() error {
+ if id := util.CurrentUserID(); id != 0 {
+ return errors.Wrapf(ErrNotRoot, "user %s", util.GetUser(id).Username)
+ }
+ return nil
+}