#!/usr/bin/env python3 """Print where a project's files are, then the shell takes over. Shown in Shell>shell when it opens, because the first question there is always "where am I". It reads the project's own file and nothing else. """ import os import sys sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) import project as pj def main(): folder = os.path.abspath(sys.argv[1] if len(sys.argv) > 1 else os.getcwd()) cfg = pj.load(folder) home = os.path.expanduser("~") rows = [ ("project folder", folder), ("task worktrees", os.path.join(folder, ".paperclip", "worktrees")), ("this project's file", pj.path(folder)), ("harness commands", os.path.join(os.path.dirname(os.path.abspath(__file__)))), ("pi conversations", os.path.join(home, ".pi", "paperclips")), ("pi skills you own", os.path.join(home, ".agents", "skills")), ("paperclip data", os.path.join(home, ".paperclip", "instances", "default")), ("session", cfg.get("session", "")), ("watching", cfg.get("watching", "")), ] inner = 70 label = max(len(k) for k, _ in rows) + 2 print("┌─ where things are " + "─" * (inner - 19) + "┐") for k, v in rows: room = inner - label - 2 if len(v) > room: v = v[: room - 1] + "…" line = " " + k.ljust(label) + v print("│" + line.ljust(inner) + "│") print("└" + "─" * inner + "┘") print(""" the panes are the normal way to work. this shell is for the commands we do not wrap: bin/merge checks and merges one task (the Merge tab in Work>work does this) bin/review the review on its own bin/board rebuild or repair the panes (or press R in Repair>repair) bin/office adopt another folder as a project """) if __name__ == "__main__": try: main() except Exception as exc: # a banner must never stop the shell opening print("(no project file here: %s)" % exc)