From 3b2d97d45af49645b55d807687482ad3ff8f9c76 Mon Sep 17 00:00:00 2001 From: Alexander Gehrke Date: Sat, 18 May 2024 12:37:15 +0200 Subject: [PATCH] Large refactor and cleanup, Kitty graphics WIP --- build.sc | 31 --- copret/.scalafmt.conf | 12 + copret/project.scala | 10 + copret/src/Theme.scala | 6 +- copret/src/images.scala | 139 +++++++++++ copret/src/keys.scala | 77 +++--- copret/src/main.scala | 16 ++ copret/src/slides.scala | 234 ++++++++++--------- copret/src/templates.scala | 24 +- copret/src/terminal.scala | 152 ++++++------ examples/.gitignore | 1 + examples/git-presentation.sc | 425 ++++++++++++++++++++++++++++++++++ examples/img/git-logo.png | Bin 0 -> 3783 bytes examples/img/repo-graph-i.png | Bin 0 -> 142204 bytes examples/img/repo-graph.png | Bin 0 -> 144234 bytes examples/present.sc | 375 ------------------------------ examples/query.sc | 14 ++ examples/slides/01wozu.md | 7 + examples/slides/02branches.md | 18 ++ examples/slides/02summary.md | 16 ++ 20 files changed, 936 insertions(+), 621 deletions(-) delete mode 100644 build.sc create mode 100644 copret/.scalafmt.conf create mode 100644 copret/project.scala create mode 100644 copret/src/images.scala create mode 100644 copret/src/main.scala create mode 100644 examples/.gitignore create mode 100755 examples/git-presentation.sc create mode 100644 examples/img/git-logo.png create mode 100644 examples/img/repo-graph-i.png create mode 100644 examples/img/repo-graph.png delete mode 100755 examples/present.sc create mode 100755 examples/query.sc create mode 100644 examples/slides/01wozu.md create mode 100644 examples/slides/02branches.md create mode 100644 examples/slides/02summary.md diff --git a/build.sc b/build.sc deleted file mode 100644 index 662071b..0000000 --- a/build.sc +++ /dev/null @@ -1,31 +0,0 @@ -import mill._, scalalib._, publish._ -import $ivy.`com.lihaoyi::mill-contrib-bloop:0.9.5` - -object copret extends ScalaModule with PublishModule { - def scalaVersion = "3.1.0" - override def ammoniteVersion = "2.5.3" - - - def publishVersion = "0.0.2-SNAPSHOT" - def pomSettings = PomSettings( - description = "Use ammonite scripts for command line presentations", - organization = "de.qwertyuiop", - versionControl = VersionControl( - browsableRepository = Some("https://git.qwertyuiop.de/crater2150/copret"), - connection = Some(VersionControlConnection.gitHttps("git.qwertyuiop.de", "crater2150/copret.git")), - developerConnection = Some(VersionControlConnection.gitSsh( - "qwertyuiop.de", "crater2150/copret.git", username = Some("git") - )), - ), - url = "https://qwertyuiop.de/copret/", - licenses = Seq(License.MIT), - developers = Seq(Developer("crater2150", "Alexander Gehrke", "https://git.qwertyuiop.de/crater2150")) - ) - - def ivyDeps = Agg( - ivy"org.jline:jline:3.19.0", - ivy"com.lihaoyi::ammonite-ops:2.3.8".withDottyCompat(scalaVersion()), - ivy"com.lihaoyi::fansi:0.2.14", - ) -} - diff --git a/copret/.scalafmt.conf b/copret/.scalafmt.conf new file mode 100644 index 0000000..feb071c --- /dev/null +++ b/copret/.scalafmt.conf @@ -0,0 +1,12 @@ +version = "3.7.10" + +maxColumn = 120 +assumeStandardLibraryStripMargin = true +align.preset = most +align.multiline = true +rewrite.rules = [SortModifiers] +trailingCommas = always +runner.dialect = scala3 +includeNoParensInSelectChains = false +optIn.breakChainOnFirstMethodDot = false +rewrite.scala3.insertEndMarkerMinLines = 30 diff --git a/copret/project.scala b/copret/project.scala new file mode 100644 index 0000000..a832969 --- /dev/null +++ b/copret/project.scala @@ -0,0 +1,10 @@ +//> using scala 3.3 +//> using packaging.packageType library + +//> using publish.organization de.qwertyuiop +//> using publish.name copret +//> using publish.version 0.0.2 +//> using dep org.typelevel::cats-core:2.10.0 +//> using dep org.jline:jline:3.26.1 +//> using dep com.lihaoyi::os-lib:0.10.0 +//> using dep com.lihaoyi::fansi:0.5.0 diff --git a/copret/src/Theme.scala b/copret/src/Theme.scala index f208f7a..e214be3 100644 --- a/copret/src/Theme.scala +++ b/copret/src/Theme.scala @@ -1,6 +1,8 @@ package de.qwertyuiop.copret import de.qwertyuiop.copret.syntax._ -import ammonite.ops.{%%, pwd} + +def %%(command: os.Shellable*)(cwd: os.Path = null): os.CommandResult = + os.proc(command).call(cwd = cwd) case class Theme(styles: Map[String, fansi.Attrs], figletFonts: Map[String, String]): def style(key: String, default: fansi.Attrs = fansi.Attrs()) = @@ -28,7 +30,7 @@ object Format: def center(str: String) = " " * ((columns - str.length) / 2) + str - def figlet(str: String, font: String) = %%("figlet", "-t", "-f", font, str)(pwd).out.string + def figlet(str: String, font: String):String = new String(%%("figlet", "-t", "-f", font, str)().out.bytes) def centerLines(str: String) = str.split("\n").map(center).mkString("\n") def centerBlock(str: String) = diff --git a/copret/src/images.scala b/copret/src/images.scala new file mode 100644 index 0000000..6820a36 --- /dev/null +++ b/copret/src/images.scala @@ -0,0 +1,139 @@ +package de.qwertyuiop.copret + +import Terminal.* + +object KittyGraphicsProtocol: + val MaxID = 4294967295L // max 32-bit unsigned + + def checkSupport = + queryTerm(s"${apc}Gi=${KittyGraphicsProtocol.MaxID},s=1,v=1,a=q,t=d,f=24;AAAA${st}${csi}c") + .contains(s"${apc}Gi=${KittyGraphicsProtocol.MaxID}") + + def showImage(img: os.Path) = + import java.util.Base64 + val image = Base64.getEncoder.encodeToString(os.read.bytes(img)) + if image.length > 4096 then + val chunks = image.grouped(4096).toVector + + s"${apc}Gf=100,t=d,m=1,a=T;${chunks.head}${st}" + + chunks.tail.init.map(c => s"${apc}Gm=1;${c}${st}").mkString + + s"${apc}Gm=0;${chunks.last}${st}" + else s"${apc}Gf=100,t=d,a=T;${image}${st}" + + trait Param: + def code: String + + enum Action(val encoded: Char) extends Param: + case Transmit extends Action('t') // - transmit data + case TransmitShow extends Action('T') // - transmit data and display image + case Query extends Action('q') // - query terminal + case Show extends Action('p') // - put (display) previous transmitted image + case Delete(what: DelType, free: Boolean) extends Action('d') // - delete image + case Animation extends Action('a') // - control animation + case AnimationFrame extends Action('f') // - transmit data for animation frames + case AnimationCompose extends Action('c') // - compose animation frames + + def code: String = this match + case Delete(action, free) => + "d=" + (if free then action.code.capitalize else action.code) + case other => s"a=${other.encoded}" + + enum Responses(val code: String) extends Param: + case All extends Responses("q=0") + case NoOk extends Responses("q=1") + case NoError extends Responses("q=2") + + enum Format(val code: String) extends Param: + case RGB(width: Int, height: Int) extends Format(s"f=24,s=${width},v=${height}") + case RGBA(width: Int, height: Int) extends Format(s"f=32,s=${width},v=${height}") + case PNG extends Format("f=100") + + enum Medium(val code: String) extends Param: + case Direct extends Medium("t=d") + case File extends Medium("t=f") + case TempFile extends Medium("t=t") + case SharedMemory extends Medium("t=s") + + enum AnimationState(val code: String) extends Param: + case Stop extends AnimationState("s=1") + case WaitFrame extends AnimationState("s=2") + case Run extends AnimationState("s=3") + + private def delType(what: Char, freeData: Boolean) = + s"a=d,d=${if freeData then what.toUpper else what}" + enum DelType extends Param: + case AllPlacements + case ById(id: Int) + case ByNumber(num: Int) + case AtCursor + case Frames + case AtPosition(x: Int, y: Int, z: Int = -1) + case ByIdRange(from: Int, to: Int) + case ByColumn(x: Int) + case ByRow(y: Int) + case ByZIndex(z: Int) + + def code: String = this match + case AllPlacements => "a" + case ById(id) => s"i,i=$id" + case ByNumber(num) => s"n,I=$num" + case AtCursor => "c" + case Frames => "f" + case AtPosition(x, y, z) => + val (what, zarg) = if z >= 0 then ("q", s",z=$z") else ("p", "") + what + s",x=$x,y=$y" + zarg + case ByIdRange(x, y) => s"r,x=$x,y=$y" + case ByColumn(x) => s"x,x=$x" + case ByRow(y) => s"y,y=$y" + case ByZIndex(z) => s"z,z=$z" + + def optionInts(values: (Int, Char)*) = + values.flatMap((value, key) => Option.when(value >= 0)(s"${key}=${value}")).mkString(",") + + case class SimpleParam(val code: String) extends Param + + def Filesize(bytes: Int) = SimpleParam(s"S=$bytes") + def Offset(bytes: Int) = SimpleParam(s"O=$bytes") + def ImageID(id: Int) = SimpleParam(s"i=$id") + def ImageNumber(num: Int) = SimpleParam(s"I=$num") + def PlacementID(id: Int) = SimpleParam(s"p=$id") + def ZIndex(zindex: Int) = SimpleParam(s"z=$zindex") + def Parent(id: Int) = SimpleParam(s"P=$id") + def ParentPlacement(id: Int) = SimpleParam(s"Q=$id") + def RelativeOffset(x: Int = -1, y: Int = -1) = SimpleParam( + optionInts((x, 'H'), (y, 'V')), + ) + + val CompressZlib = SimpleParam("o=z") + val ContinueChunk = SimpleParam("m=1") + val DontMoveCursor = SimpleParam("C=1") + val UnicodePlaceholder = SimpleParam("U=1") + + def Crop( + originX: Int = -1, + originY: Int = -1, + width: Int = -1, + height: Int = -1, + ) = + SimpleParam( + optionInts((originX, 'x'), (originY, 'y'), (width, 'w'), (height, 'h')), + ) + + def AnimFrameUpdate( + originX: Int = -1, + originY: Int = -1, + baseID: Int = -1, + editID: Int = -1, + ) = + SimpleParam: + optionInts((originX, 'x'), (originY, 'y'), (baseID, 'c'), (editID, 'r')) + + def AnimGap(millis: Int) = SimpleParam(s"z=$millis") + val AnimUseOverwrite = SimpleParam("X=1") + + def CellOffset(x: Int = -1, y: Int = -1) = SimpleParam: + optionInts((x, 'X'), (y, 'Y')) + + def DisplayCells(cols: Int = -1, rows: Int = -1) = SimpleParam: + optionInts((cols, 'c'), (rows, 'r')) +end KittyGraphicsProtocol diff --git a/copret/src/keys.scala b/copret/src/keys.scala index 1924b57..9360d6a 100644 --- a/copret/src/keys.scala +++ b/copret/src/keys.scala @@ -1,6 +1,6 @@ package de.qwertyuiop.copret -import ammonite.ops.Path +import os.Path enum SlideAction: case Start @@ -15,50 +15,59 @@ enum SlideAction: case Other(code: List[Int]) def show: String = this match - case Start => "go to first slide" + case Start => "go to first slide" case Goto(slideIndex: Int) => s"jump directly to slide $slideIndex" - case GotoSelect => "jump to slide" - case Prev => "previous slide (skip animations)" - case Next => "next slide" - case QuickNext => "next slide (skip animations)" - case Quit => "quit" - case Help => "show help" - case Interactive(cmd: Vector[String], wd: Path) => s"execute command \"${cmd.mkString(" ")}\"" + case GotoSelect => "jump to slide" + case Prev => "previous slide (skip animations)" + case Next => "next slide" + case QuickNext => "next slide (skip animations)" + case Quit => "quit" + case Help => "show help" + case Interactive(cmd: Vector[String], wd: Path) => + s"execute command \"${cmd.mkString(" ")}\"" case Other(code: List[Int]) => s"Unknown key sequence: $code" - object SlideAction: - def runForeground(cmd: String*)(implicit wd: Path) = Interactive(cmd.toVector, wd) + def runForeground(cmd: String*)(implicit wd: Path) = + Interactive(cmd.toVector, wd) import SlideAction.* case class Keymap(bindings: Map[Key, SlideAction]): - private val lookup = bindings.map((k,v) => k.codes -> v) - def apply(keycode: List[Int]): SlideAction = lookup.getOrElse(keycode, Other(keycode)) + private val lookup = bindings.map((k, v) => k.codes -> v) + def apply(keycode: List[Int]): SlideAction = + lookup.getOrElse(keycode, Other(keycode)) - def extend(newBindings: Map[Key, SlideAction]) = Keymap(bindings ++ newBindings) + def extend(newBindings: Map[Key, SlideAction]) = Keymap( + bindings ++ newBindings + ) def ++(newBindings: Map[Key, SlideAction]) = extend(newBindings) def help: String = - bindings.toSeq.sortBy(_._2.toString).map((k,v) => k.show.padTo(8, ' ') + " " + v.show).mkString("\n") + bindings.toSeq + .sortBy(_._2.toString) + .map((k, v) => k.show.padTo(8, ' ') + " " + v.show) + .mkString("\n") object Keymap: - val empty = Keymap(Map()) - val default = Keymap(Map( - Key.Up -> Prev, - Key.Left -> Prev, - Key.PageUp -> Prev, - Key('k') -> Prev, - Key.Space -> Next, - Key('j') -> Next, - Key.Down -> QuickNext, - Key.Right -> QuickNext, - Key.PageDown -> QuickNext, - Key('q') -> Quit, - Key('g') -> Start, - Key.Enter -> Start, - Key('s') -> GotoSelect, - Key('?') -> Help, - )) + val empty = Keymap(Map()) + // format: off + val default = Keymap(Map( + Key.Up -> Prev, + Key.Left -> Prev, + Key.PageUp -> Prev, + Key('k') -> Prev, + Key.Space -> Next, + Key('j') -> Next, + Key.Down -> QuickNext, + Key.Right -> QuickNext, + Key.PageDown -> QuickNext, + Key('q') -> Quit, + Key('g') -> Start, + Key.Enter -> Start, + Key('s') -> GotoSelect, + Key('?') -> Help, + )) + //format: on enum Key: case Code(name: String, codepoints: List[Int]) @@ -66,13 +75,13 @@ enum Key: def codes: List[Int] = this match - case Code(_, cp) => cp + case Code(_, cp) => cp case Printable(char) => List(char.toInt) def show: String = this match case Code(name, _) => name - case Printable(c) => c.toString + case Printable(c) => c.toString object Key: def apply(char: Char): Key = Printable(char) diff --git a/copret/src/main.scala b/copret/src/main.scala new file mode 100644 index 0000000..16f7649 --- /dev/null +++ b/copret/src/main.scala @@ -0,0 +1,16 @@ +package de.qwertyuiop.copret + +import de.qwertyuiop.copret.Terminal.* + +@main def main = + enterRawMode() + // print(queryTerm(s"${apc}Gi=31,s=10,v=2,t=s;L3NvbWUtc2hhcmVkLW1lbW9yeS1uYW1lCg==\u001b\\")) + // print(queryTerm(s"\u001b[6n")) + val canHazGraphics = queryTerm(s"${apc}Gi=${KittyGraphicsProtocol.MaxID},s=1,v=1,a=q,t=d,f=24;AAAA${st}${csi}c") + println(canHazGraphics.contains(s"${apc}Gi=${KittyGraphicsProtocol.MaxID}")) + // println( + // KittyGraphicsProtocol.showImage( + // os.Path("/home/crater2150/org/opencolloq/gittalk/img/repo-graph.png"), + // ), + // ) + // println(getSize) diff --git a/copret/src/slides.scala b/copret/src/slides.scala index 58a8406..eaa2557 100644 --- a/copret/src/slides.scala +++ b/copret/src/slides.scala @@ -1,103 +1,121 @@ package de.qwertyuiop.copret -import ammonite.ops._ -import Terminal._ -import syntax._ +import os.Path -case class Presentation(slides: Vector[Slide], meta: Map[String, String] = Map.empty): +import Terminal.* +import syntax.* + +case class Presentation( + slides: Vector[Slide], + meta: Map[String, String] = Map.empty, +): def start(using keymap: Keymap = Keymap.default) = Terminal.enterRawMode() Terminal.hideCursor() + Thread.sleep(1000) run() import Presentation._ def run()(using keymap: Keymap) = import SlideAction.* - @annotation.tailrec def rec(p: Presentation, pos: Int, action: SlideAction): Unit = + @annotation.tailrec + def rec(pos: Int, action: SlideAction): Unit = + + inline def redraw() = rec(pos - 1, QuickNext) + + inline def navigate(pos: Int, condition: Boolean, direction: Int)( + executor: Int => Slide => Unit, + ) = + if condition then + executor(pos + direction)(slides(pos)) + rec(pos + direction, waitkey) + else rec(pos, waitkey) + + inline def runInteractive(cmd: Vector[String], path: Path) = + Terminal.showCursor() + try os.proc(cmd).call(cwd = path) + catch case _ => () + Terminal.hideCursor() + Terminal.clear() + redraw() + action match - case Start => - executeSlide(p, 0)() - rec(p, 0, waitkey) - case Next => - if pos + 1 < p.slides.size then - executeSlide(p, pos + 1)() - rec(p, pos + 1, waitkey) - else - rec(p, pos, waitkey) - case QuickNext => - if pos + 1 < p.slides.size then - executeQuick(p, pos + 1)() - rec(p, pos + 1, waitkey) - else rec(p, pos, waitkey) - case Prev => - if pos > 0 then - executeQuick(p, pos - 1)() - rec(p, pos - 1, waitkey) - else - rec(p, pos, waitkey) - case Interactive(cmd, path) => - Terminal.showCursor() - try - %(cmd)(path) - catch case _ => () - Terminal.hideCursor() - Terminal.clear() - rec(p, pos - 1, QuickNext) + case Start => navigate(0, true, 0)(executeSlide) + case Next => navigate(pos, pos + 1 < slides.size, 1)(executeSlide) + case QuickNext => navigate(pos, pos + 1 < slides.size, 1)(executeQuick) + case Prev => navigate(pos, pos > 0, -1)(executeQuick) + case Interactive(cmd, path) => runInteractive(cmd, path) + case Goto(target) => for i <- 0 until target - do executeSilent(p, i)() - rec(p, target - 1, QuickNext) + do executeSilent(i)() + rec(target - 1, QuickNext) + case GotoSelect => - val maxSlide = p.slides.size - 1 - val target = prompt(s"Go to slide (0 - $maxSlide):", _.toIntOption)( - (res, input) => res.filter((0 to maxSlide).contains).isEmpty && input.nonEmpty, - in => s"No such slide: $in (empty input to abort)" - ) - target match - case Some(i) => rec(p, pos, Goto(i)) - case None => rec(p, pos - 1, QuickNext) + promptSlide() match + case Some(i) => rec(pos, Goto(i)) + case None => redraw() + case Help => Terminal.clear() println(keymap.help) waitkey - rec(p, pos - 1, QuickNext) + redraw() + case Other(codes) => Terminal.printStatus(action.show) - rec(p, pos, waitkey) + rec(pos, waitkey) + case Quit => - () - rec(this, 0, Start) + Terminal.showCursor() + end match + end rec + rec(0, Start) + end run + def promptSlide() = + val maxSlide = slides.size - 1 + prompt(s"Go to slide (0 - $maxSlide):", _.toIntOption)( + (res, input) => res.filter((0 to maxSlide).contains).isEmpty && input.nonEmpty, + in => s"No such slide: $in (empty input to abort)", + ) -object Presentation: - def executeSlide(p: Presentation, pos: Int)(slide: Slide = p.slides(pos)): Unit = slide match - case Paragraph(contents) => println(contents) - case Clear => Terminal.clear() - case PauseKey => waitkey(using Keymap.empty) - case Pause(msec) => Thread.sleep(msec) - case incMd @ IncludeMarkdown(_) => println(incMd.markdownBlock()) - case Image(file, None) => Terminal.showImage(file) - case Image(file, Some(ImageSize(w, h, aspect))) => Terminal.showImageScaled(file, w, h, aspect) - case cmd: TypedCommand[_] => cmd.show() - case Silent(actions) => actions() - case Group(slides) => slides.foreach(executeSlide(p, pos)) - case lios @ LazyIOSlide(_, display) => executeSlide(p, pos)(lios.genSlide()) - case Meta(genSlide) => executeSlide(p, pos)(genSlide(p, pos)) + def executeSlide(pos: Int)( + slide: Slide = slides(pos), + ): Unit = slide match + case Paragraph(contents) => println(contents) + case Clear => Terminal.clear() + case PauseKey => waitkey(using Keymap.empty) + case Pause(msec) => Thread.sleep(msec) + case incMd @ IncludeMarkdown(_) => println(incMd.markdownBlock()) + case Image(file, None) => println(KittyGraphicsProtocol.showImage(file)) + case Image(file, Some(ImageSize(w, h, aspect))) => + println(KittyGraphicsProtocol.showImage(file)) // TODO + case cmd: TypedCommand[_] => cmd.show() + case Silent(actions) => actions() + case Group(slides) => slides.foreach(executeSlide(pos)) + case lios @ LazyIOSlide(_, display) => executeSlide(pos)(lios.genSlide()) + case Meta(genSlide) => executeSlide(pos)(genSlide(this, pos)) - def executeQuick(p: Presentation, pos: Int)(slide: Slide = p.slides(pos)): Unit = slide match - case Pause(msec) => () - case PauseKey => () - case cmd: TypedCommand[_] => cmd.quickShow() - case Group(slides) => slides.foreach(executeQuick(p, pos)) - case lios @ LazyIOSlide(_, display) => executeQuick(p, pos)(lios.genSlide()) - case _ => executeSlide(p, pos)(slide) - - def executeSilent(p: Presentation, pos: Int)(slide: Slide = p.slides(pos)): Unit = slide match - case cmd: TypedCommand[_] => cmd.force() - case Group(slides) => slides.foreach(executeSilent(p, pos)) - case lios @ LazyIOSlide(_, display) => executeSilent(p, pos)(lios.genSlide()) - case Paragraph(_) | Image(_,_) | Clear | IncludeMarkdown(_) | Meta(_) => () - case _ => executeQuick(p, pos)(slide) + def executeQuick(pos: Int)( + slide: Slide = slides(pos), + ): Unit = slide match + case Pause(msec) => () + case PauseKey => () + case cmd: TypedCommand[_] => cmd.quickShow() + case Group(slides) => slides.foreach(executeQuick(pos)) + case lios @ LazyIOSlide(_, display) => executeQuick(pos)(lios.genSlide()) + case _ => executeSlide(pos)(slide) + def executeSilent(pos: Int)( + slide: Slide = slides(pos), + ): Unit = slide match + case cmd: TypedCommand[_] => cmd.force() + case Group(slides) => slides.foreach(executeSilent(pos)) + case lios @ LazyIOSlide(_, display) => + executeSilent(pos)(lios.genSlide()) + case Paragraph(_) | Image(_, _) | Clear | IncludeMarkdown(_) | Meta(_) => () + case _ => executeQuick(pos)(slide) +end Presentation case class ImageSize(width: Double, height: Double, keepAspect: Boolean) @@ -105,7 +123,7 @@ sealed trait Slide case class Paragraph(contents: String) extends Slide: def centerVertical(height: Int): Paragraph = val lines = contents.toString.count(_ == '\n') + 1 - val pad = "\n" * ((height - lines) / 2) + val pad = "\n" * ((height - lines) / 2) Paragraph(pad + contents + pad) object Paragraph: @@ -113,46 +131,56 @@ object Paragraph: case class IncludeMarkdown(path: Path) extends Slide: def markdownBlock() = - %%%("/usr/bin/mdcat", "--columns", (columns * 0.8).toInt.toString, path.toString)(using ImplicitWd.implicitCwd).block + %%%( + "/usr/bin/mdcat", + "--columns", + (columns * 0.8).toInt.toString, + path.toString, + )(using os.pwd).block case class Image(path: Path, sizing: Option[ImageSize]) extends Slide object Image: - def apply(path: Path) = new Image(path, None) + def apply(path: Path) = new Image(path, None) def scaled(path: Path, width: Double, height: Double, keepAspect: Boolean) = Image(path, Some(ImageSize(width, height, keepAspect))) -case object Clear extends Slide -case class Pause(millisec: Long) extends Slide -case object PauseKey extends Slide +case object Clear extends Slide +case class Pause(millisec: Long) extends Slide +case object PauseKey extends Slide case class Meta(contents: (Presentation, Int) => Slide) extends Slide -case class TypedCommand[T](exec: T => String, display: String, cmd: T, cmdIsHidden: Boolean, outputIsHidden: Boolean) extends Slide: +case class TypedCommand[T]( + exec: T => String, + display: String, + cmd: T, + cmdIsHidden: Boolean, + outputIsHidden: Boolean, +) extends Slide: private lazy val _output = exec(cmd) - def output = _output + def output = _output - infix def showing (s: String): TypedCommand[T] = TypedCommand(exec, s, cmd) + infix def showing(s: String): TypedCommand[T] = TypedCommand(exec, s, cmd) def show() = force() - if ! cmdIsHidden then + if !cmdIsHidden then prompt() Terminal.showCursor() typeCmd() - if ! outputIsHidden then - print(output) - if ! cmdIsHidden then - Terminal.hideCursor() + if !outputIsHidden then print(output) + if !cmdIsHidden then Terminal.hideCursor() def quickShow() = force() - if ! cmdIsHidden then + if !cmdIsHidden then prompt() println(display) - if ! outputIsHidden then - print(output) + if !outputIsHidden then print(output) def prompt() = print(fansi.Color.LightGreen("user@host % ")) - def force() = _output + def force() = _output + + def display(s: String) = copy(display = s) private def typeCmd() = for char <- display do @@ -162,7 +190,7 @@ case class TypedCommand[T](exec: T => String, display: String, cmd: T, cmdIsHidd /* Conditionally disable execution. Useful for e.g. a debug mode, or a non-interactive mode */ def disable(altDisplay: String = display, condition: Boolean = true) = - if condition then copy(display = altDisplay, exec = (_:T) => "") + if condition then copy(display = altDisplay, exec = (_: T) => "") else this /* Conditionally replace the executed command (but still displaying the same). Useful for e.g. a non-interactive mode, @@ -170,19 +198,19 @@ case class TypedCommand[T](exec: T => String, display: String, cmd: T, cmdIsHidd def replaceIf(condition: Boolean)(tc: TypedCommand[_]): TypedCommand[_] = if condition then tc.showing(display) else this - +end TypedCommand object TypedCommand: val shell = sys.env.getOrElse("SHELL", "sh") def run(using Path): Vector[String] => String = - c => safe_%%(c) + c => runProcess(c) def runShell(using Path): Vector[String] => String = - c => safe_%%(Vector(shell, "-c", c.mkString(" "))) + c => runProcess(Vector(shell, "-c", c.mkString(" "))) def runInteractive(using Path): Vector[String] => String = - c => { %(c); ""} + c => { os.proc(c).call(); "" } def apply(cmd: String*)(using Path): TypedCommand[Vector[String]] = TypedCommand(run, cmd.mkString(" "), cmd.toVector) @@ -190,7 +218,6 @@ object TypedCommand: def apply[T](exec: T => String, display: String, cmd: T) = new TypedCommand(exec, display, cmd, false, false) - def shell(cmd: String*)(using Path): TypedCommand[Vector[String]] = TypedCommand(runShell, cmd.mkString(" "), cmd.toVector) @@ -200,11 +227,9 @@ object TypedCommand: def interactive(cmd: String*)(using Path): TypedCommand[Vector[String]] = TypedCommand(runInteractive, cmd.mkString(" "), cmd.toVector) - sealed abstract case class Silent[T] private (doStuff: () => T) extends Slide object Silent: - def apply[T](doStuff: => T) = new Silent(() => doStuff){} - + def apply[T](doStuff: => T) = new Silent(() => doStuff) {} case class Group(slides: List[Slide]) extends Slide object Group: @@ -218,7 +243,8 @@ trait SlideSyntax: private[copret] class LazyIOSlideBuilder[T](runOnce: => T): def useIn(display: T => Slide) = LazyIOSlide(() => runOnce, display) - def prepare[T](runOnce: => T): LazyIOSlideBuilder[T] = LazyIOSlideBuilder(runOnce) - + def prepare[T](runOnce: => T): LazyIOSlideBuilder[T] = LazyIOSlideBuilder( + runOnce, + ) /* vim:set tw=120: */ diff --git a/copret/src/templates.scala b/copret/src/templates.scala index ee5447b..56297be 100644 --- a/copret/src/templates.scala +++ b/copret/src/templates.scala @@ -1,11 +1,14 @@ package de.qwertyuiop.copret import syntax.* -import ammonite.ops.{Path, %, %%, pwd, ImplicitWd} +import os.Path trait Templates: def titleLine(title: String)(using theme: Theme) = Paragraph( - "\n" + Format.figlet(title, theme.font("titleLine", "pagga")).block.blue + "\n" - ) + "\n" + Format + .figlet(title, theme.font("titleLine", "pagga")) + .block + .blue + "\n" + ) def header(using theme: Theme) = Meta((p, pos) => { val left = p.meta.getOrElse("author", "") @@ -14,12 +17,21 @@ trait Templates: theme.style("titleLine")(Format.distribute(left, center, right)).text }) - def slide(title: String)(slides: Slide*)(using Theme) = Group(Clear :: header :: titleLine(title) :: slides.toList) - def slide(slides: Slide*)(using Theme) = Group(Clear :: header :: slides.toList) + def slide(title: String)(slides: Slide*)(using Theme) = Group( + Clear :: header :: titleLine(title) :: slides.toList + ) + def slide(slides: Slide*)(using Theme) = Group( + Clear :: header :: slides.toList + ) def markdown(title: String, content: Path)(using Theme) = slide(title)( Paragraph( - %%%("/usr/bin/mdcat", "--columns", (columns * 0.8).toInt.toString, content.toString)(using ImplicitWd.implicitCwd).block + %%%( + "/usr/bin/mdcat", + "--columns", + (columns * 0.8).toInt.toString, + content.toString + )(using os.pwd).block ) ) diff --git a/copret/src/terminal.scala b/copret/src/terminal.scala index 45c9fd5..6b45062 100644 --- a/copret/src/terminal.scala +++ b/copret/src/terminal.scala @@ -1,98 +1,112 @@ package de.qwertyuiop.copret -import ammonite.ops.{Path, ShelloutException, pwd, read, %, %%} +import os.Path import org.jline.terminal.TerminalBuilder import org.jline.reader.LineReaderBuilder +import scala.io.StdIn +import cats.* +import scala.collection.IndexedSeqView object Terminal: - def safe_%%(cmd: Vector[String])(using Path): String = - try - %%(cmd).out.string - catch - case e: ShelloutException => e.result.err.string + def runProcess(cmd: Vector[String])(using cwd: os.Path): String = + try os.proc(cmd.map(identity)).call(cwd = cwd).out.text() + catch case e: os.SubprocessException => e.result.err.text() + + def tryCmd[T](cmd: => T, default: => T) = + try cmd + catch case e: os.SubprocessException => default def enterRawMode(): Unit = - %%("sh", "-c", "stty -icanon min 1 < /dev/tty")(pwd) - %%("sh", "-c", "stty -echo < /dev/tty")(pwd) + os.proc("sh", "-c", "stty -icanon min 1 < /dev/tty") + .call(stdin = os.Inherit, stdout = os.Inherit, stderr = os.Inherit) + os.proc("sh", "-c", "stty -echo < /dev/tty").call(stdin = os.Inherit, stdout = os.Inherit, stderr = os.Inherit) - extension (percent: Double) - def toPercent: String = s"${(percent * 100).toInt}%" + private[copret] lazy val jterm = org.jline.terminal.TerminalBuilder.terminal() + private[copret] lazy val lineReader = + LineReaderBuilder.builder().terminal(jterm).build() - private[copret] lazy val jterm = org.jline.terminal.TerminalBuilder.terminal() - private[copret] lazy val lineReader = LineReaderBuilder.builder().terminal(jterm).build() - - def height = jterm.getSize.getRows - def width = jterm.getSize.getColumns - - def waitkey(using keymap: Keymap): SlideAction = + def waitkey(implicit keymap: Keymap): SlideAction = // ignore keypresses done during slide animations - while Console.in.ready() do Console.in.read + while (System.in.available() > 0) System.in.read var key = scala.collection.mutable.ArrayBuffer[Int]() - key += Console.in.read - while Console.in.ready do - key += Console.in.read + key += System.in.read + while (System.in.available() > 0) + key += System.in.read keymap(key.toList) - def printStatus(msg: String): Unit = - cursorTo(height, 1) - print(msg) + def queryTerm(query: String): String = + val ttyIn = new java.io.FileInputStream("/dev/tty") + val ttyOut = new java.io.PrintStream(new java.io.FileOutputStream("/dev/tty")) + + ttyOut.println(query) + var response = scala.collection.mutable.ArrayBuffer[Int]() + response += ttyIn.read() + while (ttyIn.available > 0 && response.last != '\u0007') + response += ttyIn.read() + new String(response.toArray, 0, response.length) + + case class EscapeSequence() + def parseEscape(sequence: String): Option[EscapeSequence] = ??? def prompt[T](prefix: String, parse: String => T)( retry: (T, String) => Boolean = (t: T, s: String) => false, - error: String => String = in => s"Invalid input: $in" - ): T = - val input = lineReader.readLine(prefix + " ") - val result = parse(input) - if retry(result, input) then - println(error(input)) - prompt(prefix, parse)(retry, error) - else result + error: String => String = in => s"Invalid input: $in", + ): T = + val input = lineReader.readLine(prefix + " ") + val result = parse(input) + if retry(result, input) then + println(error(input)) + prompt(prefix, parse)(retry, error) + else result - val term = sys.env("TERM") + def isTmux = sys.env.contains("TMUX") || sys.env("TERM").startsWith("screen") - def isTmux = sys.env.contains("TMUX") || term.startsWith("screen") + def csi = if (isTmux) "\u001bPtmux\u001b\u001b[" else "\u001b[" + def osc = if (isTmux) "\u001bPtmux\u001b\u001b]" else "\u001b]" + def apc = if (isTmux) "\u001bPtmux;\u001b\u001b_" else "\u001b_" + def st = if (isTmux) "\u0007\u001b\\" else "\u0007" - def osc(code: String) = (if isTmux then "\u001bPtmux\u001b\u001b]" else "\u001b]") + code + st - def st = if isTmux then "\u0007\u001b\\" else "\u0007" - def csi(code: String) = "\u001b[" + code + def hideCursor() = print(s"${csi}?25l") + def showCursor() = print(s"${csi}?25h") + def cursorTo(row: Int, col: Int) = print(s"${csi}${row};${col}H") + def clear() = print(s"${csi}2J${csi};H") + def printStatus(msg: String): Unit = + cursorTo(jterm.getSize.getColumns, 1) + print(msg) - def hideCursor() = print(csi("?25l")) - def showCursor() = print(csi("?25h")) - def cursorTo(row: Int, col: Int) = print(csi(s"${row};${col}H")) - def clear() = print(csi("2J") + csi(";H")) - - def showImage(img: Path): Unit = - print( - if term == "xterm-kitty" then showImageKitty(img) - else showImageIterm(img, "100%", "100%", true) - ) - - def showImageScaled(img: Path, width: Double, height: Double, keepAspect: Boolean): Unit = - print( - if term == "xterm-kitty" then - val cols = (jterm.getSize.getColumns * width).toInt - val rows = (jterm.getSize.getRows * height).toInt - showImageKitty(img) // TODO - else - showImageIterm(img, width.toPercent, height.toPercent, keepAspect) - ) - - def showImageIterm(img: Path, width: String, height: String, keepAspect: Boolean = true): String = + def showImage( + img: os.Path, + width: String = "100%", + height: String = "100%", + keepAspect: Boolean = true, + ) = import java.util.Base64 - val image = Base64.getEncoder.encodeToString(read.bytes(img)) - val aspect = if keepAspect then 1 else 0 - osc(s"1337;File=inline=1;width=$width;height=$height;preserveAspectRatio=$aspect:$image") + val image = Base64.getEncoder.encodeToString(os.read.bytes(img)) + val aspect = if (keepAspect) 1 else 0 // TODO + if image.length > 4096 then + val chunks = image.grouped(4096).toVector - def showImageKitty(img: Path): String = - import java.util.Base64 - s"\u001b_Gf=100,t=f,a=T,C=1;${Base64.getEncoder.encodeToString(img.toString.toCharArray.map(_.toByte))}\u001b\\" + s"${apc}Gf=100,t=d,m=1,a=T;${chunks.head}${st}" + + chunks.tail.init.map(c => s"${apc}Gm=1;${c}${st}").mkString + + s"${apc}Gm=0;${chunks.last}${st}" + else s"${apc}Gf=100,t=d,a=T;${image}${st}" + + def getSize = queryTerm(s"${csi}s${csi}999;999H${csi}6n${csi}u") + + private val SizeResponse = """\u001b\[4;(\d+);(\d+)t""".r + + case class PixelSize(width: Int, height: Int) + def getSizePixels: Option[PixelSize] = queryTerm(s"${csi}14t") match + case SizeResponse(rows, cols) => Some(PixelSize(cols.toInt, rows.toInt)) + case _ => None + +end Terminal private[copret] trait TerminalSyntax: import Terminal._ - def %%%(cmd: String*)(using Path) = safe_%%(cmd.toVector) - def columns = jterm.getSize.getColumns - def rows = jterm.getSize.getRows - + def %%%(cmd: String*)(using cwd: os.Path): String = runProcess(cmd.toVector) + def columns = jterm.getSize.getColumns + def rows = jterm.getSize.getRows /* vim:set tw=120: */ diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..deaa7bf --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1 @@ +demoRepo diff --git a/examples/git-presentation.sc b/examples/git-presentation.sc new file mode 100755 index 0000000..5a06592 --- /dev/null +++ b/examples/git-presentation.sc @@ -0,0 +1,425 @@ +#!/usr/bin/env -S scala-cli shebang +//>using scala 3.3 +//>using dep de.qwertyuiop::copret:0.0.2 + +import de.qwertyuiop.copret._ +import de.qwertyuiop.copret.syntax.* +import TypedCommand.{interactive, shell => sh}, Format.figlet +import os.{pwd, Path} + +/* Configuration */ + +/* store paths for reuse. + * most of the commands in this presentation will be git commands in a demo repository, so the path to that repo is set + * as implicit (will be the working directory of executed commands) */ +val imgs = pwd / "img" +given repoDir: Path = pwd / "demoRepo" +given theme: Theme = Theme.default + +/* You can define any variables and use then in your presentation. + * The presentation is pure Scala code, you can use anything that Scala offers . */ +val noInteractiveCommands = true + +/* image height is defined by the iterm2 image protocol as follows: + * N: N character cells. + * Npx: N pixels. + * N%: N percent of the session's width or height. + * auto: The image's inherent size will be used to determine an appropriate dimension. + * + * The `Image` slide element will default to 100% height and width (preserving aspect ratio). Here the maximum height + * is calculated for slides with the default header (1 row status, 3 rows title font, 3 rows spacing) + */ +val imageHeight = (rows - 7).toDouble //TODO + +/* Make sure, the demo repo is not there in the beginning. We'll create it in the presentation */ +os.remove.all(repoDir) + +/* the basic building block of copret presentations is the various case classes of the `Slide` trait */ +val titleSlide = + Group( // `Group` combines several `Slide` objects into one + Clear, // `Clear` clears the screen, so the next slide element starts at the top + Image( + imgs / "git-logo.png", + Some(ImageSize(width = 0.1, height = 1, keepAspect = true)), + ), // `Image` currently requires a terminal supporting `imgcat` + Paragraph( // `Paragraph` simply prints its text contents + s"""${figlet("git", "roman").block.blue} + | + |${"Wie man es benutzt und was in .git eigentlich passiert".centered.blue} + | + |${"-- Alexander Gehrke".right(10)} + |""".stripMargin, + ), + // Above you see some of the extension methods for strings, `block` for centering multiline text, `centered` for + // single lines, `right(10)` for placing text 10 spaces away from the right border and `blue` for coloring. + // also, `figlet` calls the external figlet command to render ASCII art text with the given font. + ) + +/* copret templates are simply normal methods that return slides */ +def chapter(title: String, subtitle: String): Group = + chapter(title, "", subtitle) +def chapter(title1: String, title2: String, subtitle: String): Group = { + val font = + if ((title1.length max title2.length) < columns / 10) "mono12" else "mono9" + Group( + Clear, + header, // a built in template + Paragraph( + figlet(title1, font).block.green ++ figlet( + title2, + font, + ).block.green ++ "\n" ++ subtitle.right(10).green, + ), + ) +} + +val parentSHApattern = raw"parent ([a-f0-9]{40})".r +val treeSHApattern = raw"tree ([a-f0-9]{40})".r +val blobSHApattern = raw"blob ([a-f0-9]{40})".r + +/* With `prepare` you can define variables for a slide, that are computed when the presentation reaches the + * slide using it. This is useful for running external commands when a specific slide is reached and using their + * output (if you'd include them in the string interpolation directly, they'd run before starting the presentation). + * + * The code given to `prepare` is run exactly once *per slide using it*. See the usages of `gitHashes` below for + * details. */ +case class GitHashes( + commit: String, + tree: String, + blob: String, + parent: String, + subtree: String, +) +val gitHashes = prepare { + val commitSHA = %%%("git", "show-ref").substring(0, 40) + val commit = %%%("git", "cat-file", "-p", "HEAD") + val treeSHA = + treeSHApattern.findFirstMatchIn(commit).map(_.group(1)).getOrElse("") + val parentSHA = + parentSHApattern.findFirstMatchIn(commit).map(_.group(1)).getOrElse("") + val tree = %%%("git", "cat-file", "-p", treeSHA) + val blobSHA = + blobSHApattern.findFirstMatchIn(tree).map(_.group(1)).getOrElse("") + val subtreeSHA = + treeSHApattern.findFirstMatchIn(tree).map(_.group(1)).getOrElse("") + GitHashes(commitSHA, treeSHA, blobSHA, parentSHA, subtreeSHA) +} + +def gitStatus = TypedCommand("git", "status") +def gitCatFile(ref: String) = TypedCommand("git", "cat-file", "-p", ref) + +def gitLogGraph(cutOff: Int = 0) = { + val shownCmd = "git log --graph --oneline --all" + val execCmd = + shownCmd + " --decorate=short --color=always " + (if (cutOff > 0) + "| head -n -" + cutOff + else "") + val typer = sh(execCmd) display shownCmd + if (cutOff > 0) + Group(typer, "...".text) + else + typer +} + +/* A `Presentation` object can include a map of metadata. Which keys are used, depends on your used templates. + * To use them in a slide yourself (or for creating own templates), use the Meta slide class, which can access the + * presentation object and state to generate a slide. + * + * The only keys used in the packaged templates are currently "author" and "title" in the `header` template */ +val meta = Map( + "author" -> "Alexander Gehrke", + "title" -> "Git", +) + +/* A presentation consists of a `Vector[Slide]`. After each slide in this vector, the presentation pauses and waits for + * input. `Group` is used, to display several slides at once, and `PauseKey` can be used inside a `Group` to wait for + * input (but limited to displaying the rest of the `Group`, normal navigation is only possible between top level + * slides). + * + * Navigation distinguishes between normal and "quick" steps, the latter disables things like pauses or animations. It + * is also possible to jump to a specific slide. + * */ +val presentation = Presentation( + Vector( + titleSlide, + /* for simple slides, the `markdown` template and `IncludeMarkdown` Slide allow including plain markdown files. + * (currently requires mdcat) */ + markdown("Wozu braucht man das?", pwd / "slides" / "01wozu.md"), + chapter("Basics", "Grundlegende Befehle"), + /* `slide` is a template for a `Group` with an optional title, that clears the screen */ + slide("Basics")( + """Git trackt Inhalt von Dateien innerhalb eines Repositories. + |Kann in neuem oder bestehenden Ordner angelegt werden + |""".par, + /* the `---` template displays a yellow line */ + ---, + /* `Pause` waits for the given number of milliseconds */ + Pause(500), + /* `TypedCommand.shell` (here aliased to `sh`) displays a typing animation of that command and then executes it, + * showing its output in the presentation */ + sh("git init demoRepo")(using pwd), + /* sometimes it's useful to display something else than is actually executed, e.g. to add comments, or to hide + * options only required because we don't call from an interactive shell (stuff like --color) */ + sh("ls -1a --color=always demoRepo")(using pwd) display "ls -1a demoRepo", + /* If you need to run commands that should not display anything in the presentation, use `Silent`. + * Here I use it to prepare the repository, but it could also be used e.g. for playing a sound or opening a video.*/ + Silent { + %%%("git", "config", "user.email", "crater2150@example.com") + %%%("git", "config", "user.name", "crater2150") + %%%("git", "config", "color.status", "always") + %%%("git", "config", "color.ui", "always") + }, + ), + slide("Basics")( + "Noch ist das Repo leer. Ändern wir das:".par, + ---, + Pause(500), + TypedCommand.fake("cd demoRepo"), + sh("echo 'Hello, World!' > hello.txt"), + Pause(500), + sh("ls -1a"), + ), + slide("Basics")( + "Den Zustand des Repos sehen wir mit `git status`\n".par, + ---, + Pause(500), + gitStatus, + ), + slide("Basics")( + "Damit Git Dateien trackt, müssen diese mit `git add` hinzugefügt werden.\n".par, + ---, + sh("git add hello.txt"), + gitStatus, + ), + slide("Basics")( + """Die gespeicherten Zustände eines Repos nennt man Commit. + |Zu jedem Commit gibt man eine Zusammenfassung der Änderungen an + |""".par, + ---, + Pause(500), + sh("git commit --message \"Added first file\""), + PauseKey, + ---, + """Commits werden über ihren SHA1-Hash identifiziert. Dieser wird ggf. abgekürzt. + |Mit `git log` können wir uns die bisherigen Commits ansehen: + |""".par, + ---, + sh("git log"), + ), + /* here we see `gitHashes`, created with `prepare`, in action: + * As the code is run exactly once per `useIn` call i.e. per using slide, the hashes of the latest commit, tree and + * parent in the demo repo, that `gitHashes` retrieves, are always the ones for the repository state matching the + * slide. The prepared code is run and its result cached, when the slide is first displayed (or skipped over). + */ + gitHashes useIn { sha => + slide("Was passiert bei einem Commit?")( + s"""Schauen wir uns an, was Git aus dem Commit gemacht hat. + |`git cat-file $$ref` zeigt Inhalt von Git-Objekten. `$$ref` ist Referenz des Objekts, z.B. der Hash. + |Unser Commit hatte den Hash `${sha.commit}`. + |Statt diesem geht auch `HEAD` = aktueller Commit. + |""".par, + ---, + gitCatFile("HEAD"), + PauseKey, + ---, + s"""Zum Hashen wird vor den Inhalt noch ` + slide("Commits, Trees, Blobs")( + s"""Neben den Metadaten ist in unserem Commit noch eine Zeile + | `tree ${sha.tree}` + | + |Trees repräsentieren Verzeichnisse, Tree in einem Commit = Wurzelverzeichnis des Repos + |`$$ref^{tree}` = Baum mit Referenz `$$ref`, oder wenn `$$ref` ein Commit ist, der Tree aus diesem + |""".par, + ---, + gitCatFile("HEAD^{tree}"), + PauseKey, + ---, + s"""Hier ist noch nicht viel zu sehen, da wir nur eine Datei haben. + |Einträge im Tree haben das Format: + | ` ` + |""".par, + ) + }, + gitHashes useIn { sha => + slide("Commits, Trees, Blobs")( + s"""Blobs sind die eigentlichen Dateiinhalte. + |Unsere `hello.txt` hat, wie im Tree zu sehen, den Hash ${sha.blob.substring(0, 8)}… + |""".par, + ---, + gitCatFile(sha.blob.substring(0, 8)), + ) + }, + slide("Commits, Trees, Blobs")( + s"""Fügen wir ein paar weitere Dateien und einen Unterordner hinzu + |""".par, + ---, + sh("mkdir folder"), + sh("echo 'My other file' > other.txt"), + sh("echo 'File in folder' > folder/file.txt"), + sh("git add other.txt folder"), + sh("git commit -m 'Added more files'"), + ), + /* when this slide is reached, our commit hashes have changed. All the previous slides will still display the old ones */ + gitHashes useIn { sha => + slide("Commits, Trees, Blobs")( + s"""Wie sieht der neue Commit aus? + |""".par, + ---, + gitCatFile("HEAD"), + ---, + PauseKey, + s"""Wir haben eine neue Art von Eintrag: + | `parent ${sha.parent}` + | + |Dieser verweist auf den vorherigen Commit. + |Durch solche Verweise bilden alle Commits einen gerichteten Graphen. + |""".par, + ) + }, + gitHashes useIn { sha => + slide("Commits, Trees, Blobs")( + s"""Sehen wir uns den neuen Tree an: + |""".par, + gitCatFile("HEAD^{tree}"), + ---, + s"""Eine unserer neuen Dateien ist zu sehen. + |Auch `hello.txt` ist noch da, mit selbem Hash wie vorher (da nicht geändert) + |Die andere neue Datei ist im Verzeichnis `folder`, und daher im `tree` mit dem Hash `${sha.subtree + .substring(0, 8)}…` : + |""".par, + gitCatFile(sha.subtree.substring(0, 8)), + ) + }, + slide("Git als Graph")( + Image( + imgs / "repo-graph.png", + Some(ImageSize(width = 1, height = imageHeight, keepAspect = true)), + ), + ), + slide("Dateien editieren")( + s"""Auch Änderungen an schon getrackten Dateien müssen mit `git add` zum Repo hinzugefügt werden. + |Erlaubt es, nur Teile der Änderungen zu committen und dadurch commits zu unterteilen. + |Ändern wir ein paar Dateien: + |""".par, + PauseKey, + Group( + interactive("vim", "hello.txt").replaceIf(noInteractiveCommands)( + sh("echo 'New line' >> hello.txt"), + ), + interactive("vim", "folder/file.txt").replaceIf(noInteractiveCommands)( + sh("echo 'New line' >> folder/file.txt"), + ), + gitStatus, + ), + ), + slide("Dateien editieren")( + sh("git add folder/file.txt; git status"), + ---, + s"""`git status` zeigt, welche Änderungen in den nächsten Commit aufgenommen werden. + |Solche bezeichnet man als "staged" oder "im Stagingbereich". + |Auch zu sehen: Befehle um diese zu modifizieren (`git add` / `git restore --staged`). + |`git restore ` (ohne `--staged`) verwirft Änderungen → Nicht wieder herstellbar! + |""".par, + ), + slide("Dateien editieren")( + sh("git commit -m \"Modified file in folder\""), + sh("git add hello.txt; git commit -m \"Extended greeting\""), + gitStatus, + ), + markdown("Was bisher geschah", pwd / "slides" / "02summary.md"), + chapter("Branches", "Grundlegende Befehle"), + slide("\n".par, IncludeMarkdown(pwd / "slides" / "02branches.md")), + slide("Branches")( + sh("git branch"), + ---, + prepare { %%%("git", "branch", "--show-current").trim } useIn { branch => + s"Aktuell sind wir auf dem Branch `$branch` und es gibt keine weiteren Branches\n".par + }, + PauseKey, + s"""Neuen Branch anlegen mit `git branch ` + |Alternativ: Branch anlegen und direkt auf diesen wechseln mit `git switch -c ` + |""".par, + ---, + sh("git switch -c feature/foo"), + sh("git branch"), + ), + slide("Branches")( + "Machen wir ein paar Änderungen und committen sie:\n".par, + ---, + sh( + "echo 'a new line' >> hello.txt", + ) display "echo 'a new line' >> hello.txt # appends to hello.txt", + sh("git add hello.txt"), + sh("git commit -m \"Added line to hello\""), + ---, + "Da der Branch `feature/foo` aktiv war, zeigt dieser auf den neuen Commit. `master` wird nicht geändert:".code.text, + PauseKey, + sh( + "git log --graph --oneline --all --decorate=short --color=always", + ) display "git log --graph --oneline --all", + ), + slide("Branches")( + "Jetzt wechseln wir zurück zu `master`:\n".par, + ---, + sh("git switch master"), + sh("echo 'Also a new line' >> other.txt"), + sh("git add other.txt"), + sh("git commit -m \"Added line to other\""), + gitLogGraph(), + ), + slide("Branches")( + "Im Prinzip haben wir einfach zwei Commits mit dem selben `parent` hinzugefügt:".code.text, + ---, + gitCatFile("master"), + gitCatFile("feature/foo"), + ), + slide("Merges")( + """Im Normalfall möchte man mehrere Branches irgendwann wieder zusammenführen. + |Dazu gibt es den Befehl `merge`:""".par, + ---, + sh("git merge feature/foo"), + gitLogGraph(2), + ), + slide("Merge Commits")( + "Um zwei divergierte Branches zusammenzuführen, gibt es Merge Commits mit mehreren `parent` Einträgen:".code.text, + ---, + gitCatFile("master"), + ), + slide("Merge Konflikte")( + "Was passiert, wenn wir nicht kompatible Änderungen haben? Noch mal vom Zustand vor dem Merge aus, auf `master`:".code.text, + Silent { + %%%("git", "update-ref", "refs/heads/master", "feature/foo~") + }, + ---, + sh("echo 'a different line' >> hello.txt"), + sh("git add hello.txt"), + sh("git commit -m \"Added different line to hello\""), + gitLogGraph(), + ), + slide("Der Object Store")( + """Git speichert Objekte unter `.git/objects//` + |Objekte sind komprimiert. + |""".par, + sh("tree -C .git/objects/ | head -n 11") display "tree .git/objects/", + s"...".par, + ), + ), + meta = meta, +) + +/* When starting the presentation, you can pass a custom keymap to use. + * The `runForeground` action lets you run any command, interrupting the presentation until it exits. + * Here I bind the 'i' key to open tmux in the demo repo, for having interactive access, so I can call additional git + * commands for questions */ +presentation.start(using + Keymap.default ++ Map( + Key('i') -> SlideAction.runForeground("tmux"), + ), +) + +/* vim:set tw=120: */ diff --git a/examples/img/git-logo.png b/examples/img/git-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f4518b1095723693de90eae4a795b37052c9fafa GIT binary patch literal 3783 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 H`)c_A)|%@q literal 0 HcmV?d00001 diff --git a/examples/img/repo-graph-i.png b/examples/img/repo-graph-i.png new file mode 100644 index 0000000000000000000000000000000000000000..c9cd7c3abec1fe4795dbb315495ef00ebd8e6d76 GIT binary patch literal 142204 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
    =sZ!FO;R= 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
    %2vL`M5QxTusLh4qPuL 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 K4qinDCjJLQ+T7Lv literal 0 HcmV?d00001 diff --git a/examples/img/repo-graph.png b/examples/img/repo-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf5a40d5f76212958c620c531b9e5fab74f6c24 GIT binary patch literal 144234 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ΠCp_m@;aXHkz+df&>j|I67g;eIfEhVs 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 sh}, Format.figlet - -import ammonite.ops.{given, *} - - -/* Configuration */ - -/* store paths for reuse. - * most of the commands in this presentation will be git commands in a demo repository, so the path to that repo is set - * as implicit (will be the working directory of executed commands) */ -val imgs = pwd/"img" -given repoDir: Path= pwd/"demoRepo" -import de.qwertyuiop.copret.{given Theme} - -/* You can define any variables and use then in your presentation. - * The presentation is pure Scala code, you can use anything that Scala offers . */ -val debug = true - -/* image height is defined by the iterm2 image protocol as follows: - * N: N character cells. - * Npx: N pixels. - * N%: N percent of the session's width or height. - * auto: The image's inherent size will be used to determine an appropriate dimension. - * - * The `Image` slide element will default to 100% height and width (preserving aspect ratio). Here the maximum height - * is calculated for slides with the default header (1 row status, 3 rows title font, 3 rows spacing) - */ -val imageHeight = (rows - 7).toString - -/* Make sure, the demo repo is not there in the beginning. We'll create it in the presentation */ -rm! repoDir - -/* the basic building block of copret presentations is the various case classes of the `Slide` trait */ -val titleSlide = - Group( // `Group` combines several `Slide` objects into one - Clear, // `Clear` clears the screen, so the next slide element starts at the top - Image(imgs/"git-logo.png", width = "10%"), // `Image` currently requires a terminal supporting `imgcat` - Paragraph( // `Paragraph` simply prints its text contents - s"""${figlet("git", "roman").block.blue} - | - |${"Wie man es benutzt und was in .git eigentlich passiert".centered.blue} - | - |${"-- Alexander Gehrke".right(10)} - |""".stripMargin) - // Above you see some of the extension methods for strings, `block` for centering multiline text, `centered` for - // single lines, `right(10)` for placing text 10 spaces away from the right border and `blue` for coloring. - // also, `figlet` calls the external figlet command to render ASCII art text with the given font. - ) - -/* copret templates are simply normal methods that return slides */ -def chapter(title: String, subtitle: String): Group = chapter(title, "", subtitle) -def chapter(title1: String, title2: String, subtitle: String): Group = { - val font = if((title1.length max title2.length) < columns / 10) "mono12" else "mono9" - Group(Clear, - header, // a built in template - Paragraph( - figlet(title1, font).block.green ++ figlet(title2, font).block.green ++ "\n" ++ subtitle.right(10).green - ) - ) -} - - -val parentSHApattern = raw"parent ([a-f0-9]{40})".r -val treeSHApattern = raw"tree ([a-f0-9]{40})".r -val blobSHApattern = raw"blob ([a-f0-9]{40})".r - -/* With `prepare` you can define variables for a slide, that are computed when the presentation reaches the - * slide using it. This is useful for running external commands when a specific slide is reached and using their - * output (if you'd include them in the string interpolation directly, they'd run before starting the presentation). - * - * The code given to `prepare` is run exactly once *per slide using it*. See the usages of `gitHashes` below for - * details. */ -case class GitHashes(commit: String, tree: String, blob: String, parent: String, subtree: String) -val gitHashes = prepare { - val commitSHA = %%%("git", "show-ref").substring(0,40) - val commit = %%%("git", "cat-file", "-p", "HEAD") - val treeSHA = treeSHApattern.findFirstMatchIn(commit).map(_.group(1)).getOrElse("") - val parentSHA = parentSHApattern.findFirstMatchIn(commit).map(_.group(1)).getOrElse("") - val tree = %%%("git", "cat-file", "-p", treeSHA) - val blobSHA = blobSHApattern.findFirstMatchIn(tree).map(_.group(1)).getOrElse("") - val subtreeSHA = treeSHApattern.findFirstMatchIn(tree).map(_.group(1)).getOrElse("") - GitHashes(commitSHA, treeSHA, blobSHA, parentSHA, subtreeSHA) - } - -def gitStatus = TypedCommand("git", "status") -def gitCatFile(ref: String) = TypedCommand("git", "cat-file", "-p", ref) - -def gitLogGraph(cutOff: Int = 0) = { - val shownCmd = "git log --graph --oneline --all" - val execCmd = shownCmd + " --decorate=short --color=always " + (if(cutOff > 0) "| head -n -" + cutOff else "") - val typer = sh(execCmd) showing shownCmd - if(cutOff > 0) - Group(typer, "...".text) - else - typer -} - -/* A `Presentation` object can include a map of metadata. Which keys are used, depends on your used templates. - * To use them in a slide yourself (or for creating own templates), use the Meta slide class, which can access the - * presentation object and state to generate a slide. - * - * The only keys used in the packaged templates are currently "author" and "title" in the `header` template */ -val meta = Map( - "author" -> "Alexander Gehrke", - "title" -> "Git" -) - -/* A presentation consists of a `Vector[Slide]`. After each slide in this vector, the presentation pauses and waits for - * input. `Group` is used, to display several slides at once, and `PauseKey` can be used inside a `Group` to wait for - * input (but limited to displaying the rest of the `Group`, normal navigation is only possible between top level - * slides). - * - * Navigation distinguishes between normal and "quick" steps, the latter disables things like pauses or animations. It - * is also possible to jump to a specific slide. - * */ -val presentation = Presentation(Vector( - titleSlide, - /* for simple slides, the `markdown` template and `IncludeMarkdown` Slide allow including plain markdown files. - * (currently requires mdcat) */ - markdown("Wozu braucht man das?", pwd/"slides"/"01wozu.md"), - chapter("Basics", "Grundlegende Befehle"), - /* `slide` is a template for a `Group` with an optional title, that clears the screen */ - slide("Basics")( - """Git trackt Inhalt von Dateien innerhalb eines Repositories. - |Kann in neuem oder bestehenden Ordner angelegt werden - |""".par, - /* the `---` template displays a yellow line */ - ---, - /* `Pause` waits for the given number of milliseconds */ - Pause(500), - /* `TypedCommand.shell` (here aliased to `sh`) displays a typing animation of that command and then executes it, - * showing its output in the presentation */ - sh("git init demoRepo")(using pwd), - /* sometimes it's useful to display something else than is actually executed, e.g. to add comments, or to hide - * options only required because we don't call from an interactive shell (stuff like --color) */ - sh("ls -1a --color=always demoRepo")(using pwd) showing "ls -1a demoRepo", - /* If you need to run commands that should not display anything in the presentation, use `Silent`. - * Here I use it to prepare the repository, but it could also be used e.g. for playing a sound or opening a video.*/ - Silent { - %%%("git", "config", "user.email", "crater2150@example.com") - %%%("git", "config", "user.name", "crater2150") - %%%("git", "config", "color.status", "always") - %%%("git", "config", "color.ui", "always") - } - ), - slide("Basics")( - "Noch ist das Repo leer. Ändern wir das:".par, - ---, - Pause(500), - TypedCommand.fake("cd demoRepo"), - sh("echo 'Hello, World!' > hello.txt"), - Pause(500), - sh("ls -1a") - ), - slide("Basics")( - "Den Zustand des Repos sehen wir mit `git status`\n".par, - ---, - Pause(500), - gitStatus, - ), - slide("Basics")( - "Damit Git Dateien trackt, müssen diese mit `git add` hinzugefügt werden.\n".par, - ---, - sh("git add hello.txt"), - gitStatus, - ), - slide("Basics")( - """Die gespeicherten Zustände eines Repos nennt man Commit. - |Zu jedem Commit gibt man eine Zusammenfassung der Änderungen an - |""".par, - ---, - Pause(500), - sh("git commit --message \"Added first file\""), - PauseKey, - ---, - """Commits werden über ihren SHA1-Hash identifiziert. Dieser wird ggf. abgekürzt. - |Mit `git log` können wir uns die bisherigen Commits ansehen: - |""".par, - ---, - sh("git log") - ), - /* here we see `gitHashes`, created with `prepare`, in action: - * As the code is run exactly once per `useIn` call i.e. per using slide, the hashes of the latest commit, tree and - * parent in the demo repo, that `gitHashes` retrieves, are always the ones for the repository state matching the - * slide. The prepared code is run and its result cached, when the slide is first displayed (or skipped over). - */ - gitHashes useIn { sha => slide("Was passiert bei einem Commit?")( - s"""Schauen wir uns an, was Git aus dem Commit gemacht hat. - |`git cat-file $$ref` zeigt Inhalt von Git-Objekten. `$$ref` ist Referenz des Objekts, z.B. der Hash. - |Unser Commit hatte den Hash `${sha.commit}`. - |Statt diesem geht auch `HEAD` = aktueller Commit. - |""".par, - ---, - gitCatFile("HEAD"), - PauseKey, - ---, - s"""Zum Hashen wird vor den Inhalt noch ` slide("Commits, Trees, Blobs")( - s"""Neben den Metadaten ist in unserem Commit noch eine Zeile - | `tree ${sha.tree}` - | - |Trees repräsentieren Verzeichnisse, Tree in einem Commit = Wurzelverzeichnis des Repos - |`$$ref^{tree}` = Baum mit Referenz `$$ref`, oder wenn `$$ref` ein Commit ist, der Tree aus diesem - |""".par, - ---, - gitCatFile("HEAD^{tree}"), - PauseKey, - ---, - s"""Hier ist noch nicht viel zu sehen, da wir nur eine Datei haben. - |Einträge im Tree haben das Format: - | ` ` - |""".par - )}, - gitHashes useIn { sha => slide("Commits, Trees, Blobs")( - s"""Blobs sind die eigentlichen Dateiinhalte. - |Unsere `hello.txt` hat, wie im Tree zu sehen, den Hash ${sha.blob.substring(0,8)}… - |""".par, - ---, - gitCatFile(sha.blob.substring(0,8)), - )}, - slide("Commits, Trees, Blobs")( - s"""Fügen wir ein paar weitere Dateien und einen Unterordner hinzu - |""".par, - ---, - sh("mkdir folder"), - sh("echo 'My other file' > other.txt"), - sh("echo 'File in folder' > folder/file.txt"), - sh("git add other.txt folder"), - sh("git commit -m 'Added more files'") - ), - /* when this slide is reached, our commit hashes have changed. All the previous slides will still display the old ones */ - gitHashes useIn { sha => slide("Commits, Trees, Blobs")( - s"""Wie sieht der neue Commit aus? - |""".par, - ---, - gitCatFile("HEAD"), - ---, - PauseKey, - s"""Wir haben eine neue Art von Eintrag: - | `parent ${sha.parent}` - | - |Dieser verweist auf den vorherigen Commit. - |Durch solche Verweise bilden alle Commits einen gerichteten Graphen. - |""".par - )}, - gitHashes useIn { sha => slide("Commits, Trees, Blobs")( - s"""Sehen wir uns den neuen Tree an: - |""".par, - gitCatFile("HEAD^{tree}"), - ---, - s"""Eine unserer neuen Dateien ist zu sehen. - |Auch `hello.txt` ist noch da, mit selbem Hash wie vorher (da nicht geändert) - |Die andere neue Datei ist im Verzeichnis `folder`, und daher im `tree` mit dem Hash `${sha.subtree.substring(0,8)}…` : - |""".par, - gitCatFile(sha.subtree.substring(0,8)), - )}, - slide("Git als Graph")(Image(imgs/"repo-graph.png", height=imageHeight)), - slide("Dateien editieren")( - s"""Auch Änderungen an schon getrackten Dateien müssen mit `git add` zum Repo hinzugefügt werden. - |Erlaubt es, nur Teile der Änderungen zu committen und dadurch commits zu unterteilen. - |Ändern wir ein paar Dateien: - |""".par, - PauseKey, - Group( - interactive("vim", "hello.txt").replaceIf(debug)(sh("echo 'New line' >> hello.txt")), - interactive("vim", "folder/file.txt").replaceIf(debug)(sh("echo 'New line' >> folder/file.txt")), - gitStatus, - ), - ), - slide("Dateien editieren")( - sh("git add folder/file.txt; git status"), - ---, - s"""`git status` zeigt, welche Änderungen in den nächsten Commit aufgenommen werden. - |Solche bezeichnet man als "staged" oder "im Stagingbereich". - |Auch zu sehen: Befehle um diese zu modifizieren (`git add` / `git restore --staged`). - |`git restore ` (ohne `--staged`) verwirft Änderungen → Nicht wieder herstellbar! - |""".par, - ), - slide("Dateien editieren")( - sh("git commit -m \"Modified file in folder\""), - sh("git add hello.txt; git commit -m \"Extended greeting\""), - gitStatus, - ), - markdown("Was bisher geschah", pwd/"slides"/"02summary.md"), - chapter("Branches", "Grundlegende Befehle"), - slide("\n".par, IncludeMarkdown(pwd/"slides"/"02branches.md")), - slide("Branches")( - sh("git branch"), - ---, - prepare { %%%("git", "branch", "--show-current").trim } useIn { branch => - s"Aktuell sind wir auf dem Branch `$branch` und es gibt keine weiteren Branches\n".par - }, - PauseKey, - s"""Neuen Branch anlegen mit `git branch ` - |Alternativ: Branch anlegen und direkt auf diesen wechseln mit `git switch -c ` - |""".par, - ---, - sh("git switch -c feature/foo"), - sh("git branch"), - ), - slide("Branches")( - "Machen wir ein paar Änderungen und committen sie:\n".par, - ---, - sh("echo 'a new line' >> hello.txt") showing "echo 'a new line' >> hello.txt # appends to hello.txt", - sh("git add hello.txt"), - sh("git commit -m \"Added line to hello\""), - ---, - "Da der Branch `feature/foo` aktiv war, zeigt dieser auf den neuen Commit. `master` wird nicht geändert:".code.text, - PauseKey, - sh("git log --graph --oneline --all --decorate=short --color=always") showing "git log --graph --oneline --all", - ), - slide("Branches")( - "Jetzt wechseln wir zurück zu `master`:\n".par, - ---, - sh("git switch master"), - sh("echo 'Also a new line' >> other.txt"), - sh("git add other.txt"), - sh("git commit -m \"Added line to other\""), - gitLogGraph(), - ), - slide("Branches")( - "Im Prinzip haben wir einfach zwei Commits mit dem selben `parent` hinzugefügt:".code.text, - ---, - gitCatFile("master"), - gitCatFile("feature/foo"), - ), - slide("Merges")( - """Im Normalfall möchte man mehrere Branches irgendwann wieder zusammenführen. - |Dazu gibt es den Befehl `merge`:""".par, - ---, - sh("git merge feature/foo"), - gitLogGraph(2), - ), - slide("Merge Commits")( - "Um zwei divergierte Branches zusammenzuführen, gibt es Merge Commits mit mehreren `parent` Einträgen:".code.text, - ---, - gitCatFile("master"), - ), - slide("Merge Konflikte")( - "Was passiert, wenn wir nicht kompatible Änderungen haben? Noch mal vom Zustand vor dem Merge aus, auf `master`:".code.text, - Silent { - %%%("git", "update-ref", "refs/heads/master", "feature/foo~") - }, - ---, - sh("echo 'a different line' >> hello.txt"), - sh("git add hello.txt"), - sh("git commit -m \"Added different line to hello\""), - gitLogGraph(), - ), - slide("Der Object Store")( - """Git speichert Objekte unter `.git/objects//` - |Objekte sind komprimiert. - |""".par, - sh("tree -C .git/objects/ | head -n 11") showing "tree .git/objects/", - s"...".par, - ), -), meta=meta) - -/* When starting the presentation, you can pass a custom keymap to use. - * The `runForeground` action lets you run any command, interrupting the presentation until it exits. - * Here I bind the 'i' key to open tmux in the demo repo, for having interactive access, so I can call additional git - * commands for questions */ -presentation.start(using Keymap.default ++ Map( - Key('i') -> SlideAction.runForeground("tmux"), -)) - - -/* vim:set tw=120: */ diff --git a/examples/query.sc b/examples/query.sc new file mode 100755 index 0000000..d3734b3 --- /dev/null +++ b/examples/query.sc @@ -0,0 +1,14 @@ +#!/usr/bin/env -S scala-cli shebang +//>using dep de.qwertyuiop::copret:0.0.2 +import de.qwertyuiop.copret.* +import Terminal.* + +enterRawMode() + +val hasGraphics = + queryTerm(s"${apc}Gi=${KittyGraphicsProtocol.MaxID},s=1,v=1,a=q,t=d,f=24;AAAA${st}${csi}c") + .contains(s"${apc}Gi=${KittyGraphicsProtocol.MaxID}") + +val size = queryTerm(s"${csi}14t") + +println(s"Has graphics: $hasGraphics") diff --git a/examples/slides/01wozu.md b/examples/slides/01wozu.md new file mode 100644 index 0000000..02cf86b --- /dev/null +++ b/examples/slides/01wozu.md @@ -0,0 +1,7 @@ +- Versionierungssysteme speichern _Änderungsverlauf_ von Dateien +- Lässt einen Änderungen rückgängig machen +- Unterstützt einen bei *Zusammenführung* von mehreren Versionen + (z.B. stabile und Entwicklungsversion) +- Synchronisierung zwischen mehreren Rechnern +- Fehlersuche +- ... diff --git a/examples/slides/02branches.md b/examples/slides/02branches.md new file mode 100644 index 0000000..0e7a244 --- /dev/null +++ b/examples/slides/02branches.md @@ -0,0 +1,18 @@ +Branches sind mehrere parallele Entwicklungszweige. Wozu Branches? + +- Hauptbranch (master, main, etc.) für stabile Version nutzen +- neue Branches pro zusätzlichem Feature erstellen +- Arbeit an mehreren Branches unabhängig voneinander möglich +- Anzeigen aller Änderungen zwischen Branches möglich +- Springen zwischen Zustand verschiedener Branches + +Verschiedene Workflows möglich, je nach Projekt unterschiedlich. + +Branches sind in Git "billig": + +- Ein Branch ist ein Pointer auf einen Commit +- Normalerweise ist ein Branch als aktueller Branch ausgewählt +- Neuer Commit => aktueller Branch zeigt nun auf diesen +- Neue Branches erstellen = neue Datei mit Hash anlegen +- Branches können auch komplett lokal bleiben (im Gegensatz zu SVN) + diff --git a/examples/slides/02summary.md b/examples/slides/02summary.md new file mode 100644 index 0000000..ebd06fc --- /dev/null +++ b/examples/slides/02summary.md @@ -0,0 +1,16 @@ +- `git init [dir]`: + neues Repo anlegen +- `git status`: + Aktuellen Zustand zeigen (geänderte, ungetrackte Dateien, Stagingbereich) +- `git add `: + Datei zu Repo hinzufügen / Änderungen in Datei für Commit markieren / "stagen" +- `git restore --staged `: + Änderungen aus Staging wieder herausnehmen +- `git restore `: + Änderungen in Datei verwerfen (zurück zu Dateizustand aus letzten Commit) +- `git commit [-m message]`: + Neuen Commit mit Änderung im Stagingbereich erstellen +- `git log`: + Bisherige Commits anzeigen +- (`git cat-file`: Git-Objekte im internen Format anzeigen. Braucht man im Alltag nicht) +