xc : eXeCute project tasks from a readme file

xc - eXeCute project tasks from a readme file

Installation

go install github.com/joe-davidson1802/xc/cmd/xc@latest

Tasks

get: get dependencies of the project

go get ./...

Tests

test: test project

go test ./...

testshort: run short tests

go test ./... -short

More docs

Example docs

Comments
  • Support for mutli-line tasks

    Support for mutli-line tasks

    I wanted to create a multi-line task, but it's outputting a single line:

    Is that expected?

    ### serve-local-tests
    
    Run a local Gemini server.
    
    ```sh
    echo add '127.0.0.1       a-h.gemini' to your /etc/hosts file
    openssl ecparam -genkey -name secp384r1 -out server.key
    openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650 -subj "/C=/ST=/L=/O=/OU=/CN=a-h.gemini"
    go run ./cmd/main.go serve --domain=a-h.gemini --certFile=server.crt --keyFile=server.key --path=./tests
    ```
    
  • Alternative markdown syntax to define `Tasks section`

    Alternative markdown syntax to define `Tasks section`

    Is your feature request related to a problem? Please describe. Referring to this: https://www.markdownguide.org/basic-syntax/#alternate-syntax

    When using:

    Tasks
    ---
    

    Should also be allowed to define the Tasks section as it is an allowed alternative syntax to the H2 header. Currently xc doesn't detect it

    Describe the solution you'd like XC cli works with the alternative syntax

    Describe alternatives you've considered An alternative is to just keep as-is, but document clearly that it's not supported

  • Feature request: Env: support backticks?

    Feature request: Env: support backticks?

    Not sure if this is just my vim config, but the underscores aren't liked by Markdown.

    This would usually lead me to putting them in backtick fences, but not sure if xc supports this.

    Screenshot 2021-10-28 at 10 17 09
  • Support for multiple commands in subdirectories

    Support for multiple commands in subdirectories

    I'm trying to build something that requires changing directory.

    My first attempt didn't work:

    ### build
    
    Builds the project.
    
    ```sh
    cd api && go build ./...
    cd cdk && go build ./...
    ```
    

    So I broke it down into two steps:

    ### build-api
    
    Directory: ./api
    
    Builds the API.
    
    ```sh
    go build ./...
    ```
    
    ### build-cdk
    
    Directory: ./cdk
    
    Builds the CDK project.
    
    ```sh
    go build ./...
    ```
    
    ### build
    
    Requires: build-api, build-cdk
    
    Builds the project.
    

    However, this produces the error:

    missing command: near ### run-dynamodb-local
    

    If I put in an empty command block, then I get:

    .: 
    fork/exec : no such file or directory
    

    Suggest allowing empty commands which have "Requires" sections, or identifying where a shell expression is being used via backtick denotion of sh and using shell execute instead of locating the binary on the path.

  • Run tasks defined in a parent directory.

    Run tasks defined in a parent directory.

    Is your feature request related to a problem? Please describe. When in a sub-directory of a project that has an xc file defined at the root, you can't run tasks defined said xc file.

    Describe the solution you'd like When running xc in a folder that does not contain a README.md with tasks definied, search in parent directories.

    Describe alternatives you've considered An alternative is to just keep as-is, to prevent (potentially) unexpected behaviour.

  • feature request / idea: interactive menu

    feature request / idea: interactive menu

    From Vim, it would be great if you could hit, leader t or something, to list xc tasks and run one.

    So you'd press leader t, then 1, 2 etc. to run that task, or escape to quit.

    :map <leader>t :!xc build<cr>
    

    Unfortunately, interactive commands produce a mess of escape codes in Vim.

    Screenshot 2022-01-29 at 14 07 39

    However, something like https://github.com/christoomey/vim-run-interactive would need to be used to provide the interactivity of the picklist.

Related tags
Get a binary file directly from the Golang source project.

This project aims to provide a way to get binary file from a Golang project easily. Users don't need to have a Golang environment. Server Usage: docke

Nov 18, 2021
go-fastdfs 是一个简单的分布式文件系统(私有云存储),具有无中心、高性能,高可靠,免维护等优点,支持断点续传,分块上传,小文件合并,自动同步,自动修复。Go-fastdfs is a simple distributed file system (private cloud storage), with no center, high performance, high reliability, maintenance free and other advantages, support breakpoint continuation, block upload, small file merge, automatic synchronization, automatic repair.(similar fastdfs).
go-fastdfs 是一个简单的分布式文件系统(私有云存储),具有无中心、高性能,高可靠,免维护等优点,支持断点续传,分块上传,小文件合并,自动同步,自动修复。Go-fastdfs is a simple distributed file system (private cloud storage), with no center, high performance, high reliability, maintenance free and other advantages, support breakpoint continuation, block upload, small file merge, automatic synchronization, automatic repair.(similar fastdfs).

中文 English 愿景:为用户提供最简单、可靠、高效的分布式文件系统。 go-fastdfs是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。 大家担心的是这么简单的文件系统,靠不靠谱,可不

Jan 8, 2023
Abstract File Storage

afs - abstract file storage Please refer to CHANGELOG.md if you encounter breaking changes. Motivation Introduction Usage Matchers Content modifiers S

Dec 30, 2022
a tool for handling file uploads simple

baraka a tool for handling file uploads for http servers makes it easier to make operations with files from the http request. Contents Install Simple

Nov 30, 2022
Bigfile -- a file transfer system that supports http, rpc and ftp protocol https://bigfile.site
Bigfile -- a file transfer system that supports http, rpc and ftp protocol   https://bigfile.site

Bigfile ———— a file transfer system that supports http, rpc and ftp protocol 简体中文 ∙ English Bigfile is a file transfer system, supports http, ftp and

Dec 31, 2022
Go file operations library chasing GNU APIs.
Go file operations library chasing GNU APIs.

flop flop aims to make copying files easier in Go, and is modeled after GNU cp. Most administrators and engineers interact with GNU utilities every da

Nov 10, 2022
Read csv file from go using tags

go-csv-tag Read csv file from Go using tags The project is in maintenance mode. It is kept compatible with changes in the Go ecosystem but no new feat

Nov 16, 2022
File system event notification library on steroids.

notify Filesystem event notification library on steroids. (under active development) Documentation godoc.org/github.com/rjeczalik/notify Installation

Dec 31, 2022
Pluggable, extensible virtual file system for Go

vfs Package vfs provides a pluggable, extensible, and opinionated set of file system functionality for Go across a number of file system types such as

Jan 3, 2023
An epoll(7)-based file-descriptor multiplexer.

poller Package poller is a file-descriptor multiplexer. Download: go get github.com/npat-efault/poller Package poller is a file-descriptor multiplexer

Sep 25, 2022
QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file
QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file

QueryCSV enable you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to CSV file

Dec 22, 2021
Goful is a CUI file manager written in Go.
Goful is a CUI file manager written in Go.

Goful Goful is a CUI file manager written in Go. Works on cross-platform such as gnome-terminal and cmd.exe. Displays multiple windows and workspaces.

Dec 28, 2022
Read a tar file contents using go1.16 io/fs abstraction
Read a tar file contents using go1.16 io/fs abstraction

go-tarfs Read a tar file contents using go1.16 io/fs abstraction Usage ⚠️ go-tarfs needs go>=1.16 Install: go get github.com/nlepage/go-tarfs Use: pac

Dec 1, 2022
Open Source Continuous File Synchronization
Open Source Continuous File Synchronization

Goals Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers. We strive to fulfill the goals belo

Jan 9, 2023
Cross-platform file system notifications for Go.

File system notifications for Go fsnotify utilizes golang.org/x/sys rather than syscall from the standard library. Ensure you have the latest version

Jan 1, 2023
The best HTTP Static File Server, write with golang+vue
The best HTTP Static File Server, write with golang+vue

gohttpserver Goal: Make the best HTTP File Server. Features: Human-friendly UI, file uploading support, direct QR-code generation for Apple & Android

Dec 30, 2022
Dragonfly is an intelligent P2P based image and file distribution system.
Dragonfly is an intelligent P2P based image and file distribution system.

Dragonfly Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in o

Jan 9, 2023
Fast, dependency-free, small Go package to infer the binary file type based on the magic numbers signature

filetype Small and dependency free Go package to infer file and MIME type checking the magic numbers signature. For SVG file type checking, see go-is-

Jan 3, 2023
📂 Web File Browser
📂 Web File Browser

filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files.

Jan 9, 2023