Put init and build behind feature flags
This commit is contained in:
parent
90bab6c9ff
commit
073ad4ca4a
4 changed files with 66 additions and 3 deletions
|
|
@ -2,7 +2,7 @@ use std::path::PathBuf;
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use ublue_rs::{initialize_directory, setup_tera, CommandArgs, UblueArgs};
|
use ublue_rs::{self, CommandArgs, UblueArgs};
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
let args = UblueArgs::parse();
|
let args = UblueArgs::parse();
|
||||||
|
|
@ -13,7 +13,7 @@ fn main() -> Result<()> {
|
||||||
containerfile,
|
containerfile,
|
||||||
output,
|
output,
|
||||||
} => {
|
} => {
|
||||||
let (tera, context) = setup_tera(recipe, containerfile)?;
|
let (tera, context) = ublue_rs::setup_tera(recipe, containerfile)?;
|
||||||
let output_str = tera.render("Containerfile", &context)?;
|
let output_str = tera.render("Containerfile", &context)?;
|
||||||
if let Some(output) = output {
|
if let Some(output) = output {
|
||||||
std::fs::write(output, output_str)?;
|
std::fs::write(output, output_str)?;
|
||||||
|
|
@ -21,14 +21,16 @@ fn main() -> Result<()> {
|
||||||
println!("{output_str}");
|
println!("{output_str}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[cfg(init)]
|
||||||
CommandArgs::Init { dir } => {
|
CommandArgs::Init { dir } => {
|
||||||
let base_dir = match dir {
|
let base_dir = match dir {
|
||||||
Some(dir) => dir,
|
Some(dir) => dir,
|
||||||
None => PathBuf::from("./"),
|
None => PathBuf::from("./"),
|
||||||
};
|
};
|
||||||
|
|
||||||
initialize_directory(base_dir);
|
ublue_rs::initialize_directory(base_dir);
|
||||||
}
|
}
|
||||||
|
#[cfg(build)]
|
||||||
CommandArgs::Build { containerfile: _ } => {
|
CommandArgs::Build { containerfile: _ } => {
|
||||||
println!("Not yet implemented!");
|
println!("Not yet implemented!");
|
||||||
todo!();
|
todo!();
|
||||||
|
|
|
||||||
3
src/init.rs
Normal file
3
src/init.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
const GITLAB_CI_FILE: &'static str = include_str!("../templates/init/gitlab-ci.yml");
|
||||||
|
const RECIPE_FILE: &'static str = include_str!("../templates/init/recipe.yml");
|
||||||
|
const LICENSE_FILE: &'static str = include_str!("../LICENSE");
|
||||||
|
|
@ -12,6 +12,8 @@ use tera::{from_value, Context, Tera};
|
||||||
pub const DEFAULT_CONTAINERFILE: &'static str =
|
pub const DEFAULT_CONTAINERFILE: &'static str =
|
||||||
include_str!("../templates/starting_point.template");
|
include_str!("../templates/starting_point.template");
|
||||||
|
|
||||||
|
#[cfg(init)]
|
||||||
|
pub mod init;
|
||||||
pub mod recipe;
|
pub mod recipe;
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
|
|
@ -39,6 +41,7 @@ pub enum CommandArgs {
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Initialize a new Ublue Starting Point repo
|
/// Initialize a new Ublue Starting Point repo
|
||||||
|
#[cfg(init)]
|
||||||
Init {
|
Init {
|
||||||
/// The directory to extract the files into. Defaults to the current directory
|
/// The directory to extract the files into. Defaults to the current directory
|
||||||
#[arg()]
|
#[arg()]
|
||||||
|
|
@ -46,6 +49,7 @@ pub enum CommandArgs {
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Build an image from a Containerfile
|
/// Build an image from a Containerfile
|
||||||
|
#[cfg(build)]
|
||||||
Build {
|
Build {
|
||||||
#[arg()]
|
#[arg()]
|
||||||
containerfile: String,
|
containerfile: String,
|
||||||
|
|
@ -115,6 +119,7 @@ pub fn setup_tera(recipe: String, containerfile: Option<PathBuf>) -> Result<(Ter
|
||||||
Ok((tera, context))
|
Ok((tera, context))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(init)]
|
||||||
pub fn initialize_directory(base_dir: PathBuf) {
|
pub fn initialize_directory(base_dir: PathBuf) {
|
||||||
let recipe_path = base_dir.join("recipe.yml");
|
let recipe_path = base_dir.join("recipe.yml");
|
||||||
|
|
||||||
|
|
|
||||||
53
templates/init/recipe.yml
Normal file
53
templates/init/recipe.yml
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
# image will be published to ghcr.io/<user>/<name>
|
||||||
|
name: startingpoint
|
||||||
|
# description will be included in the image's metadata
|
||||||
|
description: A starting point for further customization of uBlue images. Make your own! https://ublue.it/making-your-own/
|
||||||
|
|
||||||
|
# the base image to build on top of (FROM) and the version tag to use
|
||||||
|
base-image: ghcr.io/ublue-os/silverblue-main
|
||||||
|
image-version: 38 # latest is also supported if you want new updates ASAP
|
||||||
|
|
||||||
|
# module configuration, executed in order
|
||||||
|
# you can include multiple instances of the same module
|
||||||
|
modules:
|
||||||
|
- type: files
|
||||||
|
files:
|
||||||
|
- usr: /usr # copy static configurations
|
||||||
|
#
|
||||||
|
# copies config/files/usr into your image's /usr
|
||||||
|
#
|
||||||
|
# configuration you wish to end up in /etc/ on the booted system
|
||||||
|
# should be added into /usr/etc/ as that is the proper "distro"
|
||||||
|
# config directory on ostree. Read more in the files module's README
|
||||||
|
|
||||||
|
- type: rpm-ostree
|
||||||
|
repos:
|
||||||
|
# - https://copr.fedorainfracloud.org/coprs/atim/starship/repo/fedora-%OS_VERSION%/atim-starship-fedora-%OS_VERSION%.repo
|
||||||
|
install:
|
||||||
|
# - micro
|
||||||
|
# - starship
|
||||||
|
remove:
|
||||||
|
- firefox # default firefox removed in favor of flatpak
|
||||||
|
- firefox-langpacks # langpacks needs to also be removed to prevent dependency problems
|
||||||
|
|
||||||
|
- type: bling # configure what to pull in from ublue-os/bling
|
||||||
|
install:
|
||||||
|
- justfiles # add "!include /usr/share/ublue-os/just/bling.just"
|
||||||
|
# in your custom.just (added by default) or local justfile
|
||||||
|
- nix-installer # shell shortcuts for determinate system's nix installers
|
||||||
|
- ublue-os-wallpapers
|
||||||
|
# - ublue-update # https://github.com/ublue-os/ublue-update
|
||||||
|
# - dconf-update-service # a service unit that updates the dconf db on boot
|
||||||
|
# - devpod # https://devpod.sh/ as an rpm
|
||||||
|
|
||||||
|
|
||||||
|
- type: yafti # if included, yafti and it's dependencies (pip & libadwaita)
|
||||||
|
# will be installed and set up
|
||||||
|
custom-flatpaks: # this section is optional
|
||||||
|
# - Celluloid: io.github.celluloid_player.Celluloid
|
||||||
|
# - Krita: org.kde.krita
|
||||||
|
|
||||||
|
- type: script
|
||||||
|
scripts:
|
||||||
|
# this sets up the proper policy & signing files for signed images to work
|
||||||
|
- signing.sh
|
||||||
Loading…
Add table
Add a link
Reference in a new issue