123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- "use strict";
- const { Cc, Ci, Cu, CC } = require("chrome");
- const Services = require("Services");
- const l10n = require("gcli/l10n");
- const dirService = Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties);
- function showFolder(aPath) {
- let nsLocalFile = CC("@mozilla.org/file/local;1", "nsILocalFile",
- "initWithPath");
- try {
- let file = new nsLocalFile(aPath);
- if (file.exists()) {
- file.reveal();
- return l10n.lookupFormat("folderOpenDirResult", [aPath]);
- } else {
- return l10n.lookup("folderInvalidPath");
- }
- } catch (e) {
- return l10n.lookup("folderInvalidPath");
- }
- }
- exports.items = [
- {
- name: "folder",
- description: l10n.lookup("folderDesc")
- },
- {
- item: "command",
- runAt: "client",
- name: "folder open",
- description: l10n.lookup("folderOpenDesc"),
- params: [
- {
- name: "path",
- type: { name: "string", allowBlank: true },
- defaultValue: "~",
- description: l10n.lookup("folderOpenDir")
- }
- ],
- returnType: "string",
- exec: function(args, context) {
- let dirName = args.path;
- // replaces ~ with the home directory path in unix and windows
- if (dirName.indexOf("~") == 0) {
- let homeDirFile = dirService.get("Home", Ci.nsIFile);
- let homeDir = homeDirFile.path;
- dirName = dirName.substr(1);
- dirName = homeDir + dirName;
- }
- return showFolder(dirName);
- }
- },
- {
- item: "command",
- runAt: "client",
- name: "folder openprofile",
- description: l10n.lookup("folderOpenProfileDesc"),
- returnType: "string",
- exec: function(args, context) {
- // Get the profile directory.
- let currProfD = Services.dirsvc.get("ProfD", Ci.nsIFile);
- let profileDir = currProfD.path;
- return showFolder(profileDir);
- }
- }
- ];
|