How to use the js-git/lib/modes.exec function in js-git

To help you get started, we’ve selected a few js-git examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github creationix / git-tree / git-tree.js View on Github external
Object.keys(tree).forEach(function (key) {
        var entry = tree[key];

        // Copy non-rules as-is
        if (entry.mode !== modes.exec || !/\.rule$/.test(key)) {
          newTree[key] = entry;
          return;
        }

        var childPath = path ? path + "/" + key : key;
        var childRule = {
          path: childPath,
          root: root,
          hash: entry.hash
        };
        key = key.substring(0, key.length - 5);
        local[key] = loadRule(childPath, childRule);
      });
github creationix / tedit / src / data / git-tree.js View on Github external
var entry = tree[part];
          var newPath = partial ? partial + "/" + part : part;

          // If the child is a commit, make sure it's initialized
          if (entry && entry.mode === modes.commit) {
            if (!storage.hasRepo(newPath)) {
              if (callback) {
                return storage.initializeRepo(root, entry.hash, newPath, onLoad);
              }
              throw new Error("Missing repo at '" + newPath + "'");
            }
          }

          // When in baked mode, always be looking for executable rule entries.
          var ruleEntry = tree[part + ".rule"];
          if (bake && ruleEntry && ruleEntry.mode === modes.exec) {
            // Remember them for future reference.
            rules.push({
              path: newPath,
              root: root,
              hash: ruleEntry.hash
            });
          }

          if (!entry) {
            // If you get here, the entry didn't match
            // In raw-mode this is a no-find.
            if (!bake) break;
            // In bake mode, look for rule that may serve this path.
            return searchRules();
          }
github creationix / wheaty / wheaty.js View on Github external
}
      // Fall through down to static file handler.
    }
    // Otherwise render a index file
    else {
      return [200, {
        "ETag": '"' + meta.hash + '-html"',
        "Content-Type": "text/html",
      }, bodec.fromUnicode(formatTree(tree, url))];
    }
  }

  if (modes.isFile(meta.mode)) {
    var body = yield meta.repo.loadAs("blob", meta.hash);

    if (meta.mode === modes.exec) {
      // #! but not #!/
      if (body[0] === 0x23 && body[1] === 0x21 && body[2] !== 0x2f) {
        var i = 2;
        var language = "";
        while (i < body.length && body[i] !== 0x0d && body[i] !== 0x0a) {
          language += String.fromCharCode(body[i++]);
        }
        var runtime = runtimes[language];
        if (!runtime) {
          throw new Error("Invalid runtime specified: " + JSON.stringify(language));
        }
        body = bodec.slice(body, i);
        if (runtime.constructor === Function) {
          return runtime(pathToEntry, url, body);
        }
        return yield* runtime(pathToEntry, url, body);
github creationix / tedit / src / ui / tree-6.js View on Github external
}
  }
  if (row.mode === modes.commit) {
    if (fs.isDirty(row.path)) actions.push(
      {sep:true},
      {icon:"floppy", label:"Commit Changes", action: commitChanges},
      {icon:"ccw", label:"Revert all Changes", action: revertChanges}
    );
    // if (!config.githubName) {
    //   actions.push({sep:true});
    //   actions.push({icon:"download-cloud", label:"Pull from Remote"});
    //   actions.push({icon:"upload-cloud", label:"Push to Remote"});
    // }
  }
  else if (modes.isFile(row.mode)) {
    var label = (row.mode === modes.exec) ?
      "Make not Executable" :
      "Make Executable";
    actions.push(
      {sep:true},
      {icon:"asterisk", label: label, action: toggleExec}
    );
  }
  if (row.path) actions.push(
    {sep:true},
    {icon:"pencil", label:"Move " + type, action: moveEntry},
    {icon:"docs", label:"Copy " + type, action: copyEntry},
    {icon:"trash", label:"Delete " + type, action: removeEntry}
  );
  actions.push(
    {sep:true},
    {icon:"globe", label:"Serve Over HTTP"},
github creationix / wheaty / server.js View on Github external
url = pathJoin(url, "index.html");
      // Fall through down to static file handler.
    }
    // Otherwise render a index file
    else {
      return [200, {
        "ETag": '"' + meta.hash + '-html"',
        "Content-Type": "text/html",
      }, bodec.fromUnicode(formatTree(tree))];
    }
  }

  if (modes.isFile(meta.mode)) {
    var body = yield repo.loadAs("blob", meta.hash);

    if (meta.mode === modes.exec) {
      // #! but not #!/
      if (body[0] === 0x23 && body[1] === 0x21 && body[2] !== 0x2f) {
        var i = 2;
        var language = "";
        while (i < body.length && body[i] !== 0x0d && body[i] !== 0x0a) {
          language += String.fromCharCode(body[i++]);
        }
        var runtime = runtimes[language];
        if (!runtime) {
          throw new Error("Invalid runtime specified: " + JSON.stringify(language));
        }
        body = bodec.slice(body, i);
        if (runtime.constructor === Function) {
          return runtime(load, url, body);
        }
        return yield* runtime(load, url, body);
github creationix / git-tree / git-tree.js View on Github external
var entry = tree[part];
          var newPath = partial ? partial + "/" + part : part;

          // If the child is a commit, make sure it's initialized
          if (entry && entry.mode === modes.commit) {
            if (!storage.hasRepo(newPath)) {
              if (callback) {
                return storage.initializeRepo(root, entry.hash, newPath, onLoad);
              }
              throw new Error("Missing repo at '" + newPath + "'");
            }
          }

          // When in baked mode, always be looking for executable rule entries.
          var ruleEntry = tree[part + ".rule"];
          if (bake && ruleEntry && ruleEntry.mode === modes.exec) {
            // Remember them for future reference.
            rules.push({
              path: newPath,
              root: root,
              hash: ruleEntry.hash
            });
          }

          if (!entry) {
            // If you get here, the entry didn't match
            // In raw-mode this is a no-find.
            if (!bake) break;
            // In bake mode, look for rule that may serve this path.
            return searchRules();
          }
github creationix / wheaty / wheaty.js View on Github external
return escapeMap[char];
  });
}

var typeNames = {};
typeNames[modes.commit] = "Submodule";
typeNames[modes.tree] = "Directory";
typeNames[modes.blob] = "File";
typeNames[modes.exec] = "Executable File";
typeNames[modes.sym] = "Symbolic Link";

var iconNames = {};
iconNames[modes.commit] = "icon-box";
iconNames[modes.tree] = "icon-folder-open";
iconNames[modes.blob] = "icon-doc";
iconNames[modes.exec] = "icon-cog";
iconNames[modes.sym] = "icon-link";

function formatTree(tree, path) {
  return "<style>\n" +
    "  @font-face {\n" +
    "    font-family: 'fontello';\n" +
    "    src: url('data:application/octet-stream;base64,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') format('woff'),\n" +
    "         url('data:application/octet-stream;base64,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') format('truetype');\n" +
    "  }\n" +
    '  [class^="icon-"]:before, [class*=" icon-"]:before {\n' +
    '    font-family: "fontello";\n' +
    "    font-style: normal;\n" +
    "    font-weight: normal;\n" +
    "    speak: none;\n" +
    "\n" +
    "    display: inline-block;\n" +</style>