Skip to main content

ArgConfig

Struct ArgConfig 

Source
pub struct ArgConfig {
    pub uuid: Uuid,
    pub uuid_gen: bool,
    pub db_url: String,
    pub table: String,
    pub cfg: HashMap<String, String>,
    pub token: Token,
    pub pk: Option<KeyFile>,
    pub secret: Option<String>,
    pub verbose: Opt,
    pub quiet: Opt,
    pub help: Opt,
}
Expand description

App startup args:

  • db connection url: usually the first arg

    • or prefix with: ’–db ’ (optional, default postgres:// , trying to identify by prefix)
  • config table name in format: schema.table, usually the second arg trying to identify with a dot in the middle.

    • or prefix with: ’–config ’ (optional, default public.{the_appname})
  • UUID this app instance to use as a node id or config recognition. trying to auto identify a UUID formatted string.

    • or prefix with ’–uuid ’
  • token (db pwd) script name usually the third arg (required feature ‘token’)

    • or prefix with ’–token ’
  • token live in minutes, usually the forth arg (required feature ‘token’)

    • or prefix with ’–ttl ’
  • (Private) Key text file name to use with RSA OR AES encryption (required feature ‘rsa’)

    • or prefix with ’–key ’
  • cipher secret for AES taken from env [SECRET] (more secure) OR cml –secret (not recommended)
    Also: compile with keep_env_secret feature to not remove from env

Alternative configuration:

  • file name, usually the first arg
    • or prefix with ’–file ’

File format:

  • db: OR db=
  • config: OR config=
  • uuid: OR uuid=
  • token: OR token=
  • ttl: OR ttl=
  • pk: OR pk=

params passed in cmd line override params loaded from file & env.

env:

  • PGPASSWORD, in case of postgres db url, use to connect to the DB
  • PASSPHRASE, in case of RSA private key required a passphrase
  • SECRET

Fields§

§uuid: Uuid

instance ID

§uuid_gen: bool

indicate the instance uuid was set or autogenerated on (every) start

§db_url: String

database connection string

§table: String

Format: schema.table

§cfg: HashMap<String, String>

key=value loaded from file if present

§token: Token

token (i.e. db pwd) script name usually the third arg (required feature ‘token’)

§pk: Option<KeyFile>

RSA private key file name to use with RSA OR AES encryption (required feature ‘rsa’)

§secret: Option<String>

cipher secret for AES taken from env [SECRET] OR cml –secret use keep_env_secret feature to not remove from env

§verbose: Opt

-v / –verbose / –debug

§quiet: Opt

-q / –quiet / –batch

§help: Opt

-h / –help / –info

Implementations§

Source§

impl ArgConfig

Source

pub fn from_args() -> Result<ArgConfig, String>

backward compatibility but not correct info! Use: ArgConfig::from_args2(env!(“CARGO_PKG_NAME”), env!(“CARGO_PKG_VERSION”))

Source

pub fn from_args2( app_name: &str, app_version: &str, ) -> Result<ArgConfig, String>

app_name / app_version should be the caller’s crate identity, e.g. ArgConfig::from_args(env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")). They can’t default to marg’s own env!() here since that macro resolves at compile time against whichever crate the source lives in (marg itself), not against whatever binary ends up calling this function.

Source

pub fn db_url(&self) -> String

append with password if $PWD present in ‘db’

Trait Implementations§

Source§

impl Clone for ArgConfig

Source§

fn clone(&self) -> ArgConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ArgConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.